Merge branch 'master' of git://localhost/acess2
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / renderers / menu.c
index a183de0..e17d954 100644 (file)
@@ -47,6 +47,8 @@ typedef struct sMenuWindowInfo
 void   Renderer_Menu_Init(void);
 tWindow        *Renderer_Menu_Create(int Argument);
 void   Renderer_Menu_Redraw(tWindow *Window);
+ int   Renderer_Menu_HandleIPC_AddItem(tWindow *Window, size_t Length, const void *Data);
+ int   Renderer_Menu_HandleIPC_SetFlags(tWindow *Window, size_t Length, const void *Data);
  int   Renderer_Menu_HandleMessage(tWindow *Window, int Msg, int Length, const void *Data);
 
 // === CONSTANTS ===
@@ -70,7 +72,12 @@ tWMRenderer  gRenderer_Menu = {
        .Name = "Menu",
        .CreateWindow = Renderer_Menu_Create,
        .Redraw = Renderer_Menu_Redraw,
-       .HandleMessage = Renderer_Menu_HandleMessage
+       .HandleMessage = Renderer_Menu_HandleMessage,
+       .nIPCHandlers = 2,
+       .IPCHandlers = {
+               Renderer_Menu_HandleIPC_AddItem,
+//             Renderer_Menu_HandleIPC_SetFlags
+       }
 };
 tFont  *gMenu_Font = NULL;     // System monospace
 
@@ -196,8 +203,9 @@ void Renderer_Menu_Redraw(tWindow *Window)
        }
 }
 
-int Renderer_Menu_int_AddItem(tWindow *Window, int Length, const tMenuMsg_AddItem *Msg)
+int Renderer_Menu_HandleIPC_AddItem(tWindow *Window, size_t Length, const void *Data)
 {
+       const tMenuIPC_AddItem  *Msg = Data;
        tMenuWindowInfo *info = Window->RendererInfo;
        tMenuItem       *item;
        
@@ -359,6 +367,7 @@ int Renderer_Menu_HandleMessage(tWindow *Window, int Msg, int Length, const void
                        // TODO: This shouldn't really be done, instead focus should be given
                        //       when the menu is shown.
 //                     WM_FocusWindow(Window);
+                       WM_RaiseWindow(Window); // If it's shown, raise it to the heavens!
                }
                else
                {
@@ -413,16 +422,11 @@ int Renderer_Menu_HandleMessage(tWindow *Window, int Msg, int Length, const void
                {
                        info->HilightedItem = new_hilight;
                        // TODO: Change sub-menu
-                       WM_Invalidate(Window);
+                       WM_Invalidate(Window, 1);
                }
 
                return 0; }
 
-       // Manipulation messages
-       case MSG_MENU_ADDITEM:
-//             _SysDebug("MSG_MENU_ADDITEM");
-               return Renderer_Menu_int_AddItem(Window, Length, Data);
-       
        // Only message to pass to client
        case MSG_MENU_SELECT:
                return 1;

UCC git Repository :: git.ucc.asn.au