]> git.sesse.net Git - vlc/commitdiff
Qt: refactor and (again) emit currentChanged when processing new items
authorJakob Leben <jleben@videolan.org>
Tue, 16 Feb 2010 23:58:49 +0000 (00:58 +0100)
committerJakob Leben <jleben@videolan.org>
Wed, 17 Feb 2010 00:03:00 +0000 (01:03 +0100)
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/input_manager.hpp

index 29595620a18ad28a16a723e9b0a13d28127590a9..fdb9f288a9e433331b25f5aa8af8384c2d446d56 100644 (file)
@@ -350,9 +350,7 @@ QVariant PLModel::data( const QModelIndex &index, int role ) const
 
 bool PLModel::isCurrent( const QModelIndex &index ) const
 {
-    input_thread_t *p_input_thread = THEMIM->getInput();
-    if( !p_input_thread ) return false;
-    return getItem( index )->p_input == input_GetItem( p_input_thread );
+    return getItem( index )->p_input == THEMIM->currentInputItem();
 }
 
 int PLModel::itemId( const QModelIndex &index ) const
@@ -621,7 +619,10 @@ void PLModel::processItemAppend( int i_item, int i_parent )
 
     PL_LOCK;
     p_item = playlist_ItemGetById( p_playlist, i_item );
-    if( !p_item || p_item->i_flags & PLAYLIST_DBL_FLAG ) goto end;
+    if( !p_item || p_item->i_flags & PLAYLIST_DBL_FLAG )
+    {
+        PL_UNLOCK; return;
+    }
 
     for( pos = 0; pos < p_item->p_parent->i_children; pos++ )
         if( p_item->p_parent->pp_children[pos] == p_item ) break;
@@ -633,10 +634,8 @@ void PLModel::processItemAppend( int i_item, int i_parent )
     nodeItem->insertChild( newItem, pos );
     endInsertRows();
 
-    return;
-end:
-    PL_UNLOCK;
-    return;
+    if( newItem->p_input == THEMIM->currentInputItem() )
+        emit currentChanged( index( newItem, 0 ) );
 }
 
 
index 229f568cb6936dc5447b8721115ccad542c6d9b2..726c6bdea0bf00db4ef755eaf669b1aaf3ed24e7 100644 (file)
@@ -253,6 +253,10 @@ public:
 
     input_thread_t *getInput() { return p_input; }
     InputManager *getIM() { return im; }
+    inline input_item_t *currentInputItem()
+    {
+        return ( p_input ? input_GetItem( p_input ) : NULL );
+    }
 
     vout_thread_t* getVout();
     aout_instance_t *getAout();