[vlc-commits] Qt: rebuild correctly the playback menu
Jean-Baptiste Kempf
git at videolan.org
Sat Jan 14 07:22:07 CET 2012
vlc/vlc-1.2 | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Sat Jan 14 07:03:38 2012 +0100| [2bfd6a8d9d1ba896a609234be907db8fc6d043a1] | committer: Jean-Baptiste Kempf
Qt: rebuild correctly the playback menu
And also, close #5522
(cherry picked from commit 921a659cf599ac0afd943aeed0a4fc085cc4f24f)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-1.2.git/?a=commit;h=2bfd6a8d9d1ba896a609234be907db8fc6d043a1
---
modules/gui/qt4/menus.cpp | 22 +++++++++++++++++-----
modules/gui/qt4/menus.hpp | 2 +-
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp
index 502a747..bd668af 100644
--- a/modules/gui/qt4/menus.cpp
+++ b/modules/gui/qt4/menus.cpp
@@ -700,15 +700,16 @@ QMenu *VLCMenuBar::NavigMenu( intf_thread_t *p_intf, QMenu *menu )
action->setData( "bookmark" );
menu->addSeparator();
- PopupMenuPlaylistControlEntries( menu, p_intf );
+
PopupMenuControlEntries( menu, p_intf );
EnableStaticEntries( menu, ( THEMIM->getInput() != NULL ) );
- return RebuildNavigMenu( p_intf, menu );
+ return RebuildNavigMenu( p_intf, menu, true );
}
-QMenu *VLCMenuBar::RebuildNavigMenu( intf_thread_t *p_intf, QMenu *menu )
+QMenu *VLCMenuBar::RebuildNavigMenu( intf_thread_t *p_intf, QMenu *menu, bool b_keep )
{
+
/* */
input_thread_t *p_object;
QVector<vlc_object_t *> objects;
@@ -719,14 +720,25 @@ QMenu *VLCMenuBar::RebuildNavigMenu( intf_thread_t *p_intf, QMenu *menu )
InputAutoMenuBuilder( p_object, objects, varnames );
- menu->addSeparator();
-
/* Title and so on */
PUSH_VAR( "prev-title" );
PUSH_VAR( "next-title" );
PUSH_VAR( "prev-chapter" );
PUSH_VAR( "next-chapter" );
+ /* Remove playback actions to recreate them */
+ if( !b_keep )
+ {
+ QList< QAction* > actions = menu->actions();
+ if( actions.count() > 4 )
+ for( int i = actions.count() - 1 ; i >= actions.count() - 1 - 4 ; --i )
+ delete actions[i];
+ }
+
+ PopupPlayEntries( menu, p_intf, p_object );
+ PopupMenuPlaylistControlEntries( menu, p_intf );
+
+ /* */
EnableStaticEntries( menu, (p_object != NULL ) );
return Populate( p_intf, menu, varnames, objects );
}
diff --git a/modules/gui/qt4/menus.hpp b/modules/gui/qt4/menus.hpp
index 20ad2a4..8ffa9a6 100644
--- a/modules/gui/qt4/menus.hpp
+++ b/modules/gui/qt4/menus.hpp
@@ -114,7 +114,7 @@ private:
static QMenu *NavigMenu( intf_thread_t *p_intf, QWidget *parent ) {
return NavigMenu( p_intf, new QMenu( parent ) );
}
- static QMenu *RebuildNavigMenu( intf_thread_t *, QMenu *);
+ static QMenu *RebuildNavigMenu( intf_thread_t *, QMenu *, bool b_keep = false );
static QMenu *VideoMenu( intf_thread_t *, QMenu *, bool b_subtitle = true );
static QMenu *VideoMenu( intf_thread_t *p_intf, QWidget *parent ) {
More information about the vlc-commits
mailing list