merge generic_func_idea from git

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@433 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
IoIxD
2025-10-20 21:55:30 +00:00
parent 65f5942f9d
commit ebc674f403
29 changed files with 499 additions and 234 deletions

View File

@@ -146,25 +146,7 @@ static void click(MwWidget handle) {
}
}
MwClassRec MwSubMenuClassRec = {
create, /* create */
destroy, /* destroy */
draw, /* draw */
click, /* click */
NULL, /* parent_resize */
NULL, /* prop_change */
NULL, /* mouse_move */
MwForceRender2, /* mouse_up */
MwForceRender2, /* mouse_down */
NULL, /* key */
NULL,
NULL,
NULL,
NULL,
NULL};
MwClass MwSubMenuClass = &MwSubMenuClassRec;
void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) {
static void mwSubMenuAppearImpl(MwWidget handle, MwMenu menu, MwPoint* point) {
int i, w = 0, h = 0;
#ifdef UNIX
XSetWindowAttributes xswa;
@@ -204,3 +186,31 @@ void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) {
MwNheight, h,
NULL);
}
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
(void)out;
if(strcmp(name, "mwSubMenuAppear") == 0) {
MwMenu menu = va_arg(va, MwMenu);
MwPoint* point = va_arg(va, MwPoint*);
mwSubMenuAppearImpl(handle, menu, point);
}
}
MwClassRec MwSubMenuClassRec = {
create, /* create */
destroy, /* destroy */
draw, /* draw */
click, /* click */
NULL, /* parent_resize */
NULL, /* prop_change */
NULL, /* mouse_move */
MwForceRender2, /* mouse_up */
MwForceRender2, /* mouse_down */
NULL, /* key */
func_handler, /* custom */
NULL,
NULL,
NULL,
NULL};
MwClass MwSubMenuClass = &MwSubMenuClassRec;