From 27c1f61f1189bd873a16830227ae8cdb34b82ecd Mon Sep 17 00:00:00 2001 From: reionwong Date: Sun, 13 Jun 2021 03:49:05 +0800 Subject: [PATCH] Add checked effect to global menu items --- qml/StandardItem.qml | 5 +++++ qml/main.qml | 7 ++++++- src/appmenu/appmenuapplet.cpp | 17 +---------------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/qml/StandardItem.qml b/qml/StandardItem.qml index a064195..baa2937 100644 --- a/qml/StandardItem.qml +++ b/qml/StandardItem.qml @@ -29,6 +29,7 @@ Item { id: control property string popupText: "" + property bool checked: false signal clicked signal rightClicked @@ -69,6 +70,10 @@ Item { radius: FishUI.Theme.smallRadius color: { + if (control.checked) { + return (FishUI.Theme.darkMode) ? Qt.rgba(255, 255, 255, 0.2) : Qt.rgba(0, 0, 0, 0.1) + } + if (_mouseArea.containsMouse) { if (_mouseArea.containsPress) return (FishUI.Theme.darkMode) ? Qt.rgba(255, 255, 255, 0.3) : Qt.rgba(0, 0, 0, 0.2) diff --git a/qml/main.qml b/qml/main.qml index 0611534..b73a0b2 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -126,15 +126,20 @@ Item { id: _menuItem width: _actionText.width + FishUI.Units.largeSpacing height: ListView.view.height + checked: appMenuApplet.currentIndex === index onClicked: { appMenuApplet.trigger(_menuItem, index) + + checked = Qt.binding(function() { + return appMenuApplet.currentIndex === index + }) } Text { id: _actionText anchors.centerIn: parent - color: FishUI.Theme.textColor + color: FishUI.Theme.darkMode ? 'white' : 'black' text: { var text = activeMenu text = text.replace(/([^&]*)&(.)([^&]*)/g, function (match, p1, p2, p3) { diff --git a/src/appmenu/appmenuapplet.cpp b/src/appmenu/appmenuapplet.cpp index 114d599..ed4502e 100644 --- a/src/appmenu/appmenuapplet.cpp +++ b/src/appmenu/appmenuapplet.cpp @@ -217,27 +217,12 @@ bool AppMenuApplet::eventFilter(QObject *watched, QEvent *event) const QPointF &windowLocalPos = m_buttonGrid->window()->mapFromGlobal(e->globalPos()); const QPointF &buttonGridLocalPos = m_buttonGrid->mapFromScene(windowLocalPos); + // Reduce the number of transmission signal. if (buttonGridLocalPos.x() < m_buttonGrid->window()->x() || buttonGridLocalPos.y() > m_buttonGrid->window()->height()) return false; emit mousePosChanged(buttonGridLocalPos.x(), buttonGridLocalPos.y()); - - // FIXME the panel margin breaks Fitt's law :( -// const QPointF &windowLocalPos = m_buttonGrid->window()->mapFromGlobal(e->globalPos()); -// const QPointF &buttonGridLocalPos = m_buttonGrid->mapFromScene(windowLocalPos); -// auto *item = m_buttonGrid->childAt(buttonGridLocalPos.x(), buttonGridLocalPos.y()); -// if (!item) { -// return false; -// } - -// bool ok; -// const int buttonIndex = item->property("index").toInt(&ok); -// if (!ok) { -// return false; -// } - -// emit requestActivateIndex(buttonIndex); } return false;