Add checked effect to global menu items

pull/7/head
reionwong 4 years ago
parent 0957cbeef6
commit 27c1f61f11

@ -29,6 +29,7 @@ Item {
id: control id: control
property string popupText: "" property string popupText: ""
property bool checked: false
signal clicked signal clicked
signal rightClicked signal rightClicked
@ -69,6 +70,10 @@ Item {
radius: FishUI.Theme.smallRadius radius: FishUI.Theme.smallRadius
color: { 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.containsMouse) {
if (_mouseArea.containsPress) if (_mouseArea.containsPress)
return (FishUI.Theme.darkMode) ? Qt.rgba(255, 255, 255, 0.3) : Qt.rgba(0, 0, 0, 0.2) return (FishUI.Theme.darkMode) ? Qt.rgba(255, 255, 255, 0.3) : Qt.rgba(0, 0, 0, 0.2)

@ -126,15 +126,20 @@ Item {
id: _menuItem id: _menuItem
width: _actionText.width + FishUI.Units.largeSpacing width: _actionText.width + FishUI.Units.largeSpacing
height: ListView.view.height height: ListView.view.height
checked: appMenuApplet.currentIndex === index
onClicked: { onClicked: {
appMenuApplet.trigger(_menuItem, index) appMenuApplet.trigger(_menuItem, index)
checked = Qt.binding(function() {
return appMenuApplet.currentIndex === index
})
} }
Text { Text {
id: _actionText id: _actionText
anchors.centerIn: parent anchors.centerIn: parent
color: FishUI.Theme.textColor color: FishUI.Theme.darkMode ? 'white' : 'black'
text: { text: {
var text = activeMenu var text = activeMenu
text = text.replace(/([^&]*)&(.)([^&]*)/g, function (match, p1, p2, p3) { text = text.replace(/([^&]*)&(.)([^&]*)/g, function (match, p1, p2, p3) {

@ -217,27 +217,12 @@ bool AppMenuApplet::eventFilter(QObject *watched, QEvent *event)
const QPointF &windowLocalPos = m_buttonGrid->window()->mapFromGlobal(e->globalPos()); const QPointF &windowLocalPos = m_buttonGrid->window()->mapFromGlobal(e->globalPos());
const QPointF &buttonGridLocalPos = m_buttonGrid->mapFromScene(windowLocalPos); const QPointF &buttonGridLocalPos = m_buttonGrid->mapFromScene(windowLocalPos);
// Reduce the number of transmission signal.
if (buttonGridLocalPos.x() < m_buttonGrid->window()->x() || if (buttonGridLocalPos.x() < m_buttonGrid->window()->x() ||
buttonGridLocalPos.y() > m_buttonGrid->window()->height()) buttonGridLocalPos.y() > m_buttonGrid->window()->height())
return false; return false;
emit mousePosChanged(buttonGridLocalPos.x(), buttonGridLocalPos.y()); 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; return false;

Loading…
Cancel
Save