On Monday, 30 December 2019 at 23:32:37 UTC, ShadoLight wrote:
Hi,
I suspect I'm missing something obvious, but ResizerWidget is
not working for me on Windows - it shows the 'dragging'-cursor
when hovering the mouse on the ResizerWidget, but dragging with
the left mouse button does nothing.
I ran into the same issue. The resizeEvent callback is not
implemented yet. Below is my custom implementation.
/** A completed resizer widget.
As of 2016-12-30, the ResizerWidget does not work out of the
box.
This class implement the missing piece.
*/
class Resizer : ResizerWidget {
/// Default initialization.
this () {
super ();
initResizeCb ();
}
/// Create with ID parameter.
this (string ID, Orientation orient = Orientation.Vertical) {
super (ID, orient);
initResizeCb ();
}
/// Initialize the resize on drag behaviour callback.
protected void initResizeCb () {
this.resizeEvent
= (ResizerWidget source,
ResizerEventType event,
int currentPosition)
{
if (event != ResizerEventType.Dragging) {
return;
}
if (_orientation == Orientation.Horizontal) {
auto delta = _previousWidget.width -
currentPosition;
auto pw = max (0, _previousWidget.width -
delta);
auto mw = max (0, _nextWidget.width +
delta);
_previousWidget
.minWidth (pw)
.maxWidth (pw);
_nextWidget
.minWidth (mw)
.maxWidth (mw);
}
else if (_orientation == Orientation.Vertical) {
auto delta = _previousWidget.height -
currentPosition;
auto pw = max (0, _previousWidget.height -
delta);
auto mw = max (0, _nextWidget.height +
delta);
_previousWidget
.minHeight (pw)
.maxHeight (pw);
_nextWidget
.minHeight (mw)
.maxHeight (mw);
}
parent.requestLayout ();
};
}
}