diff options
Diffstat (limited to 'kde-plasma/plasma-desktop/files/plasma-desktop-5.25.5-lock-layout.patch')
-rw-r--r-- | kde-plasma/plasma-desktop/files/plasma-desktop-5.25.5-lock-layout.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.25.5-lock-layout.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.25.5-lock-layout.patch new file mode 100644 index 000000000000..292712a8060e --- /dev/null +++ b/kde-plasma/plasma-desktop/files/plasma-desktop-5.25.5-lock-layout.patch @@ -0,0 +1,48 @@ +https://invent.kde.org/plasma/plasma-desktop/-/commit/234cd860532449f017ecbbca6a8caad5473fcf8b + +From 234cd860532449f017ecbbca6a8caad5473fcf8b Mon Sep 17 00:00:00 2001 +From: Marco Martin <notmart@gmail.com> +Date: Sun, 25 Sep 2022 16:27:13 -0500 +Subject: [PATCH] Use relayout locking + +This makes use of the layout locking freature introduced in + +The resize of the layout area can happen either by screen resolution +change or available screen area change (a panel appears or is resized) +This is not an atomic operation, as width and height are usually set in +2 different operations, and even worse the layout area is resized to + match the available one with an animation, so many intermediate resizes +that should never cause a relayout happen. +A compression timer limits the actual relayouts to hopefully one, + but if the system is really slowed down +(for instance, startup) the timer may expire and cause relayouts in +non useful sizes, losing the needed configuration +The lock blocks all relayout and config writes when the size of the +layout area doesn't correspond to corona availablescreenrect, which are +the only "settled" cases. + +BUG:413645 +--- a/containments/desktop/package/contents/ui/main.qml ++++ b/containments/desktop/package/contents/ui/main.qml +@@ -85,10 +85,10 @@ FolderViewDropArea { + topMargin: (isContainment && plasmoid.availableScreenRect) ? plasmoid.availableScreenRect.y : 0 + + rightMargin: (isContainment && plasmoid.availableScreenRect) && parent +- ? parent.width - (plasmoid.availableScreenRect.x + plasmoid.availableScreenRect.width) : 0 ++ ? Math.max(0, parent.width - (plasmoid.availableScreenRect.x + plasmoid.availableScreenRect.width)) : 0 + + bottomMargin: (isContainment && plasmoid.availableScreenRect) && parent +- ? parent.height - (plasmoid.availableScreenRect.y + plasmoid.availableScreenRect.height) : 0 ++ ? Math.max(0, parent.height - (plasmoid.availableScreenRect.y + plasmoid.availableScreenRect.height)) : 0 + } + + Behavior on anchors.topMargin { +@@ -263,6 +263,7 @@ FolderViewDropArea { + ContainmentLayoutManager.AppletsLayout { + id: appletsLayout + anchors.fill: parent ++ relayoutLock: width != plasmoid.availableScreenRect.width || height != plasmoid.availableScreenRect.height + // NOTE: use plasmoid.availableScreenRect and not own width and height as they are updated not atomically + configKey: "ItemGeometries-" + Math.round(plasmoid.screenGeometry.width) + "x" + Math.round(plasmoid.screenGeometry.height) + fallbackConfigKey: plasmoid.availableScreenRect.width > plasmoid.availableScreenRect.height ? "ItemGeometriesHorizontal" : "ItemGeometriesVertical" +GitLab |