124 lines
4.7 KiB
Diff
124 lines
4.7 KiB
Diff
SPDX-FileCopyrightText: 2025 Tobias Fella <tobias.fella@kde.org>
|
|
SPDX-License-Identifier: BSD-2-Clause
|
|
From ca72345b8ee550be2172d8ac5e5dc9e4c2b508c9 Mon Sep 17 00:00:00 2001
|
|
From: Tobias Fella <tobias.fella@kde.org>
|
|
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
|
|
|