diff --git a/.flatpak-manifest.json b/.flatpak-manifest.json index 78c45275f..8fe801f22 100644 --- a/.flatpak-manifest.json +++ b/.flatpak-manifest.json @@ -190,6 +190,10 @@ { "type": "patch", "path": "patches/0001-Revert-Bump-KF6-dependency-version.patch" + }, + { + "type": "patch", + "path": "patches/0001-Revert-Use-new-Kirigami-builtin-column-resize-handle.patch" } ] } diff --git a/patches/0001-Revert-Use-new-Kirigami-builtin-column-resize-handle.patch b/patches/0001-Revert-Use-new-Kirigami-builtin-column-resize-handle.patch new file mode 100644 index 000000000..40ea0dfc9 --- /dev/null +++ b/patches/0001-Revert-Use-new-Kirigami-builtin-column-resize-handle.patch @@ -0,0 +1,123 @@ +SPDX-FileCopyrightText: 2025 Tobias Fella +SPDX-License-Identifier: BSD-2-Clause +From ca72345b8ee550be2172d8ac5e5dc9e4c2b508c9 Mon Sep 17 00:00:00 2001 +From: Tobias Fella +Date: Sun, 17 Aug 2025 20:00:08 +0200 +Subject: [PATCH] Revert "Use new Kirigami builtin column resize handle" + +This reverts commit de97275a387abcbca6fcb185bcbd1b69c30f5c66. +--- + src/app/qml/Main.qml | 1 - + src/rooms/RoomListPage.qml | 70 +++++++++++++++++++++++++++++--------- + 2 files changed, 54 insertions(+), 17 deletions(-) + +diff --git a/src/app/qml/Main.qml b/src/app/qml/Main.qml +index ea8955674..6eed271c1 100644 +--- a/src/app/qml/Main.qml ++++ b/src/app/qml/Main.qml +@@ -45,7 +45,6 @@ Kirigami.ApplicationWindow { + showExisting: true + onConnectionChosen: root.load() + } +- columnView.columnResizeMode: pageStack.wideMode ? Kirigami.ColumnView.DynamicColumns : Kirigami.ColumnView.SingleColumn + globalToolBar.canContainHandles: true + globalToolBar { + style: Kirigami.ApplicationHeaderStyle.ToolBar +diff --git a/src/rooms/RoomListPage.qml b/src/rooms/RoomListPage.qml +index 2ac211fd5..f5586d789 100644 +--- a/src/rooms/RoomListPage.qml ++++ b/src/rooms/RoomListPage.qml +@@ -17,22 +17,13 @@ import org.kde.neochat + Kirigami.Page { + id: root + +- Kirigami.ColumnView.interactiveResizeEnabled: true +- Kirigami.ColumnView.minimumWidth: _private.collapsedSize + spaceDrawer.width + 1 +- Kirigami.ColumnView.maximumWidth: _private.defaultWidth + spaceDrawer.width + 1 +- Kirigami.ColumnView.onInteractiveResizingChanged: { +- if (!Kirigami.ColumnView.interactiveResizing && collapsed) { +- Kirigami.ColumnView.preferredWidth = root.Kirigami.ColumnView.minimumWidth; +- } +- } +- Kirigami.ColumnView.preferredWidth: _private.currentWidth + spaceDrawer.width + 1 +- Kirigami.ColumnView.onPreferredWidthChanged: { +- if (width > _private.collapseWidth) { +- NeoChatConfig.collapsed = false; +- } else if (Kirigami.ColumnView.interactiveResizing) { +- NeoChatConfig.collapsed = true; +- } +- } ++ /** ++ * @brief The current width of the room list. ++ * ++ * @note Other objects can access the value but the private function makes sure ++ * that only the internal members can modify it. ++ */ ++ readonly property int currentWidth: _private.currentWidth + spaceDrawer.width + 1 + + required property NeoChatConnection connection + +@@ -40,6 +31,10 @@ Kirigami.Page { + + signal search + ++ onCurrentWidthChanged: pageStack.defaultColumnWidth = root.currentWidth ++ Component.onCompleted: pageStack.defaultColumnWidth = root.currentWidth ++ ++ + onCollapsedChanged: { + if (collapsed) { + RoomManager.sortFilterRoomTreeModel.filterText = ""; +@@ -252,6 +247,49 @@ Kirigami.Page { + sourceComponent: Kirigami.Settings.isMobile ? exploreComponentMobile : userInfoDesktop + } + ++ MouseArea { ++ anchors.top: parent.top ++ anchors.bottom: parent.bottom ++ parent: applicationWindow().overlay.parent ++ ++ x: root.currentWidth - width / 2 ++ width: Kirigami.Units.smallSpacing * 2 ++ z: root.z + 1 ++ enabled: RoomManager.hasOpenRoom && applicationWindow().width >= Kirigami.Units.gridUnit * 35 ++ visible: enabled ++ cursorShape: Qt.SplitHCursor ++ ++ property int _lastX ++ ++ onPressed: mouse => { ++ _lastX = mouse.x; ++ } ++ onPositionChanged: mouse => { ++ if (_lastX == -1) { ++ return; ++ } ++ if (mouse.x > _lastX) { ++ // we moved to the right ++ if (_private.currentWidth < _private.collapseWidth && _private.currentWidth + (mouse.x - _lastX) >= _private.collapseWidth) { ++ // Here we get back directly to a more wide mode. ++ _private.currentWidth = _private.defaultWidth; ++ NeoChatConfig.collapsed = false; ++ } else if (_private.currentWidth >= _private.collapseWidth) { ++ // Increase page width ++ _private.currentWidth = Math.min(_private.defaultWidth, _private.currentWidth + (mouse.x - _lastX)); ++ } ++ } else if (mouse.x < _lastX) { ++ const tmpWidth = _private.currentWidth - (_lastX - mouse.x); ++ if (tmpWidth < _private.collapseWidth) { ++ _private.currentWidth = Qt.binding(() => _private.collapsedSize); ++ NeoChatConfig.collapsed = true; ++ } else { ++ _private.currentWidth = tmpWidth; ++ } ++ } ++ } ++ } ++ + Component { + id: userInfo + UserInfo { +-- +2.50.1 +