wmgen

Генератор WINGs апликација
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 4077732b820f482319469f613ee2b56eb35aa71c
родитељ 1f6afd0fbad25d3b8be5876e34eb01159fcc11b2
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Mon, 11 Dec 2023 20:46:16 +0100

Fix menu items having different callback type than window close callback

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mapp.h | 4++++
Mmain.c | 32++++++++++++++++++++++++++++++--
Mmenu.c | 10+++++-----
измењених датотека: 3, додавања: 39(+), брисања: 7(-)

diff --git a/app.h b/app.h @@ -35,12 +35,16 @@ void create_main_window(struct WMNewApp* wma); void debug_print_state(struct WMNewApp* wma); int error(const int code, const char* msg, ...); void exit_action(WMWidget* self, void* data); +void exit_menu_action(void* data, int code, Time timestamp); void handle_keypress(XEvent* event, void* data); void info_panel_action(WMWidget* self, void* data); +void info_panel_menu_action(void* data, int code, Time timestamp); void init_state(struct State* state); void not_implemented(WMWidget* self, void* data); void open_action(WMWidget* self, void* data); +void open_menu_action(void* data, int code, Time timestamp); void save_action(WMWidget* self, void* data); +void save_menu_action(void* data, int code, Time timestamp); void set_mainwin_title(struct WMNewApp* wma); void usage(const char* arg0); void WMLog(const struct WMNewApp* wma, const char* msg, ...); diff --git a/main.c b/main.c @@ -134,6 +134,13 @@ exit_action(WMWidget* self, void* data) } void +exit_menu_action(void* data, int code, Time timestamp) +{ + struct WMNewApp* wma = (struct WMNewApp*)data; + exit_action(wma->mainwin, wma); +} + +void handle_keypress(XEvent* event, void* data) { struct WMNewApp* wma = (struct WMNewApp*)data; @@ -191,6 +198,13 @@ info_panel_action(WMWidget* self, void* data) } void +info_panel_menu_action(void* data, int code, Time timestamp) +{ + struct WMNewApp* wma = (struct WMNewApp*)data; + info_panel_action(wma->mainwin, wma); +} + +void init_state(struct State* state) { state->dirty = 0; @@ -210,7 +224,14 @@ open_action(WMWidget* self, void* data) { struct WMNewApp* wma = (struct WMNewApp*)data; WMLog(wma, "open_action called\n"); - not_implemented(self, data); + not_implemented(self, wma); +} + +void +open_menu_action(void* data, int code, Time timestamp) +{ + struct WMNewApp* wma = (struct WMNewApp*)data; + open_action(wma->mainwin, wma); } void @@ -218,7 +239,14 @@ save_action(WMWidget* self, void* data) { struct WMNewApp* wma = (struct WMNewApp*)data; WMLog(wma, "save_action called\n"); - not_implemented(self, data); + not_implemented(self, wma); +} + +void +save_menu_action(void* data, int code, Time timestamp) +{ + struct WMNewApp* wma = (struct WMNewApp*)data; + save_action(wma->mainwin, wma); } void diff --git a/menu.c b/menu.c @@ -10,14 +10,14 @@ create_main_menu(struct WMNewApp* wma) submenu = WMMenuCreate(wma->app, "Info"); WMMenuAddSubmenu(wma->main_menu, "Info", submenu); - WMMenuAddItem(submenu, "Info Panel...", (WMMenuAction)info_panel_action, - wma->app, NULL, "f1"); + WMMenuAddItem(submenu, "Info Panel...", info_panel_menu_action, + wma, NULL, "f1"); - WMMenuAddItem(wma->main_menu, "Open...", (WMMenuAction)open_action, NULL, + WMMenuAddItem(wma->main_menu, "Open...", open_menu_action, wma, NULL, "^o"); - WMMenuAddItem(wma->main_menu, "Save...", (WMMenuAction)save_action, NULL, + WMMenuAddItem(wma->main_menu, "Save...", save_menu_action, wma, NULL, "^s"); - WMMenuAddItem(wma->main_menu, "Quit", (WMMenuAction)exit_action, NULL, + WMMenuAddItem(wma->main_menu, "Quit", exit_menu_action, wma, NULL, "^q"); WMAppSetMainMenu(wma->app, wma->main_menu);