From f9721878bd2977a66054fe3d2a13d48a0f071bb0 Mon Sep 17 00:00:00 2001 From: Michael Pyne Date: Fri, 21 Dec 2018 11:39:12 -0500 Subject: [PATCH] Fix the "Show Columns" menu to show correct state on startup. The "Show Columns" menu would previously have a checkbox entered for every possible column for the playlist shown by default at JuK startup, even though most columns were not visible. This turned out to be because the class that reads the column configuration (Playlist::SharedSettings) was not being used to generate the Show Columns menu options. Instead the Playlist's own (defaulted) values were used. At this point in execution we can't force SharedSettings->apply() to run because the Playlist is not fully setup. Instead we expose the config values and use those to generate the menu. --- playlist.cpp | 3 ++- playlistsharedsettings.cpp | 9 +++++++++ playlistsharedsettings.h | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/playlist.cpp b/playlist.cpp index c8563ebd..ef0bb2ac 100644 --- a/playlist.cpp +++ b/playlist.cpp @@ -1311,6 +1311,7 @@ void Playlist::slotInitialize() ////////////////////////////////////////////////// QAction *showAction; + const auto sharedSettings = SharedSettings::instance(); for(int i = 0; i < header()->count(); ++i) { if(i - columnOffset() == PlaylistItem::FileNameColumn) @@ -1319,7 +1320,7 @@ void Playlist::slotInitialize() showAction = new QAction(headerItem()->text(i), m_headerMenu); showAction->setData(i); showAction->setCheckable(true); - showAction->setChecked(!isColumnHidden(i)); + showAction->setChecked(sharedSettings->isColumnVisible(i)); m_headerMenu->addAction(showAction); resizeColumnToContents(i); diff --git a/playlistsharedsettings.cpp b/playlistsharedsettings.cpp index 37da76b7..661e30ca 100644 --- a/playlistsharedsettings.cpp +++ b/playlistsharedsettings.cpp @@ -62,6 +62,15 @@ void Playlist::SharedSettings::toggleColumnVisible(int column) writeConfig(); } +bool Playlist::SharedSettings::isColumnVisible(int column) const +{ + if(column >= m_columnsVisible.size()) { + return false; + } + + return m_columnsVisible[column]; +} + void Playlist::SharedSettings::setInlineCompletionMode(KCompletion::CompletionMode mode) { m_inlineCompletion = mode; diff --git a/playlistsharedsettings.h b/playlistsharedsettings.h index 988eef8a..e2d5bb24 100644 --- a/playlistsharedsettings.h +++ b/playlistsharedsettings.h @@ -38,8 +38,10 @@ public: */ void setColumnOrder(const Playlist *l); void toggleColumnVisible(int column); + bool isColumnVisible(int column) const; void setInlineCompletionMode(KCompletion::CompletionMode mode); + /** * Apply the settings. */ -- GitLab