resizing in docks is working

This commit is contained in:
Vadim Lopatin 2015-01-27 11:44:39 +03:00
parent b76b47833a
commit 2009575542
2 changed files with 17 additions and 9 deletions

View File

@ -129,9 +129,20 @@ struct DockSpace {
_rc = _resizerRect = _dockRect = Rect(0, 0, 0, 0); // empty rect _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) { protected void onResize(ResizerWidget source, ResizerEventType event, int 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); _host.onResize(source, event, newPosition);
} }
}
protected void layoutDocked() { protected void layoutDocked() {
Rect rc = _rc; //_dockRect; Rect rc = _rc; //_dockRect;
int len = cast(int)_docks.length; int len = cast(int)_docks.length;
@ -180,10 +191,7 @@ class DockHost : WidgetGroupDefaultDrawing {
protected int _resizeStartPos; protected int _resizeStartPos;
void onResize(ResizerWidget source, ResizerEventType event, int newPosition) { void onResize(ResizerWidget source, ResizerEventType event, int newPosition) {
if (event == ResizerEventType.StartDragging) { layout(_pos);
_resizeStartPos = newPosition;
} else if (event == ResizerEventType.Dragging) {
}
} }
this() { this() {

View File

@ -406,7 +406,7 @@ class ResizerWidget : Widget {
if (_delta > _maxDragDelta) if (_delta > _maxDragDelta)
_delta = _maxDragDelta; _delta = _maxDragDelta;
} else if (resizeListener.assigned) { } 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; return true;
} }
@ -416,7 +416,7 @@ class ResizerWidget : Widget {
if (event.action == MouseAction.Move && _dragging) { if (event.action == MouseAction.Move && _dragging) {
int delta = _orientation == Orientation.Vertical ? event.y - _dragStart.y : event.x - _dragStart.x; int delta = _orientation == Orientation.Vertical ? event.y - _dragStart.y : event.x - _dragStart.x;
if (resizeListener.assigned) { 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; return true;
} }
_delta = _dragStartPosition + delta; _delta = _dragStartPosition + delta;
@ -465,7 +465,7 @@ class ResizerWidget : Widget {
//sendScrollEvent(ScrollAction.SliderReleased, _position); //sendScrollEvent(ScrollAction.SliderReleased, _position);
_dragging = false; _dragging = false;
if (resizeListener.assigned) { 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; return true;
@ -488,7 +488,7 @@ class ResizerWidget : Widget {
resetState(State.Pressed); resetState(State.Pressed);
_dragging = false; _dragging = false;
if (resizeListener.assigned) { 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; return true;