summaryrefslogtreecommitdiff
path: root/src/controls/MenuBar.qml
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-03-01 21:07:44 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-04 12:47:36 +0100
commita238a5ad5afabbae6682b0f376f4e39611108bdf (patch)
treeef089cf8807e56dc0de02728b6fc8686246139aa /src/controls/MenuBar.qml
parent658ea07229c01405de473265f293e7d39e2b348c (diff)
downloadqtquickcontrols-a238a5ad5afabbae6682b0f376f4e39611108bdf.tar.gz
MenuBar: Fix mouse interaction
Used the same pattern as earlier with Menu. Change-Id: Id7a2d791516ba6d827e90c3b3e11f97dd326ccd5 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'src/controls/MenuBar.qml')
-rw-r--r--src/controls/MenuBar.qml42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/controls/MenuBar.qml b/src/controls/MenuBar.qml
index 36c111fd..65cbe1fd 100644
--- a/src/controls/MenuBar.qml
+++ b/src/controls/MenuBar.qml
@@ -140,6 +140,27 @@ MenuBarPrivate {
anchors.fill: parent
hoverEnabled: true
+ onPositionChanged: updateCurrentItem(mouse)
+ onPressed: {
+ menuBarLoader.preselectMenuItem = false
+ menuBarLoader.openedMenuIndex = currentItem.menuItemIndex
+ }
+
+ property Item currentItem: null
+ function updateCurrentItem(mouse) {
+ var pos = mapToItem(row, mouse.x, mouse.y)
+ if (!currentItem || !currentItem.contains(Qt.point(pos.x - currentItem.x, pos.y - currentItem.y))) {
+ var newCurrentItem = row.childAt(pos.x, pos.y)
+ if (!newCurrentItem)
+ return;
+ currentItem = newCurrentItem
+ if (menuBarLoader.openedMenuIndex !== -1) {
+ menuBarLoader.preselectMenuItem = false
+ menuBarLoader.openedMenuIndex = currentItem.menuItemIndex
+ }
+ }
+ }
+
Row {
id: row
@@ -150,27 +171,10 @@ MenuBarPrivate {
id: menuItemLoader
property var menuItem: modelData
- property bool selected: menuItem.__popupVisible || itemMouseArea.pressed || menuBarLoader.openedMenuIndex === index
+ property bool selected: menuItem.__popupVisible || menuBarLoader.openedMenuIndex === index
sourceComponent: menuBarLoader.menuItemStyle
-
- MouseArea {
- id: itemMouseArea
- anchors.fill:parent
- hoverEnabled: true
-
- onClicked: {
- menuBarLoader.preselectMenuItem = false
- menuBarLoader.openedMenuIndex = index
- }
- onPositionChanged: {
- if ((pressed || menuMouseArea.pressed || menuBarLoader.openedMenuIndex !== -1)
- && menuBarLoader.openedMenuIndex !== index) {
- menuBarLoader.openedMenuIndex = index
- menuBarLoader.preselectMenuItem = false
- }
- }
- }
+ property int menuItemIndex: index
Connections {
target: menuBarLoader