mirror of https://github.com/buggins/dlangui.git
dock window resizers, part 2
This commit is contained in:
parent
a820afd995
commit
7f27b57063
|
@ -48,7 +48,12 @@ class DockHost : WidgetGroupDefaultDrawing {
|
||||||
addChild(dockWin);
|
addChild(dockWin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onResize(ResizerWidget source, int delta) {
|
protected int _resizeStartPos;
|
||||||
|
void onResize(ResizerWidget source, ResizerEventType event, int newPosition) {
|
||||||
|
if (event == ResizerEventType.StartDragging) {
|
||||||
|
_resizeStartPos = newPosition;
|
||||||
|
} else if (event == ResizerEventType.Dragging) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this() {
|
this() {
|
||||||
|
|
|
@ -271,8 +271,14 @@ class LayoutItems {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum ResizerEventType : int {
|
||||||
|
StartDragging,
|
||||||
|
Dragging,
|
||||||
|
EndDragging
|
||||||
|
}
|
||||||
|
|
||||||
interface ResizeHandler {
|
interface ResizeHandler {
|
||||||
void onResize(ResizerWidget source, int delta);
|
void onResize(ResizerWidget source, ResizerEventType event, int currentPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -319,7 +325,6 @@ class ResizerWidget : Widget {
|
||||||
protected void updateProps() {
|
protected void updateProps() {
|
||||||
_previousWidget = null;
|
_previousWidget = null;
|
||||||
_nextWidget = null;
|
_nextWidget = null;
|
||||||
_orientation = Orientation.Vertical;
|
|
||||||
LinearLayout parentLayout = cast(LinearLayout)_parent;
|
LinearLayout parentLayout = cast(LinearLayout)_parent;
|
||||||
if (parentLayout) {
|
if (parentLayout) {
|
||||||
_orientation = parentLayout.orientation;
|
_orientation = parentLayout.orientation;
|
||||||
|
@ -400,7 +405,9 @@ class ResizerWidget : Widget {
|
||||||
_delta = _minDragDelta;
|
_delta = _minDragDelta;
|
||||||
if (_delta > _maxDragDelta)
|
if (_delta > _maxDragDelta)
|
||||||
_delta = _maxDragDelta;
|
_delta = _maxDragDelta;
|
||||||
}
|
} else if (resizeListener.assigned) {
|
||||||
|
resizeListener(this, ResizerEventType.StartDragging, Orientation.Vertical ? _dragStart.y : _dragStart.x);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (event.action == MouseAction.FocusOut && _dragging) {
|
if (event.action == MouseAction.FocusOut && _dragging) {
|
||||||
|
@ -408,6 +415,10 @@ 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) {
|
||||||
|
resizeListener(this, ResizerEventType.Dragging, Orientation.Vertical ? event.y : event.x);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
_delta = _dragStartPosition + delta;
|
_delta = _dragStartPosition + delta;
|
||||||
if (_delta < _minDragDelta)
|
if (_delta < _minDragDelta)
|
||||||
_delta = _minDragDelta;
|
_delta = _minDragDelta;
|
||||||
|
@ -453,6 +464,9 @@ class ResizerWidget : Widget {
|
||||||
if (_dragging) {
|
if (_dragging) {
|
||||||
//sendScrollEvent(ScrollAction.SliderReleased, _position);
|
//sendScrollEvent(ScrollAction.SliderReleased, _position);
|
||||||
_dragging = false;
|
_dragging = false;
|
||||||
|
if (resizeListener.assigned) {
|
||||||
|
resizeListener(this, ResizerEventType.EndDragging, Orientation.Vertical ? event.y : event.x);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -470,8 +484,13 @@ class ResizerWidget : Widget {
|
||||||
}
|
}
|
||||||
if (event.action == MouseAction.Cancel) {
|
if (event.action == MouseAction.Cancel) {
|
||||||
Log.d("SliderButton.onMouseEvent event.action == MouseAction.Cancel");
|
Log.d("SliderButton.onMouseEvent event.action == MouseAction.Cancel");
|
||||||
resetState(State.Pressed);
|
if (_dragging) {
|
||||||
_dragging = false;
|
resetState(State.Pressed);
|
||||||
|
_dragging = false;
|
||||||
|
if (resizeListener.assigned) {
|
||||||
|
resizeListener(this, ResizerEventType.EndDragging, Orientation.Vertical ? event.y : event.x);
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue