mirror of https://github.com/adamdruppe/arsd.git
fix checkbox events on windows
This commit is contained in:
parent
eb6f75e711
commit
dbe4eb45d5
52
minigui.d
52
minigui.d
|
@ -1,5 +1,8 @@
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb775498%28v=vs.85%29.aspx
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb775498%28v=vs.85%29.aspx
|
||||||
|
|
||||||
|
// FIXME: slider widget.
|
||||||
|
// FIXME: number widget
|
||||||
|
|
||||||
// osx style menu search.
|
// osx style menu search.
|
||||||
|
|
||||||
// would be cool for a scroll bar to have marking capabilities
|
// would be cool for a scroll bar to have marking capabilities
|
||||||
|
@ -1527,6 +1530,35 @@ class Widget {
|
||||||
SimpleWindow simpleWindowWrappingHwnd;
|
SimpleWindow simpleWindowWrappingHwnd;
|
||||||
|
|
||||||
int hookedWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
int hookedWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
|
||||||
|
switch(iMessage) {
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch(HIWORD(wParam)) {
|
||||||
|
case 0:
|
||||||
|
// case BN_CLICKED: aka 0
|
||||||
|
case 1:
|
||||||
|
auto idm = LOWORD(wParam);
|
||||||
|
if(auto item = idm in Action.mapping) {
|
||||||
|
foreach(handler; (*item).triggered)
|
||||||
|
handler();
|
||||||
|
/*
|
||||||
|
auto event = new Event("triggered", *item);
|
||||||
|
event.button = idm;
|
||||||
|
event.dispatch();
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
auto handle = cast(HWND) lParam;
|
||||||
|
if(auto widgetp = handle in Widget.nativeMapping) {
|
||||||
|
(*widgetp).handleWmCommand(HIWORD(wParam), LOWORD(wParam));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4359,9 +4391,8 @@ debug private class DevToolWindow : Window {
|
||||||
}
|
}
|
||||||
parentList.content = list;
|
parentList.content = list;
|
||||||
|
|
||||||
import std.conv;
|
clickX.label = toInternal!string(ev.clientX);
|
||||||
clickX.label = to!string(ev.clientX);
|
clickY.label = toInternal!string(ev.clientY);
|
||||||
clickY.label = to!string(ev.clientY);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5570,6 +5601,11 @@ class MouseActivatedWidget : Widget {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void handleWmCommand(ushort cmd, ushort id) {
|
||||||
|
auto event = new Event("triggered", this);
|
||||||
|
event.dispatch();
|
||||||
|
}
|
||||||
|
|
||||||
this(Widget parent = null) {
|
this(Widget parent = null) {
|
||||||
super(parent);
|
super(parent);
|
||||||
}
|
}
|
||||||
|
@ -5680,7 +5716,7 @@ class Checkbox : MouseActivatedWidget {
|
||||||
super(parent);
|
super(parent);
|
||||||
this.label = label;
|
this.label = label;
|
||||||
version(win32_widgets) {
|
version(win32_widgets) {
|
||||||
createWin32Window(this, "button"w, label, BS_AUTOCHECKBOX);
|
createWin32Window(this, "button"w, label, BS_CHECKBOX);
|
||||||
} else version(custom_widgets) {
|
} else version(custom_widgets) {
|
||||||
|
|
||||||
} else static assert(0);
|
} else static assert(0);
|
||||||
|
@ -7427,10 +7463,10 @@ class ObjectInspectionWindowImpl(T) : ObjectInspectionWindow {
|
||||||
alias type = typeof(member);
|
alias type = typeof(member);
|
||||||
static if(is(type == int)) {
|
static if(is(type == int)) {
|
||||||
auto le = new LabeledLineEdit(memberName ~ ": ", this);
|
auto le = new LabeledLineEdit(memberName ~ ": ", this);
|
||||||
le.addEventListener("char", (Event ev) {
|
//le.addEventListener("char", (Event ev) {
|
||||||
if((ev.character < '0' || ev.character > '9') && ev.character != '-')
|
//if((ev.character < '0' || ev.character > '9') && ev.character != '-')
|
||||||
ev.preventDefault();
|
//ev.preventDefault();
|
||||||
});
|
//});
|
||||||
le.addEventListener(EventType.change, (Event ev) {
|
le.addEventListener(EventType.change, (Event ev) {
|
||||||
__traits(getMember, t, memberName) = cast(type) stringToLong(ev.stringValue);
|
__traits(getMember, t, memberName) = cast(type) stringToLong(ev.stringValue);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue