From: Jakob Leben Date: Wed, 10 Feb 2010 07:27:42 +0000 (+0100) Subject: Qt: return playlist model and views to "now playing" root if current root is deleted X-Git-Tag: 1.1.0-ff~216 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=790811343ae90c501aabd1a40ec375659fd415f2;hp=ea0c27c2b893432e587b7ef33d4f07a0e14f2abd;p=vlc Qt: return playlist model and views to "now playing" root if current root is deleted --- diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index d2fba6f06c..6c6272f454 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -700,9 +700,6 @@ void PLModel::removeItem( PLItem *item ) if( item->i_id == i_cached_id ) i_cached_id = -1; i_cached_input_id = -1; - if(item == rootItem) - rootItem = NULL; - if( item->parentItem ) { int i = item->parentItem->children.indexOf( item ); beginRemoveRows( index( item->parentItem, 0), i, i ); @@ -712,6 +709,12 @@ void PLModel::removeItem( PLItem *item ) } else delete item; + if(item == rootItem) + { + rootItem = NULL; + rebuild( p_playlist->p_playing ); + emit rootChanged(); + } } /* This function must be entered WITH the playlist lock */ diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index 9e368478bb..cb5e68c3e0 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -150,6 +150,7 @@ private: signals: void currentChanged( const QModelIndex& ); + void rootChanged(); public slots: void activateItem( const QModelIndex &index ); diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp index d26cc6482b..4d073a439e 100644 --- a/modules/gui/qt4/components/playlist/standardpanel.cpp +++ b/modules/gui/qt4/components/playlist/standardpanel.cpp @@ -79,6 +79,7 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent, locationBar = new LocationBar( model ); layout->addWidget( locationBar, 0, 0 ); + CONNECT( model, rootChanged(), locationBar, setRootIndex() ); /* A Spacer and the search possibilities */ layout->setColumnStretch( 1, 10 ); @@ -499,6 +500,11 @@ void LocationBar::setIndex( const QModelIndex &index ) } } +void LocationBar::setRootIndex() +{ + setIndex( QModelIndex() ); +} + void LocationBar::invoke( int i_id ) { QModelIndex index = model->index( i_id, 0 ); diff --git a/modules/gui/qt4/components/playlist/standardpanel.hpp b/modules/gui/qt4/components/playlist/standardpanel.hpp index dd868b2621..dd5aebfe8f 100644 --- a/modules/gui/qt4/components/playlist/standardpanel.hpp +++ b/modules/gui/qt4/components/playlist/standardpanel.hpp @@ -118,6 +118,8 @@ public: void setIndex( const QModelIndex & ); signals: void invoked( const QModelIndex & ); +public slots: + void setRootIndex(); private slots: void invoke( int i_item_id ); private: @@ -129,13 +131,13 @@ private: class LocationButton : public QPushButton { - public: - LocationButton( const QString &, bool bold, bool arrow ); - private: - void paintEvent ( QPaintEvent * event ); - QSize sizeHint() const; - QFontMetrics *metrics; - bool b_arrow; +public: + LocationButton( const QString &, bool bold, bool arrow ); +private: + void paintEvent ( QPaintEvent * event ); + QSize sizeHint() const; + QFontMetrics *metrics; + bool b_arrow; }; #endif