From 2b5a29a6b855f4c4fc385868deefec9eb2c5e77c Mon Sep 17 00:00:00 2001 From: John Zimmermann Date: Sat, 3 Apr 2021 17:41:47 +0200 Subject: [PATCH] plasma-workspace: partially revert panelspacer to old behaviour to prevent a crash on musl --- .../files/panelspacer-musl.patch | 170 ++++++++++++++++++ srcpkgs/plasma-workspace/template | 8 +- 2 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/plasma-workspace/files/panelspacer-musl.patch diff --git a/srcpkgs/plasma-workspace/files/panelspacer-musl.patch b/srcpkgs/plasma-workspace/files/panelspacer-musl.patch new file mode 100644 index 000000000000..14e6ecb3f587 --- /dev/null +++ b/srcpkgs/plasma-workspace/files/panelspacer-musl.patch @@ -0,0 +1,170 @@ +This is essentially a revert to the behaviour pre 7b3b06a48576835df0386b0bc29bb325e53a04ed +The "new" one crashes on both 32bit and musl Systems. +--- +--- applets/panelspacer/package/contents/ui/main.qml 2021-04-03 16:45:02.282366207 +0200 ++++ - 2021-04-03 17:33:41.066971468 +0200 +@@ -17,156 +17,38 @@ + * You chenterX have received a copy of the GNU General Public License + * along with this program. If not, see + */ +- + import QtQuick 2.0 + import QtQuick.Layouts 1.1 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.plasma.plasmoid 2.0 +-import org.kde.kirigami 2.10 as Kirigami ++import org.kde.kquickcontrolsaddons 2.0 as KQuickControlsAddons + + Item { + id: root + ++ z: 9999 + property bool horizontal: plasmoid.formFactor !== PlasmaCore.Types.Vertical + + Layout.fillWidth: plasmoid.configuration.expanding + Layout.fillHeight: plasmoid.configuration.expanding + +- Layout.minimumWidth: plasmoid.nativeInterface.containment.editMode ? units.gridUnit * 2 : 1 +- Layout.minimumHeight: plasmoid.nativeInterface.containment.editMode ? units.gridUnit * 2 : 1 +- Layout.preferredWidth: horizontal +- ? (plasmoid.configuration.expanding ? optimalSize : plasmoid.configuration.length) +- : 0 +- Layout.preferredHeight: horizontal +- ? 0 +- : (plasmoid.configuration.expanding ? optimalSize : plasmoid.configuration.length) ++ Layout.minimumWidth: 1 ++ Layout.minimumHeight: 1 ++ Layout.preferredWidth: horizontal ? plasmoid.configuration.length : 0 ++ Layout.preferredHeight: horizontal ? 0 : plasmoid.configuration.length + + Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation + +- property int optimalSize: units.largeSpacing +- + function action_expanding() { + plasmoid.configuration.expanding = plasmoid.action("expanding").checked; + } +- +- // Search the actual gridLayout of the panel +- property GridLayout panelLayout: { +- var candidate = root.parent; +- while (candidate) { +- if (candidate instanceof GridLayout) { +- return candidate; +- } +- candidate = candidate.parent; +- } +- } +- + Component.onCompleted: { + plasmoid.setAction("expanding", i18n("Set flexible size")); + var action = plasmoid.action("expanding"); + action.checkable = true; +- action.checked = Qt.binding(function() {return plasmoid.configuration.expanding}); ++ action.checked = plasmoid.configuration.expanding; + + plasmoid.removeAction("configure"); + } +- +- property real leftItemsSizeHint: 0 +- property real rightItemsSizeHint: 0 +- property real middleItemsSizeHint: { +- // Every time this binding gets reevaluated we want to queue a recomputation of the size hints +- Qt.callLater(root.updateHints) +- if (!twinSpacer || !panelLayout || !leftTwin || !rightTwin) { +- return 0; +- } +- +- var leftTwinParent = leftTwin.parent; +- var rightTwinParent = rightTwin.parent; +- if (!leftTwinParent || !rightTwinParent) { +- return 0; +- } +- var firstSpacerFound = false; +- var secondSpacerFound = false; +- var leftItemsHint = 0; +- var middleItemsHint = 0; +- var rightItemsHint = 0; +- +- // Children order is guaranteed to be the same as the visual order of items in the layout +- for (var i in panelLayout.children) { +- var child = panelLayout.children[i]; +- if (!child.visible) { +- continue; +- } else if (child == leftTwinParent) { +- firstSpacerFound = true; +- } else if (child == rightTwinParent) { +- secondSpacerFound = true; +- } else if (secondSpacerFound) { +- if (root.horizontal) { +- rightItemsHint += Math.min(child.Layout.maximumWidth, Math.max(child.Layout.minimumWidth, child.Layout.preferredWidth)) + panelLayout.rowSpacing; +- } else { +- rightItemsHint += Math.min(child.Layout.maximumWidth, Math.max(child.Layout.minimumHeight, child.Layout.preferredHeight)) + panelLayout.columnSpacing; +- } +- } else if (firstSpacerFound) { +- if (root.horizontal) { +- middleItemsHint += Math.min(child.Layout.maximumWidth, Math.max(child.Layout.minimumWidth, child.Layout.preferredWidth)) + panelLayout.rowSpacing; +- } else { +- middleItemsHint += Math.min(child.Layout.maximumWidth, Math.max(child.Layout.minimumHeight, child.Layout.preferredHeight)) + panelLayout.columnSpacing; +- } +- } else { +- if (root.horizontal) { +- leftItemsHint += Math.min(child.Layout.maximumWidth, Math.max(child.Layout.minimumWidth, child.Layout.preferredWidth)) + panelLayout.rowSpacing; +- } else { +- leftItemsHint += Math.min(child.Layout.maximumHeight, Math.max(child.Layout.minimumHeight, child.Layout.preferredHeight)) + panelLayout.columnSpacing; +- } +- } +- } +- +- rightItemsSizeHint = rightItemsHint; +- leftItemsSizeHint = leftItemsHint; +- return middleItemsHint; +- } +- +- readonly property Item twinSpacer: plasmoid.configuration.expanding && plasmoid.nativeInterface.twinSpacer && plasmoid.nativeInterface.twinSpacer.configuration.expanding ? plasmoid.nativeInterface.twinSpacer : null +- readonly property Item leftTwin: { +- if (!twinSpacer) { +- return null; +- } +- +- if (root.horizontal) { +- return root.Kirigami.ScenePosition.x < twinSpacer.Kirigami.ScenePosition.x ? plasmoid : twinSpacer; +- } else { +- return root.Kirigami.ScenePosition.y < twinSpacer.Kirigami.ScenePosition.y ? plasmoid : twinSpacer; +- } +- } +- readonly property Item rightTwin: { +- if (!twinSpacer) { +- return null; +- } +- +- if (root.horizontal) { +- return root.Kirigami.ScenePosition.x >= twinSpacer.Kirigami.ScenePosition.x ? plasmoid : twinSpacer; +- } else { +- return root.Kirigami.ScenePosition.y >= twinSpacer.Kirigami.ScenePosition.y ? plasmoid : twinSpacer; +- } +- } +- +- function updateHints() { +- if (!twinSpacer || !panelLayout || !leftTwin || !rightTwin) { +- root.optimalSize = root.horizontal ? plasmoid.nativeInterface.containment.width : plasmoid.nativeInterface.containment.height; +- return; +- } +- +- var halfContainment = root.horizontal ?plasmoid.nativeInterface.containment.width/2 : plasmoid.nativeInterface.containment.height/2; +- +- if (leftTwin == plasmoid) { +- root.optimalSize = Math.max(units.smallSpacing, halfContainment - middleItemsSizeHint/2 - leftItemsSizeHint) +- } else { +- root.optimalSize = Math.max(units.smallSpacing, halfContainment - middleItemsSizeHint/2 - rightItemsSizeHint) +- } +- } +- +- +- Rectangle { +- anchors.fill: parent +- color: theme.highlightColor +- visible: plasmoid.nativeInterface.containment.editMode +- } + } ++ diff --git a/srcpkgs/plasma-workspace/template b/srcpkgs/plasma-workspace/template index 15366088e54a..04d38d6ba22a 100644 --- a/srcpkgs/plasma-workspace/template +++ b/srcpkgs/plasma-workspace/template @@ -1,7 +1,7 @@ # Template file for 'plasma-workspace' pkgname=plasma-workspace version=5.21.3 -revision=1 +revision=2 build_style=cmake configure_args="-DBUILD_TESTING=OFF -DWaylandScanner_EXECUTABLE=/usr/bin/wayland-scanner" hostmakedepends="extra-cmake-modules iso-codes pkg-config kdoctools kcoreaddons @@ -29,6 +29,12 @@ if [ "$CROSS_BUILD" ]; then configure_args+=" -DKF5_HOST_TOOLING=/usr/lib/cmake" fi +post_patch() { + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + patch -Np0 < $FILESDIR/panelspacer-musl.patch + fi +} + kworkspace_package() { short_desc="Plasma Workspace Library for KF5" pkg_install() {