From 587594ac37f7e5a7359eaa66df12953e3ce4920b Mon Sep 17 00:00:00 2001 From: arli Date: Sun, 5 Feb 2017 20:55:12 +0400 Subject: scroll bar state fix, now compiles, at very least works fine for tracklist, playlist and crates --- src/widget/wanalysislibrarytableview.cpp | 2 +- src/widget/wlibrarytableview.cpp | 7 ++----- src/widget/wtracktableview.cpp | 19 +++++++++---------- 3 files changed, 12 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/widget/wanalysislibrarytableview.cpp b/src/widget/wanalysislibrarytableview.cpp index d12240a9eb..2ec9ccbe16 100644 --- a/src/widget/wanalysislibrarytableview.cpp +++ b/src/widget/wanalysislibrarytableview.cpp @@ -4,7 +4,7 @@ WAnalysisLibraryTableView::WAnalysisLibraryTableView(QWidget* parent, UserSettingsPointer pConfig, TrackCollection* pTrackCollection) - : WTrackTableView(parent, pConfig, pTrackCollection, QString::number(qrand())) { + : WTrackTableView(parent, pConfig, pTrackCollection) { setDragDropMode(QAbstractItemView::DragOnly); setDragEnabled(true); //Always enable drag for now (until we have a model that doesn't support this.) } diff --git a/src/widget/wlibrarytableview.cpp b/src/widget/wlibrarytableview.cpp index 86bed34e1d..61cd09b0db 100644 --- a/src/widget/wlibrarytableview.cpp +++ b/src/widget/wlibrarytableview.cpp @@ -18,8 +18,6 @@ WLibraryTableView::WLibraryTableView(QWidget* parent, m_pConfig(pConfig), m_vScrollBarPosKey(vScrollBarPosKey) { - qWarning() << "vScrollBarPosKey=" << vScrollBarPosKey; - // Setup properties for table // Editing starts when clicking on an already selected item. @@ -44,7 +42,7 @@ WLibraryTableView::WLibraryTableView(QWidget* parent, setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); setAlternatingRowColors(true); - loadVScrollBarPosState(); + //loadVScrollBarPosState(); connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SIGNAL(scrollValueChanged(int))); @@ -53,7 +51,6 @@ WLibraryTableView::WLibraryTableView(QWidget* parent, } WLibraryTableView::~WLibraryTableView() { - saveVScrollBarPosState(); } void WLibraryTableView::loadVScrollBarPosState() { @@ -75,7 +72,6 @@ void WLibraryTableView::saveVScrollBarPos() { //Save the scrollbar's position so we can return here after //a search is cleared. m_iSavedVScrollBarPos = verticalScrollBar()->value(); - } @@ -121,6 +117,7 @@ void WLibraryTableView::saveVScrollBarPos(const QString key){ void WLibraryTableView::restoreVScrollBarPos(const QString key){ updateGeometries(); + if (m_vScrollBarPosValues.contains(key)){ verticalScrollBar()->setValue(m_vScrollBarPosValues[key]); }else{ diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index d6b4ab46a6..9c6c548a5f 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -27,11 +27,10 @@ WTrackTableView::WTrackTableView(QWidget * parent, UserSettingsPointer pConfig, - TrackCollection* pTrackCollection, - const QString scrollBarKey, bool sorting) + TrackCollection* pTrackCollection, bool sorting) : WLibraryTableView(parent, pConfig, ConfigKey(LIBRARY_CONFIGVALUE, - scrollBarKey)), + WTRACKTABLEVIEW_VSCROLLBARPOS_KEY)), m_pConfig(pConfig), m_pTrackCollection(pTrackCollection), m_sorting(sorting), @@ -43,8 +42,6 @@ WTrackTableView::WTrackTableView(QWidget * parent, m_selectionChangedSinceLastGuiTick(true), m_loadCachedOnly(false) { - qWarning() << "WTrackTableView called"; - connect(&m_loadTrackMapper, SIGNAL(mapped(QString)), this, SLOT(loadSelectionToGroup(QString))); @@ -201,8 +198,6 @@ void WTrackTableView::slotGuiTick50ms(double /*unused*/) { void WTrackTableView::loadTrackModel(QAbstractItemModel *model) { //qDebug() << "WTrackTableView::loadTrackModel()" << model; - qWarning() << "loadTrackModel:" << reinterpret_cast(model); - TrackModel* trackModel = dynamic_cast(model); VERIFY_OR_DEBUG_ASSERT(model) { @@ -212,6 +207,8 @@ void WTrackTableView::loadTrackModel(QAbstractItemModel *model) { return; } + unsigned long newModelAddr = 0; + /* If the model has not changed * there's no need to exchange the headers * this will cause a small GUI freeze @@ -222,12 +219,10 @@ void WTrackTableView::loadTrackModel(QAbstractItemModel *model) { doSortByColumn(horizontalHeader()->sortIndicatorSection()); return; }else{ + newModelAddr = reinterpret_cast(trackModel); saveVScrollBarPos(QString::number(reinterpret_cast(getTrackModel()))); //saving current vertical bar position //using adress of track model as key - restoreVScrollBarPos(QString::number(reinterpret_cast(trackModel))); - // restoring scrollBar position using model pointer as key - // scrollbar positions with respect to different models are backed by map } // The "coverLocation" and "hash" column numbers are required very often @@ -369,6 +364,10 @@ void WTrackTableView::loadTrackModel(QAbstractItemModel *model) { setVisible(true); //restoreVScrollBarPos(); + + restoreVScrollBarPos(QString::number(newModelAddr)); + // restoring scrollBar position using model pointer as key + // scrollbar positions with respect to different models are backed by map } void WTrackTableView::createActions() { -- cgit v1.2.3