From 8420245102e1ca947b82da307d0f088e01e42ab2 Mon Sep 17 00:00:00 2001 From: Johan Smith Agudelo Rodriguez Date: Sun, 2 Apr 2017 00:23:47 -0500 Subject: [PATCH] fix #330, visibility mode and options Visibility doesn't load when switch to session --- app/visibilitymanager.cpp | 20 +++++++++++++------ shell/contents/configuration/TweaksConfig.qml | 2 ++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/visibilitymanager.cpp b/app/visibilitymanager.cpp index af77ed2a7..ae8b9bc5e 100644 --- a/app/visibilitymanager.cpp +++ b/app/visibilitymanager.cpp @@ -170,6 +170,7 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode) break; } + view->containment()->config().writeEntry("visibility", static_cast(mode)); emit q->modeChanged(); } @@ -428,7 +429,7 @@ inline void VisibilityManagerPrivate::saveConfig() return; auto config = view->containment()->config(); - config.writeEntry("visibility", static_cast(mode)); + config.writeEntry("timerShow", timerShow.interval()); config.writeEntry("timerHide", timerHide.interval()); config.writeEntry("raiseOnDesktopChange", raiseOnDesktopChange); @@ -444,18 +445,22 @@ inline void VisibilityManagerPrivate::restoreConfig() auto config = view->containment()->config(); timerShow.setInterval(config.readEntry("timerShow", 200)); timerHide.setInterval(config.readEntry("timerHide", 700)); - auto mode = static_cast(config.readEntry("visibility", static_cast(Dock::DodgeActive))); emit q->timerShowChanged(); emit q->timerHideChanged(); setRaiseOnDesktop(config.readEntry("raiseOnDesktopChange", false)); setRaiseOnActivity(config.readEntry("raiseOnActivityChange", false)); - if (mode == Dock::AlwaysVisible) { - setMode(mode); + auto mode = [&]() { + return static_cast(view->containment()->config() + .readEntry("visibility", static_cast(Dock::DodgeActive))); + }; + + if (mode() == Dock::AlwaysVisible) { + setMode(Dock::AlwaysVisible); } else { - QTimer::singleShot(5000, this, [ &, mode]() { - setMode(mode); + QTimer::singleShot(5000, this, [&, mode]() { + setMode(mode()); }); } @@ -527,6 +532,9 @@ VisibilityManager::~VisibilityManager() Dock::Visibility VisibilityManager::mode() const { + if (d->mode == Dock::None) + return static_cast(d->view->containment()->config().readEntry("visibility", -1)); + return d->mode; } diff --git a/shell/contents/configuration/TweaksConfig.qml b/shell/contents/configuration/TweaksConfig.qml index c7c7a191b..4bbebd938 100644 --- a/shell/contents/configuration/TweaksConfig.qml +++ b/shell/contents/configuration/TweaksConfig.qml @@ -138,6 +138,7 @@ PlasmaComponents.Page { Layout.leftMargin: units.smallSpacing * 2 text: i18n("Raise dock on desktop change") checked: dock.visibility.raiseOnDesktop + enabled: dock.visibility.mode !== Latte.Dock.AlwaysVisible onClicked: { dock.visibility.raiseOnDesktop = checked @@ -148,6 +149,7 @@ PlasmaComponents.Page { Layout.leftMargin: units.smallSpacing * 2 text: i18n("Raise dock on activity change") checked: dock.visibility.raiseOnActivity + enabled: dock.visibility.mode !== Latte.Dock.AlwaysVisible onClicked: { dock.visibility.raiseOnActivity = checked