]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/menus.cpp
Qt4 - Try to use a Tool Dialog for the GotoTime dialog.
[vlc] / modules / gui / qt4 / menus.cpp
index 8b59d2c73e904420c418e7670f54703f84655b52..7ca28f64304db7943c3c5bc7b3b8ca2b7ad5fda5 100644 (file)
@@ -201,7 +201,8 @@ QMenu *QVLCMenu::FileMenu()
     DP_SADD( qtr("Open &Capture Device..." ), "", "", openCaptureDialog(),
             "Ctrl+C" );
     menu->addSeparator();
-    DP_SADD( qtr("&Streaming..."), "", "", openThenStreamingDialogs(), "Ctrl+S" );
+    DP_SADD( qtr("&Streaming..."), "", "", openThenStreamingDialogs(), 
+            "Ctrl+S" );
     menu->addSeparator();
     DP_SADD( qtr("&Quit") , "", "", quit(), "Ctrl+Q");
     return menu;
@@ -437,7 +438,7 @@ QMenu *QVLCMenu::HelpMenu()
     QMenu *toolsmenu = ToolsMenu( p_intf, NULL, false, false ); \
     toolsmenu->setTitle( qtr("Tools" ) ); \
     menu->addMenu( toolsmenu ); \
-    DP_SADD( qtr("Quit"), "", "", quit() , NULL );
+    DP_SADD( qtr("Quit"), "", "", quit() , "Ctrl+Q" );
 
 void QVLCMenu::VideoPopupMenu( intf_thread_t *p_intf )
 {
@@ -503,48 +504,60 @@ void QVLCMenu::MiscPopupMenu( intf_thread_t *p_intf )
     p_intf->p_sys->p_popup_menu = NULL;
 }
 
-void QVLCMenu::PopupMenu( intf_thread_t *p_intf )
+void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show )
 {
-    POPUP_BOILERPLATE;
-    if( p_input )
+    if( show )
     {
-        vlc_object_yield( p_input );
-        InputAutoMenuBuilder( VLC_OBJECT(p_input), objects, varnames );
-
-        /* Video menu */
-        PUSH_SEPARATOR;
-        varnames.push_back( "video-es" );
-        objects.push_back( p_input->i_object_id );
-        varnames.push_back( "spu-es" );
-        objects.push_back( p_input->i_object_id );
-        vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
-                                                VLC_OBJECT_VOUT, FIND_CHILD );
-        if( p_vout )
-        {
-            VideoAutoMenuBuilder( p_vout, objects, varnames );
-            vlc_object_release( p_vout );
-        }
-        /* Audio menu */
-        PUSH_SEPARATOR
-        varnames.push_back( "audio-es" );
-        objects.push_back( p_input->i_object_id );
-        vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
-                                             VLC_OBJECT_AOUT, FIND_ANYWHERE );
-        if( p_aout )
-        {
-            AudioAutoMenuBuilder( p_aout, objects, varnames );
-            vlc_object_release( p_aout );
-        }
+       // create a  popup if there is none
+        if( ! p_intf->p_sys->p_popup_menu )
+       {
+           POPUP_BOILERPLATE;
+           if( p_input )
+           {
+               vlc_object_yield( p_input );
+               InputAutoMenuBuilder( VLC_OBJECT(p_input), objects, varnames );
+
+               /* Video menu */
+               PUSH_SEPARATOR;
+               varnames.push_back( "video-es" );
+               objects.push_back( p_input->i_object_id );
+               varnames.push_back( "spu-es" );
+               objects.push_back( p_input->i_object_id );
+               vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
+                                                       VLC_OBJECT_VOUT, FIND_CHILD );
+               if( p_vout )
+               {
+                   VideoAutoMenuBuilder( p_vout, objects, varnames );
+                   vlc_object_release( p_vout );
+               }
+               /* Audio menu */
+               PUSH_SEPARATOR
+               varnames.push_back( "audio-es" );
+               objects.push_back( p_input->i_object_id );
+               vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
+                                                    VLC_OBJECT_AOUT, FIND_ANYWHERE );
+               if( p_aout )
+               {
+                   AudioAutoMenuBuilder( p_aout, objects, varnames );
+                   vlc_object_release( p_aout );
+               }
+           }
+
+           QMenu *menu = new QMenu();
+           Populate( p_intf, menu, varnames, objects );
+           menu->addSeparator();
+           POPUP_STATIC_ENTRIES;
+
+           p_intf->p_sys->p_popup_menu = menu;
+       }
+       p_intf->p_sys->p_popup_menu->popup( QCursor::pos() );
+    }
+    else
+    {  
+       // destroy popup if there is one
+       delete p_intf->p_sys->p_popup_menu;
+       p_intf->p_sys->p_popup_menu = NULL;
     }
-
-    QMenu *menu = new QMenu();
-    Populate( p_intf, menu, varnames, objects );
-    menu->addSeparator();
-    POPUP_STATIC_ENTRIES;
-
-    p_intf->p_sys->p_popup_menu = menu;
-    menu->popup( QCursor::pos() );
-    p_intf->p_sys->p_popup_menu = NULL;
 }
 
 #undef PUSH_VAR