From 2009575542740fa42b3f819034e8518d6a48a9c9 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 27 Jan 2015 11:44:39 +0300 Subject: [PATCH] resizing in docks is working --- src/dlangui/widgets/docks.d | 18 +++++++++++++----- src/dlangui/widgets/layouts.d | 8 ++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/dlangui/widgets/docks.d b/src/dlangui/widgets/docks.d index 991634f8..547303b3 100644 --- a/src/dlangui/widgets/docks.d +++ b/src/dlangui/widgets/docks.d @@ -129,8 +129,19 @@ struct DockSpace { _rc = _resizerRect = _dockRect = Rect(0, 0, 0, 0); // empty rect } } + protected int _dragStartSpace; + protected int _dragStartPosition; protected void onResize(ResizerWidget source, ResizerEventType event, int newPosition) { - _host.onResize(source, event, newPosition); + if (!_space) + return; + if (event == ResizerEventType.StartDragging) { + _dragStartSpace = _space; + _dragStartPosition = newPosition; + } else if (event == ResizerEventType.Dragging) { + int dir = _alignment == DockAlignment.Right || _alignment == DockAlignment.Bottom ? -1 : 1; + _space = _dragStartSpace + dir * (newPosition - _dragStartPosition); + _host.onResize(source, event, newPosition); + } } protected void layoutDocked() { Rect rc = _rc; //_dockRect; @@ -180,10 +191,7 @@ class DockHost : WidgetGroupDefaultDrawing { protected int _resizeStartPos; void onResize(ResizerWidget source, ResizerEventType event, int newPosition) { - if (event == ResizerEventType.StartDragging) { - _resizeStartPos = newPosition; - } else if (event == ResizerEventType.Dragging) { - } + layout(_pos); } this() { diff --git a/src/dlangui/widgets/layouts.d b/src/dlangui/widgets/layouts.d index 3d2ce091..82cbecab 100644 --- a/src/dlangui/widgets/layouts.d +++ b/src/dlangui/widgets/layouts.d @@ -406,7 +406,7 @@ class ResizerWidget : Widget { if (_delta > _maxDragDelta) _delta = _maxDragDelta; } else if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.StartDragging, Orientation.Vertical ? _dragStart.y : _dragStart.x); + resizeListener(this, ResizerEventType.StartDragging, _orientation == Orientation.Vertical ? event.y : event.x); } return true; } @@ -416,7 +416,7 @@ class ResizerWidget : Widget { if (event.action == MouseAction.Move && _dragging) { int delta = _orientation == Orientation.Vertical ? event.y - _dragStart.y : event.x - _dragStart.x; if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.Dragging, Orientation.Vertical ? event.y : event.x); + resizeListener(this, ResizerEventType.Dragging, _orientation == Orientation.Vertical ? event.y : event.x); return true; } _delta = _dragStartPosition + delta; @@ -465,7 +465,7 @@ class ResizerWidget : Widget { //sendScrollEvent(ScrollAction.SliderReleased, _position); _dragging = false; if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.EndDragging, Orientation.Vertical ? event.y : event.x); + resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); } } return true; @@ -488,7 +488,7 @@ class ResizerWidget : Widget { resetState(State.Pressed); _dragging = false; if (resizeListener.assigned) { - resizeListener(this, ResizerEventType.EndDragging, Orientation.Vertical ? event.y : event.x); + resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x); } } return true;