diff options
Diffstat (limited to 'src/plugins/Ui/skinned/listwidget.cpp')
| -rw-r--r-- | src/plugins/Ui/skinned/listwidget.cpp | 17 |
1 files changed, 14 insertions, 3 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))); } |
