X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_menu.c;h=65ec6741be5beff0fc74cb9fc7a1a38d7d0b19b1;hb=d9b0989056a1c2267b68f01317d4641c70e48719;hp=3ad2cb1cfec19f6bfdf9d5bb709004ab5d04f055;hpb=4abad463b8e04c45c4e5ce8a718ee608fa7033f9;p=freeglut diff --git a/src/fg_menu.c b/src/fg_menu.c index 3ad2cb1..65ec674 100644 --- a/src/fg_menu.c +++ b/src/fg_menu.c @@ -29,6 +29,7 @@ #include #include "fg_internal.h" + /* -- DEFINITIONS ---------------------------------------------------------- */ /* @@ -403,7 +404,7 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) /* * Private static function to set the parent window of a submenu and all - * of its submenus + * of its submenus. */ static void fghSetMenuParentWindow( SFG_Window *window, SFG_Menu *menu ) { @@ -624,27 +625,7 @@ GLboolean fgCheckActiveMenu ( SFG_Window *window, int button, GLboolean pressed, * is dealt with in the WM_KILLFOCUS handler of fgPlatformWindowProc */ { - if (window->ActiveMenu->ParentWindow) - fgDeactivateMenu( window->ActiveMenu->ParentWindow ); - else - { - /* - * Its a rare occasion that a window has an ActiveMenu but - * that menus does not have a parent window. It happens - * however in the corner case bug when one opens a menu in - * a main window, then opens a different menu in this main - * window's child (you now have two menus open - * simultaneously, thats the bug) and then click somewhere - * else that causes both menus to close. One of them is - * then not properly cleaned up. This finishes the cleaning - * and minimizes the impact on the user, he only needs one - * extra mouse click. - */ - fghSetMenuParentWindow ( NULL, window->ActiveMenu ); - window->ActiveMenu->IsActive = GL_FALSE; - window->ActiveMenu->ActiveEntry = NULL; - window->ActiveMenu = NULL; - } + fgDeactivateMenu( window->ActiveMenu->ParentWindow ); } /* @@ -683,10 +664,10 @@ void fgDeactivateMenu( SFG_Window *window ) SFG_Menu* menu; SFG_MenuEntry *menuEntry; - /* Check if there is an active menu attached to this window... */ + /* Did we find an active window? */ freeglut_return_if_fail( window ); + /* Check if there is an active menu attached to this window... */ menu = window->ActiveMenu; - /* Did we find an active window? */ freeglut_return_if_fail( menu ); parent_window = menu->ParentWindow; @@ -711,7 +692,7 @@ void fgDeactivateMenu( SFG_Window *window ) { menuEntry->IsActive = GL_FALSE; - /* Is that an active submenu by any case? */ + /* Is that an active submenu by any chance? */ if( menuEntry->SubMenu ) fghDeactivateSubMenu( menuEntry ); }