fix middle menu hideing bug

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2981 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
pontscho 2001-11-18 19:22:55 +00:00
parent c7bdd84243
commit 3e771db3e4
5 changed files with 20 additions and 5 deletions

View File

@ -10,6 +10,7 @@ void ActivateMenuItem( int Item )
{
// fprintf( stderr,"[menu] item: %d\n",Item );
gtkShMem->popupmenu=Item;
gtkShMem->visiblepopupmenu=0;
gtkSendMessage( evShowPopUpMenu );
}
@ -52,6 +53,7 @@ GtkWidget * AddSeparator( GtkWidget * Menu )
}
GtkWidget * DVDSubMenu;
GtkWidget * DVDTitleMenu;
GtkWidget * DVDAudioLanguageMenu;
GtkWidget * DVDSubtitleLanguageMenu;
@ -68,7 +70,7 @@ GtkWidget * create_PopUpMenu( void )
SubMenu=AddSubMenu( Menu,"Open ..." );
AddMenuItem( SubMenu,"Play file ..."" ", evLoadPlay );
AddMenuItem( SubMenu,"Play VCD ...", evNone );
AddMenuItem( SubMenu,"Play DVD ...", evNone );
AddMenuItem( SubMenu,"Play DVD ...", evPlayDVD );
AddMenuItem( SubMenu,"Play URL ...", evNone );
AddMenuItem( SubMenu,"Load subtitle ... ", evLoadSubtitle );
SubMenu=AddSubMenu( Menu,"Playing" );
@ -89,9 +91,10 @@ GtkWidget * create_PopUpMenu( void )
AddMenuItem( SubMenu,"Double size", evDoubleSize );
AddMenuItem( SubMenu,"Fullscreen", evFullScreen );
DVDSubMenu=AddSubMenu( Menu,"DVD" );
AddMenuItem( DVDSubMenu,"Play disc ..."" ", evNone );
AddMenuItem( DVDSubMenu,"Play disc ..."" ", evPlayDVD );
AddMenuItem( DVDSubMenu,"Show DVD Menu", evNone );
AddSeparator( DVDSubMenu );
DVDTitleMenu=AddSubMenu( DVDSubMenu,"Titles" );
DVDAudioLanguageMenu=AddSubMenu( DVDSubMenu,"Audio language" );
DVDSubtitleLanguageMenu=AddSubMenu( DVDSubMenu,"Subtitle language" );
AddSeparator( Menu );

View File

@ -128,7 +128,14 @@ void gtkSigHandler( int s )
break;
case evShowPopUpMenu:
gtkShMem->popupmenu=evNone;
if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu );
PopUpMenu=create_PopUpMenu();
gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 );
gtkShMem->visiblepopupmenu=1;
break;
case evHidePopUpMenu:
if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu );
gtkShMem->visiblepopupmenu=0;
break;
}
gtkShMem->message=0;

View File

@ -32,13 +32,15 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
mplMouseTimer=mplMouseTimerConst;
wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
switch( Button )
{
case wsPMMouseButton:
gtkSendMessage( evShowPopUpMenu );
break;
gtkSendMessage( evShowPopUpMenu );
break;
case wsPRMouseButton:
if ( gtkShMem->visiblepopupmenu ) gtkSendMessage( evHidePopUpMenu );
mplShowMenu( RX,RY );
msButton=wsPRMouseButton;
break;
@ -48,6 +50,7 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
break;
// ---
case wsPLMouseButton:
if ( gtkShMem->visiblepopupmenu ) gtkSendMessage( evHidePopUpMenu );
sx=X; sy=Y;
msButton=wsPLMouseButton;
mplSubMoved=0;

View File

@ -59,7 +59,7 @@ void widgetsCreate( void )
FileSelect=create_FileSelect();
MessageBox=create_MessageBox(0);
Options=create_Options();
PopUpMenu=create_PopUpMenu();
// PopUpMenu=create_PopUpMenu();
}
// --- forked function

View File

@ -52,7 +52,9 @@ typedef struct
gtkSkinStruct sb;
gtkVisibleStruct vs;
gtkOptionsStruct op;
int popupmenu;
int visiblepopupmenu;
} gtkCommStruct;
extern gtkCommStruct * gtkShMem;