mirror of https://github.com/buggins/dlangui.git
resizing in docks is working
This commit is contained in:
parent
b76b47833a
commit
2009575542
|
@ -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() {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue