summary refs log tree commit diff
diff options
context:
space:
mode:
authorShootingStarDragons <ShootingStarDragons@protonmail.com>2023-01-23 20:15:43 +0800
committerShootingStarDragons <ShootingStarDragons@protonmail.com>2023-01-23 20:15:43 +0800
commit7d95ac23cecdec48b3c84a42afdfbed5b6d870a8 (patch)
treec48f00798c50a6b2a07a695b0bb1bf4fb18e0daf
parentWarn when no secret can be requested (diff)
downloadnheko-7d95ac23cecdec48b3c84a42afdfbed5b6d870a8.tar.xz
feat: hide all popup menus when press leftbutton on somewhere else
Log: according to the bug on https://bugreports.qt.io/browse/QTBUG-83972, The menu will always stay if not click one of the item. So I try to make a hack for it, wait qt solve it someday
-rw-r--r--resources/qml/MessageView.qml8
-rw-r--r--resources/qml/RoomList.qml9
-rw-r--r--resources/qml/TopBar.qml8
-rw-r--r--src/MainWindow.cpp10
-rw-r--r--src/MainWindow.h4
5 files changed, 39 insertions, 0 deletions
diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml

index 6d5ee404..f8c65a8d 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml
@@ -25,6 +25,14 @@ Item { property string searchString: "" + // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu + Connections { + function onHideMenu() { + messageContextMenu.close() + } + target: MainWindow + } + ScrollBar { id: scrollbar parent: chat.parent diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml
index 40ecdd34..348d104f 100644 --- a/resources/qml/RoomList.qml +++ b/resources/qml/RoomList.qml
@@ -20,6 +20,15 @@ Page { property int avatarSize: Math.ceil(fontMetrics.lineSpacing * 2.3) property bool collapsed: false + // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu + Connections { + function onHideMenu() { + userInfoMenu.close() + roomContextMenu.close() + } + target: MainWindow + } + Component { id: roomDirectoryComponent diff --git a/resources/qml/TopBar.qml b/resources/qml/TopBar.qml
index 4a52d234..23a7f149 100644 --- a/resources/qml/TopBar.qml +++ b/resources/qml/TopBar.qml
@@ -30,6 +30,14 @@ Pane { property string searchString: "" + // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu + Connections { + function onHideMenu() { + roomOptionsMenu.close() + } + target: MainWindow + } + onRoomIdChanged: { searchString = ""; searchButton.searchActive = false; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index dcb4be49..5c92fb5b 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp
@@ -359,6 +359,16 @@ MainWindow::event(QEvent *event) return QQuickView::event(event); } +// HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu +void +MainWindow::mousePressEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + emit hideMenu(); + } + return QQuickView::mousePressEvent(event); +} + void MainWindow::restoreWindowSize() { diff --git a/src/MainWindow.h b/src/MainWindow.h
index 1664f849..bb23ff11 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h
@@ -69,6 +69,8 @@ public: protected: void closeEvent(QCloseEvent *event); bool event(QEvent *event) override; + // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu + void mousePressEvent(QMouseEvent *) override; private slots: //! Handle interaction with the tray icon. @@ -77,6 +79,8 @@ private slots: virtual void setWindowTitle(int notificationCount); signals: + // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu + void hideMenu(); void reload(); void secretsChanged();