aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp17
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp2
2 files changed, 15 insertions, 4 deletions
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index 43c06418e..e98eef0c9 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -518,12 +518,23 @@ void ListWidget::scrollToCurrent()
void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous)
{
if(previous)
+ {
+ previous->setProperty("first_visible", m_first);
disconnect(previous, 0, this, 0); //disconnect previous model
+ }
qApp->processEvents();
m_model = selected;
- m_first = 0;
- recenterCurrent(); //TODO restore position
- updateList(PlayListModel::STRUCTURE);
+
+ if(m_model->property("first_visible").isValid())
+ {
+ m_first = m_model->property("first_visible").toInt();
+ updateList(PlayListModel::STRUCTURE);
+ }
+ else
+ {
+ m_first = 0;
+ updateList(PlayListModel::STRUCTURE | PlayListModel::CURRENT);
+ }
connect (m_model, SIGNAL(currentVisibleRequest()), SLOT(scrollToCurrent()));
connect (m_model, SIGNAL(listChanged(int)), SLOT(updateList(int)));
}
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
index b01dc9ba8..a7ef07d3d 100644
--- a/src/plugins/Ui/skinned/playlist.cpp
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -105,7 +105,7 @@ PlayList::PlayList (PlayListManager *manager, QWidget *parent)
connect (m_pl_control, SIGNAL (ejectClicked()), SIGNAL (eject()));
connect (m_pl_manager, SIGNAL (selectedPlayListChanged(PlayListModel *, PlayListModel *)),
- m_listWidget, SLOT(setModel(PlayListModel*)));
+ m_listWidget, SLOT(setModel(PlayListModel*, PlayListModel*)));
m_listWidget->setModel(m_pl_manager->selectedPlayList());
createMenus();