X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2Flibaxwin3.so_src%2Fr_menu.c;h=9894abd05e6cf2a30d8c639db1983880d8453559;hb=HEAD;hp=e7bd2bf8e981fd04be2c6967234894ac97b9d2da;hpb=637cd82c20678638c93d7ee0b8ce81a597e8f8d2;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_menu.c b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_menu.c index e7bd2bf8..9894abd0 100644 --- a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_menu.c +++ b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_menu.c @@ -10,7 +10,6 @@ #include #include #include "include/internal.h" -#include "include/ipc.h" #include // === TYPES === @@ -44,9 +43,9 @@ int AxWin3_Menu_int_Callback(tHWND Window, int Message, int Length, void *Data) if(msg->ID >= info->nItems) return -1; item = &info->Items[msg->ID]; if(item->Callback) item->Callback(item->CbPtr); - return 0; } + return 1; } } - return 1; + return 0; } tHWND AxWin3_Menu_Create(tHWND Parent) @@ -68,6 +67,7 @@ void AxWin3_Menu_ShowAt(tHWND Menu, int X, int Y) { AxWin3_MoveWindow(Menu, X, Y); AxWin3_ShowWindow(Menu, 1); + AxWin3_FocusWindow(Menu); } tAxWin3_MenuItem *AxWin3_Menu_AddItem( @@ -87,7 +87,7 @@ tAxWin3_MenuItem *AxWin3_Menu_AddItem( _SysDebug("ERROR: Realloc Failed"); return NULL; } - + ret = &info->Items[info->nItems-1]; ret->ID = info->nItems - 1; ret->Window = Menu; @@ -96,16 +96,20 @@ tAxWin3_MenuItem *AxWin3_Menu_AddItem( ret->SubMenu = SubMenu; { - tAxWin_IPCMessage *msg; - tMenuMsg_AddItem *req; - msg = AxWin3_int_AllocateIPCMessage(Menu, MSG_MENU_ADDITEM, 0, sizeof(*req)+strlen(Label)); - req = (void*)msg->Data; + if(!Label) Label = ""; + tMenuIPC_AddItem *req; + int data_size = sizeof(*req) + strlen(Label)+1; + req = malloc(data_size); + if( !req ) { + free(ret); + return NULL; + } req->ID = ret->ID; req->Flags = Flags; req->SubMenuID = AxWin3_int_GetWindowID(SubMenu); strcpy(req->Label, Label); - AxWin3_int_SendIPCMessage(msg); - free(msg); + AxWin3_SendIPC(Menu, IPC_MENU_ADDITEM, data_size, req); + free(req); } return ret;