diff --git a/imports/NeoChat/Panel/RoomDrawer.qml b/imports/NeoChat/Panel/RoomDrawer.qml
index 89294250e..21e894553 100644
--- a/imports/NeoChat/Panel/RoomDrawer.qml
+++ b/imports/NeoChat/Panel/RoomDrawer.qml
@@ -18,6 +18,46 @@ Kirigami.OverlayDrawer {
id: roomDrawer
readonly property var room: RoomManager.currentRoom
+ width: modal ? undefined : actualWidth
+ readonly property int minWidth: Kirigami.Units.gridUnit * 15
+ readonly property int maxWidth: Kirigami.Units.gridUnit * 25
+ readonly property int defaultWidth: Kirigami.Units.gridUnit * 20
+ property int actualWidth: {
+ if (Config.roomDrawerWidth === -1) {
+ return Kirigami.Units.gridUnit * 20;
+ } else {
+ return Config.roomDrawerWidth
+ }
+ }
+
+ MouseArea {
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.right: undefined
+ width: 2
+ z: 500
+ cursorShape: !Kirigami.Settings.isMobile ? Qt.SplitHCursor : undefined
+ enabled: true
+ visible: true
+ onPressed: _lastX = mapToGlobal(mouseX, mouseY).x
+ onReleased: {
+ Config.roomDrawerWidth = roomDrawer.actualWidth;
+ Config.save();
+ }
+ property real _lastX: -1
+
+ onPositionChanged: {
+ if (_lastX === -1) {
+ return;
+ }
+ if (Qt.application.layoutDirection === Qt.RightToLeft) {
+ roomDrawer.actualWidth = Math.min(roomDrawer.maxWidth, Math.max(roomDrawer.minWidth, Config.roomDrawerWidth - _lastX + mapToGlobal(mouseX, mouseY).x))
+ } else {
+ roomDrawer.actualWidth = Math.min(roomDrawer.maxWidth, Math.max(roomDrawer.minWidth, Config.roomDrawerWidth + _lastX - mapToGlobal(mouseX, mouseY).x))
+ }
+ }
+ }
enabled: true
edge: Qt.application.layoutDirection == Qt.RightToLeft ? Qt.LeftEdge : Qt.RightEdge
@@ -30,7 +70,6 @@ Kirigami.OverlayDrawer {
active: roomDrawer.drawerOpen
sourceComponent: ColumnLayout {
id: columnLayout
- anchors.fill: parent
spacing: 0
Kirigami.AbstractApplicationHeader {
Layout.fillWidth: true
@@ -78,67 +117,61 @@ Kirigami.OverlayDrawer {
}
}
- Control {
+ ColumnLayout {
Layout.fillWidth: true
- padding: Kirigami.Units.largeSpacing
- contentItem: ColumnLayout {
- id: infoLayout
+ Layout.margins: Kirigami.Units.largeSpacing
+ Kirigami.Heading {
+ text: i18n("Room information")
+ level: 3
+ }
+ RowLayout {
Layout.fillWidth: true
- Kirigami.Heading {
- text: i18n("Room information")
- level: 3
+ Layout.margins: Kirigami.Units.largeSpacing
+
+ spacing: Kirigami.Units.largeSpacing
+
+ Kirigami.Avatar {
+ Layout.preferredWidth: Kirigami.Units.gridUnit * 3.5
+ Layout.preferredHeight: Kirigami.Units.gridUnit * 3.5
+
+ name: room ? room.name : i18n("No name")
+ source: room ? ("image://mxc/" + room.avatarMediaId) : ""
}
- RowLayout {
+
+ ColumnLayout {
Layout.fillWidth: true
- Layout.margins: Kirigami.Units.largeSpacing
+ Layout.alignment: Qt.AlignVCenter
+ spacing: 0
- spacing: Kirigami.Units.largeSpacing
-
- Kirigami.Avatar {
- Layout.preferredWidth: Kirigami.Units.gridUnit * 3.5
- Layout.preferredHeight: Kirigami.Units.gridUnit * 3.5
-
- name: room ? room.name : i18n("No name")
- source: room ? ("image://mxc/" + room.avatarMediaId) : ""
- }
-
- ColumnLayout {
+ Kirigami.Heading {
+ Layout.maximumWidth: Kirigami.Units.gridUnit * 9
Layout.fillWidth: true
- Layout.alignment: Qt.AlignVCenter
- spacing: 0
-
- Kirigami.Heading {
- Layout.maximumWidth: Kirigami.Units.gridUnit * 9
- Layout.fillWidth: true
- level: 1
- font.bold: true
- wrapMode: Label.Wrap
- text: room ? room.displayName : i18n("No name")
- }
- Label {
- Layout.fillWidth: true
- text: room && room.canonicalAlias ? room.canonicalAlias : i18n("No Canonical Alias")
- }
+ level: 1
+ font.bold: true
+ wrapMode: Label.Wrap
+ text: room ? room.displayName : i18n("No name")
+ }
+ Label {
+ Layout.fillWidth: true
+ text: room && room.canonicalAlias ? room.canonicalAlias : i18n("No Canonical Alias")
}
}
+ }
- TextEdit {
- Layout.maximumWidth: Kirigami.Units.gridUnit * 13
- Layout.preferredWidth: Kirigami.Units.gridUnit * 13
- Layout.fillWidth: true
- text: room && room.topic ? room.topic.replace(replaceLinks, "$1") : i18n("No Topic")
- readonly property var replaceLinks: /\(https:\/\/[^ ]*\)/
- textFormat: TextEdit.MarkdownText
- wrapMode: Text.WordWrap
- selectByMouse: true
- color: Kirigami.Theme.textColor
- onLinkActivated: Qt.openUrlExternally(link)
- readOnly: true
- MouseArea {
- anchors.fill: parent
- acceptedButtons: Qt.NoButton
- cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor
- }
+ TextEdit {
+ Layout.fillWidth: true
+ text: room && room.topic ? room.topic.replace(replaceLinks, "$1") : i18n("No Topic")
+ readonly property var replaceLinks: /\(https:\/\/[^ ]*\)/
+ textFormat: TextEdit.MarkdownText
+ wrapMode: Text.WordWrap
+ selectByMouse: true
+ color: Kirigami.Theme.textColor
+ onLinkActivated: Qt.openUrlExternally(link)
+ readOnly: true
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.NoButton
+ cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor
}
}
}
diff --git a/qml/main.qml b/qml/main.qml
index c4c8e3cdb..36d8f0544 100644
--- a/qml/main.qml
+++ b/qml/main.qml
@@ -151,7 +151,6 @@ Kirigami.ApplicationWindow {
contextDrawer: RoomDrawer {
id: contextDrawer
- contentItem.implicitWidth: columnWidth
edge: Qt.application.layoutDirection == Qt.RightToLeft ? Qt.LeftEdge : Qt.RightEdge
modal: !root.wideScreen || !enabled
onEnabledChanged: drawerOpen = enabled && !modal
diff --git a/src/neochatconfig.kcfg b/src/neochatconfig.kcfg
index dc9c99e6f..f3771e8b0 100644
--- a/src/neochatconfig.kcfg
+++ b/src/neochatconfig.kcfg
@@ -48,6 +48,9 @@
-1
+
+ -1
+