diff options
Diffstat (limited to 'kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch')
-rw-r--r-- | kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch new file mode 100644 index 000000000000..d77187409738 --- /dev/null +++ b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch @@ -0,0 +1,126 @@ +From 9f19af95e9699420b057b6ff7e99968faf8948a3 Mon Sep 17 00:00:00 2001 +From: David Edmundson <kde@davidedmundson.co.uk> +Date: Fri, 3 Dec 2021 16:34:40 +0000 +Subject: [PATCH] containments/panel: Fix initial sizing + +Timers for anything that affect layouts are universally wrong. + +Ultimately this breaks layouts internal usage of QQmlParserStatus. For +runtime changes layout internally most relayouting is buffered +internally till the polish event which is once per frame. + +Removing this makes startup faster, less glitchy and more declarative. + + +(cherry picked from commit b2fd1578a0063938a3eda8d8e41f14394b7635f7) +--- + containments/panel/contents/ui/main.qml | 34 ++++++------------------- + 1 file changed, 8 insertions(+), 26 deletions(-) + +diff --git a/containments/panel/contents/ui/main.qml b/containments/panel/contents/ui/main.qml +index 0a5477476..9b5656acf 100644 +--- a/containments/panel/contents/ui/main.qml ++++ b/containments/panel/contents/ui/main.qml +@@ -154,14 +154,12 @@ function checkLastSpacer() { + + //BEGIN connections + Component.onCompleted: { +- currentLayout.isLayoutHorizontal = isHorizontal + LayoutManager.plasmoid = plasmoid; + LayoutManager.root = root; + LayoutManager.layout = currentLayout; + LayoutManager.lastSpacer = lastSpacer; + LayoutManager.marginHighlights = []; + LayoutManager.restore(); +- containmentSizeSyncTimer.restart(); + + plasmoid.action("configure").visible = Qt.binding(function() { + return !plasmoid.immutable; +@@ -200,7 +198,6 @@ function checkLastSpacer() { + event.accept(event.proposedAction); + root.fixedWidth = 0; + root.fixedHeight = 0; +- containmentSizeSyncTimer.restart(); + } + + +@@ -215,8 +212,6 @@ function checkLastSpacer() { + } + + Plasmoid.onUserConfiguringChanged: { +- containmentSizeSyncTimer.restart(); +- + if (plasmoid.immutable) { + if (dragOverlay) { + dragOverlay.destroy(); +@@ -245,11 +240,7 @@ function checkLastSpacer() { + } + } + +- Plasmoid.onFormFactorChanged: containmentSizeSyncTimer.restart(); +- Containment.onEditModeChanged: containmentSizeSyncTimer.restart(); +- + onToolBoxChanged: { +- containmentSizeSyncTimer.restart(); + if (startupTimer.running) { + startupTimer.restart(); + } +@@ -478,10 +469,16 @@ function checkLastSpacer() { + + GridLayout { + id: currentLayout +- property bool isLayoutHorizontal ++ readonly property bool isLayoutHorizontal: root.isHorizontal + rowSpacing: PlasmaCore.Units.smallSpacing + columnSpacing: PlasmaCore.Units.smallSpacing + ++ x: (isLayoutHorizontal && root.toolBox && Qt.application.layoutDirection === Qt.RightToLeft && plasmoid.editMode) ? root.toolBox.width : 0; ++ y: 0 ++ ++ width: root.width - (isLayoutHorizontal && root.toolBox && plasmoid.editMode ? root.toolBox.width : 0) ++ height: root.height - (!isLayoutHorizontal && root.toolBox && plasmoid.editMode ? root.toolBox.height : 0) ++ + Layout.preferredWidth: { + var width = 0; + for (var i = 0, length = currentLayout.children.length; i < length; ++i) { +@@ -505,36 +502,21 @@ function checkLastSpacer() { + rows: 1 + columns: 1 + //when horizontal layout top-to-bottom, this way it will obey our limit of one row and actually lay out left to right +- flow: isHorizontal ? GridLayout.TopToBottom : GridLayout.LeftToRight ++ flow: isLayoutHorizontal ? GridLayout.TopToBottom : GridLayout.LeftToRight + layoutDirection: Qt.application.layoutDirection + } + + onWidthChanged: { +- containmentSizeSyncTimer.restart() + if (startupTimer.running) { + startupTimer.restart(); + } + } + onHeightChanged: { +- containmentSizeSyncTimer.restart() + if (startupTimer.running) { + startupTimer.restart(); + } + } + +- Timer { +- id: containmentSizeSyncTimer +- interval: 150 +- onTriggered: { +- dndSpacer.parent = root; +- currentLayout.x = (isHorizontal && toolBox && Qt.application.layoutDirection === Qt.RightToLeft && plasmoid.editMode) ? toolBox.width : 0; +- currentLayout.y = 0 +- currentLayout.width = root.width - (isHorizontal && toolBox && plasmoid.editMode ? toolBox.width : 0) +- currentLayout.height = root.height - (!isHorizontal && toolBox && plasmoid.editMode ? toolBox.height : 0) +- currentLayout.isLayoutHorizontal = isHorizontal +- } +- } +- + //FIXME: I don't see other ways at the moment a way to see when the UI is REALLY ready + Timer { + id: startupTimer +-- +GitLab + |