- if( menuEntry->SubMenu )
- fgExecuteMenuCallback( menuEntry->SubMenu );
- else
- if( menu->Callback )
- menu->Callback( menuEntry->ID );
- return;
+ window->ActiveMenu->Window->State.MouseX =
+ mouse_x - window->ActiveMenu->X;
+ window->ActiveMenu->Window->State.MouseY =
+ mouse_y - window->ActiveMenu->Y;
+ }
+
+ /* In the menu, invoke the callback and deactivate the menu */
+ if( fghCheckMenuStatus( window->ActiveMenu->Window,
+ window->ActiveMenu ) )
+ {
+ /*
+ * Save the current window and menu and set the current
+ * window to the window whose menu this is
+ */
+ SFG_Window *save_window = fgStructure.Window;
+ SFG_Menu *save_menu = fgStructure.Menu;
+ SFG_Window *parent_window = window->ActiveMenu->ParentWindow;
+ fgSetWindow( parent_window );
+ fgStructure.Menu = window->ActiveMenu;
+
+ /* Execute the menu callback */
+ fghExecuteMenuCallback( window->ActiveMenu );
+ fgDeactivateMenu( parent_window );
+
+ /* Restore the current window and menu */
+ fgSetWindow( save_window );
+ fgStructure.Menu = save_menu;