[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [latte-dock] app/dock: IMPORTANT FIX:show dodged dock at corner cases
From:       Michail Vourlakos <null () kde ! org>
Date:       2018-09-01 14:49:03
Message-ID: E1fw7Cx-00023G-DT () code ! kde ! org
[Download RAW message or body]

Git commit 203c740980c594e5e90b4f4b54261561a89c35f0 by Michail Vourlakos.
Committed on 01/09/2018 at 14:45.
Pushed by mvourlakos into branch 'master'.

IMPORTANT FIX:show dodged dock at corner cases

When there was only one latte dock and the last
active window was closed, the dock wasnt showing
afterwards. The dodge logic now has been improved
in order to not lose any window manager signals
that could help indicate when to show/hide a
dodge capable dock

BUG: 398052
FIXED-IN: 0.8.1

M  +8    -13   app/dock/visibilitymanager.cpp

https://commits.kde.org/latte-dock/203c740980c594e5e90b4f4b54261561a89c35f0

diff --git a/app/dock/visibilitymanager.cpp b/app/dock/visibilitymanager.cpp
index a9282ca4..9380d545 100644
--- a/app/dock/visibilitymanager.cpp
+++ b/app/dock/visibilitymanager.cpp
@@ -440,10 +440,7 @@ void VisibilityManagerPrivate::dodgeActive(WindowId wid)
 
     auto winfo = wm->requestInfo(wid);
 
-    if (!winfo.isValid())
-        return;
-
-    if (!winfo.isActive()) {
+    if (!winfo.isValid() || !winfo.isActive()) {
         winfo = wm->requestInfo(wm->activeWindow());
 
         if (!winfo.isValid()) {
@@ -456,7 +453,8 @@ void VisibilityManagerPrivate::dodgeActive(WindowId wid)
     //! don't send false raiseDock signal when containing mouse, // Johan comment
     //! I dont know why that wasnt winfo.wid() //active window, but just wid//the window that \
                made the call
     if (wm->isOnCurrentDesktop(winfo.wid()) && wm->isOnCurrentActivity(winfo.wid())) {
-        raiseDock(!intersects(winfo));
+        bool overlaps{intersects(winfo)};
+        raiseDock(!overlaps);
     }
 }
 
@@ -473,10 +471,7 @@ void VisibilityManagerPrivate::dodgeMaximized(WindowId wid)
 
     auto winfo = wm->requestInfo(wid);
 
-    if (!winfo.isValid())
-        return;
-
-    if (!winfo.isActive()) {
+    if (!winfo.isValid() || !winfo.isActive()) {
         winfo = wm->requestInfo(wm->activeWindow());
 
         if (!winfo.isValid()) {
@@ -486,13 +481,13 @@ void VisibilityManagerPrivate::dodgeMaximized(WindowId wid)
         }
     }
 
-    auto isMaxVert = [&]() noexcept -> bool {
+    auto intersectsMaxVert = [&]() noexcept -> bool {
         return ((winfo.isMaxVert()
                  || (view->screen() && view->screen()->availableSize().height() <= \
winfo.geometry().height()))  && intersects(winfo));
     };
 
-    auto isMaxHoriz = [&]() noexcept -> bool {
+    auto intersectsMaxHoriz = [&]() noexcept -> bool {
         return ((winfo.isMaxHoriz()
                  || (view->screen() && view->screen()->availableSize().width() <= \
winfo.geometry().width()))  && intersects(winfo));
@@ -501,8 +496,8 @@ void VisibilityManagerPrivate::dodgeMaximized(WindowId wid)
     //! don't send false raiseDock signal when containing mouse, // Johan comment
     //! I dont know why that wasnt winfo.wid() //active window, but just wid//the window that \
                made the call
     if (wm->isOnCurrentDesktop(winfo.wid()) && wm->isOnCurrentActivity(winfo.wid())) {
-        raiseDock(view->formFactor() == Plasma::Types::Vertical
-                  ? !isMaxHoriz() : !isMaxVert());
+        bool overlapsMaximized{view->formFactor() == Plasma::Types::Vertical ? \
intersectsMaxHoriz() : intersectsMaxVert()}; +        raiseDock(!overlapsMaximized);
     }
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic