Qt4: allow adding node under playlist root item
authorJakob Leben <jleben@videolan.org>
Tue, 18 Aug 2009 11:55:42 +0000 (13:55 +0200)
committerJakob Leben <jleben@videolan.org>
Tue, 18 Aug 2009 11:55:42 +0000 (13:55 +0200)
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/standardpanel.cpp

index d8ba787..be45ac8 100644 (file)
@@ -941,9 +941,11 @@ void PLModel::search( const QString& search_text )
 /*********** Popup *********/
 void PLModel::popup( QModelIndex & index, QPoint &point, QModelIndexList list )
 {
-    assert( index.isValid() );
     PL_LOCK;
-    playlist_item_t *p_item = playlist_ItemGetById( p_playlist, itemId( index ) );
+    int i_id;
+    if( index.isValid() ) i_id = itemId( index );
+    else i_id = rootItem->i_id;
+    playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_id );
     if( p_item )
     {
         i_popup_item = p_item->i_id;
@@ -964,22 +966,28 @@ void PLModel::popup( QModelIndex & index, QPoint &point, QModelIndexList list )
 
         current_selection = list;
         QMenu *menu = new QMenu;
-        menu->addAction( qtr(I_POP_PLAY), this, SLOT( popupPlay() ) );
-        menu->addAction( qtr(I_POP_DEL), this, SLOT( popupDel() ) );
-        menu->addSeparator();
-        menu->addAction( qtr(I_POP_STREAM), this, SLOT( popupStream() ) );
-        menu->addAction( qtr(I_POP_SAVE), this, SLOT( popupSave() ) );
-        menu->addSeparator();
-        menu->addAction( qtr(I_POP_INFO), this, SLOT( popupInfo() ) );
-        if( node )
+        if( index.isValid() )
         {
+            menu->addAction( qtr(I_POP_PLAY), this, SLOT( popupPlay() ) );
+            menu->addAction( qtr(I_POP_DEL), this, SLOT( popupDel() ) );
+            menu->addSeparator();
+            menu->addAction( qtr(I_POP_STREAM), this, SLOT( popupStream() ) );
+            menu->addAction( qtr(I_POP_SAVE), this, SLOT( popupSave() ) );
             menu->addSeparator();
+            menu->addAction( qtr(I_POP_INFO), this, SLOT( popupInfo() ) );
+        }
+        if( node )
+        {
+            if( index.isValid() ) menu->addSeparator();
             menu->addAction( qtr(I_POP_SORT), this, SLOT( popupSort() ) );
-            if( tree );
+            if( tree )
                 menu->addAction( qtr(I_POP_ADD), this, SLOT( popupAddNode() ) );
         }
-        menu->addSeparator();
-        menu->addAction( qtr( I_POP_EXPLORE ), this, SLOT( popupExplore() ) );
+        if( index.isValid() )
+        {
+            menu->addSeparator();
+            menu->addAction( qtr( I_POP_EXPLORE ), this, SLOT( popupExplore() ) );
+        }
         menu->popup( point );
     }
     else
index 4ac1da2..8c1cef8 100644 (file)
@@ -336,7 +336,6 @@ void StandardPLPanel::search( const QString& searchText )
 
 void StandardPLPanel::doPopup( QModelIndex index, QPoint point )
 {
-    if( !index.isValid() ) return;
     QItemSelectionModel *selection = view->selectionModel();
     QModelIndexList list = selection->selectedIndexes();
     model->popup( index, point, list );