diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-03-01 21:07:44 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-04 12:47:36 +0100 |
commit | a238a5ad5afabbae6682b0f376f4e39611108bdf (patch) | |
tree | ef089cf8807e56dc0de02728b6fc8686246139aa /src/controls/MenuBar.qml | |
parent | 658ea07229c01405de473265f293e7d39e2b348c (diff) | |
download | qtquickcontrols-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.qml | 42 |
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 |