From c2e72b7f6752910bbe5d6f9688b0669fb6081016 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 12 Feb 2018 20:19:46 +0200 Subject: [PATCH] do not update struts during location change --- app/dock/dockview.cpp | 5 +++++ app/dock/dockview.h | 2 ++ app/dock/visibilitymanager.cpp | 5 ++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/dock/dockview.cpp b/app/dock/dockview.cpp index b0a987739..ad929c559 100644 --- a/app/dock/dockview.cpp +++ b/app/dock/dockview.cpp @@ -1443,6 +1443,11 @@ void DockView::moveToLayout(QString layoutName) } } +bool DockView::inLocationChangeAnimation() +{ + return ((m_goToLocation != Plasma::Types::Floating) || (m_moveToLayout != "") || m_goToScreen); +} + void DockView::hideDockDuringLocationChange(int goToLocation) { m_goToLocation = static_cast(goToLocation); diff --git a/app/dock/dockview.h b/app/dock/dockview.h index 963d042fa..fdc10d5b2 100644 --- a/app/dock/dockview.h +++ b/app/dock/dockview.h @@ -171,6 +171,8 @@ public: QRect absGeometry() const; QRect screenGeometry() const; + bool inLocationChangeAnimation(); + Plasma::FrameSvg::EnabledBorders enabledBorders() const; QString currentScreen() const; diff --git a/app/dock/visibilitymanager.cpp b/app/dock/visibilitymanager.cpp index 81ef9d848..5b06c0974 100644 --- a/app/dock/visibilitymanager.cpp +++ b/app/dock/visibilitymanager.cpp @@ -125,11 +125,10 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode) }); connections[1] = connect(dockView, &DockView::inEditModeChanged , this, [&]() { - if (!dockView->inEditMode() && view->screen()) + if (!dockView->inEditMode() && !dockView->inLocationChangeAnimation() && view->screen()) wm->setDockStruts(*view, dockGeometry, view->containment()->location()); }); - if (dockCorona && dockCorona->layoutManager()->memoryUsage() == Dock::MultipleLayouts) { connections[2] = connect(dockCorona->activitiesConsumer(), &KActivities::Consumer::currentActivityChanged, this, [&]() { updateStrutsBasedOnLayoutsAndActivities(); @@ -204,7 +203,7 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode) void VisibilityManagerPrivate::updateStrutsBasedOnLayoutsAndActivities() { bool multipleLayoutsAndCurrent = (dockCorona->layoutManager()->memoryUsage() == Dock::MultipleLayouts - && dockView->managedLayout() + && dockView->managedLayout() && !dockView->inLocationChangeAnimation() && dockView->managedLayout()->name() == dockCorona->layoutManager()->currentLayoutName()); if (dockCorona->layoutManager()->memoryUsage() == Dock::SingleLayout || multipleLayoutsAndCurrent) {