mirror of https://github.com/adamdruppe/arsd.git
Merge pull request #490 from naydef/master
Make buttons disableable for custom drawn buttons
This commit is contained in:
commit
a36955032d
19
minigui.d
19
minigui.d
|
@ -883,6 +883,7 @@ class Widget : ReflectableProperties {
|
||||||
EnableWindow(hwnd, yes);
|
EnableWindow(hwnd, yes);
|
||||||
}
|
}
|
||||||
setDynamicState(DynamicState.disabled, yes);
|
setDynamicState(DynamicState.disabled, yes);
|
||||||
|
redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
private string disabledReason_;
|
private string disabledReason_;
|
||||||
|
@ -13019,6 +13020,8 @@ class MouseActivatedWidget : Widget {
|
||||||
super.defaultEventHandler_keyup(ev);
|
super.defaultEventHandler_keyup(ev);
|
||||||
if(!(dynamicState & DynamicState.depressed))
|
if(!(dynamicState & DynamicState.depressed))
|
||||||
return;
|
return;
|
||||||
|
if(!enabled)
|
||||||
|
return;
|
||||||
setDynamicState(DynamicState.depressed, false);
|
setDynamicState(DynamicState.depressed, false);
|
||||||
setDynamicState(DynamicState.hover, false);
|
setDynamicState(DynamicState.hover, false);
|
||||||
this.redraw();
|
this.redraw();
|
||||||
|
@ -13028,7 +13031,7 @@ class MouseActivatedWidget : Widget {
|
||||||
}
|
}
|
||||||
override void defaultEventHandler_click(ClickEvent ev) {
|
override void defaultEventHandler_click(ClickEvent ev) {
|
||||||
super.defaultEventHandler_click(ev);
|
super.defaultEventHandler_click(ev);
|
||||||
if(ev.button == MouseButton.left) {
|
if(ev.button == MouseButton.left && enabled) {
|
||||||
auto event = new Event(EventType.triggered, this);
|
auto event = new Event(EventType.triggered, this);
|
||||||
event.sendDirectly();
|
event.sendDirectly();
|
||||||
}
|
}
|
||||||
|
@ -13551,18 +13554,25 @@ class Button : MouseActivatedWidget {
|
||||||
auto cs = widget.getComputedStyle(); // FIXME: this is potentially recursive
|
auto cs = widget.getComputedStyle(); // FIXME: this is potentially recursive
|
||||||
|
|
||||||
auto pressed = DynamicState.depressed | DynamicState.hover;
|
auto pressed = DynamicState.depressed | DynamicState.hover;
|
||||||
if((widget.dynamicState & pressed) == pressed) {
|
if((widget.dynamicState & pressed) == pressed && widget.enabled) {
|
||||||
return WidgetBackground(cs.depressedButtonColor());
|
return WidgetBackground(cs.depressedButtonColor());
|
||||||
} else if(widget.dynamicState & DynamicState.hover) {
|
} else if(widget.dynamicState & DynamicState.hover && widget.enabled) {
|
||||||
return WidgetBackground(cs.hoveringColor());
|
return WidgetBackground(cs.hoveringColor());
|
||||||
} else {
|
} else {
|
||||||
return WidgetBackground(cs.buttonColor());
|
return WidgetBackground(cs.buttonColor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override Color foregroundColor() {
|
||||||
|
auto clr = super.foregroundColor();
|
||||||
|
if(widget.enabled) return clr;
|
||||||
|
|
||||||
|
return Color(clr.r, clr.g, clr.b, clr.a / 2);
|
||||||
|
}
|
||||||
|
|
||||||
override FrameStyle borderStyle() {
|
override FrameStyle borderStyle() {
|
||||||
auto pressed = DynamicState.depressed | DynamicState.hover;
|
auto pressed = DynamicState.depressed | DynamicState.hover;
|
||||||
if((widget.dynamicState & pressed) == pressed) {
|
if((widget.dynamicState & pressed) == pressed && widget.enabled) {
|
||||||
return FrameStyle.sunk;
|
return FrameStyle.sunk;
|
||||||
} else {
|
} else {
|
||||||
return FrameStyle.risen;
|
return FrameStyle.risen;
|
||||||
|
@ -13587,6 +13597,7 @@ class Button : MouseActivatedWidget {
|
||||||
Point pos = bounds.upperLeft;
|
Point pos = bounds.upperLeft;
|
||||||
if(this.height == 16)
|
if(this.height == 16)
|
||||||
pos.y -= 2; // total hack omg
|
pos.y -= 2; // total hack omg
|
||||||
|
|
||||||
painter.drawText(pos, label, bounds.lowerRight, alignment | TextAlignment.VerticalCenter);
|
painter.drawText(pos, label, bounds.lowerRight, alignment | TextAlignment.VerticalCenter);
|
||||||
}
|
}
|
||||||
return bounds;
|
return bounds;
|
||||||
|
|
Loading…
Reference in New Issue