aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickmenu.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Add specs about focus propertyNico Vertriest2019-06-181-0/+13
| | | | | | Task-number: QTBUG-75546 Change-Id: I6e672c3a8390c4cf10dc9576cc3bf1eb10a6246b Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Fix MenuItem width not matching Menu's available widthMitch Curtis2019-05-031-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Short version: There are currently two problems with MenuItems: - Mirrored MenuItems don't fill the Menu's available width. - MenuItem does not fill the Menu's available width when changed after Component completion. This patch fixes both of them by listening to geometry changes in both the contentItem and individual menu items, and setting the explicit width of those menu items when either changes. Longer version: The first problem can be seen whenever the MenuItem's implicitWidth changes: - QQmlEngine::retranslate() is called, causing all bindings to be re-evaluated - The MenuItem's font size changes - The MenuItem's icon size changes - etc. We fix this by making Menu listen to the width of each of its MenuItems and call resizeItem() if it doesn't have an explicit width. The second problem can be seen when e.g. resizing a Menu to account for new items that are wider and hence require more space. This can be fixed by listening to width changes in Menu's contentItem, which was actually done in earlier versions but (probably accidentally) removed in 482ecb0f. I had tried to solve both issues by setting the explicit width of MenuItem to the width of its Menu, or undefined if it has none (which means it reverts to its implicit width). However, this does not account for e.g. MenuSeparator and custom items that can be added to Menu - they should also have their width fill the Menu automatically if they don't have an explicit width set. Change-Id: I95dd0da0919a1e297f2e2030da746ff1f1a17644 Fixes: QTBUG-75051 Fixes: QTBUG-75142 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQuickMenu: don't give focus to disabled menu itemsMitch Curtis2019-02-041-2/+2
| | | | | | Change-Id: I7eb394ca3991eae585fbbd8e665c46b11ef64a07 Fixes: QTBUG-70181 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Menu: fix disabled sub-menu items being highlightedMitch Curtis2019-02-041-4/+23
| | | | | | | | | | | When a menu item with a sub-menu was triggered by key or mouse, it would open the sub-menu with the first menu item highlighted. This doesn't make sense for disabled menu items, so this patch makes it find the first enabled item. Change-Id: I9df1c750749e5a77b027b6f476b8ae1f5ea035bd Fixes: QTBUG-69540 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Revert all Menu delegate patchesv5.12.0-rc2v5.12.0-rc1v5.12.0Mitch Curtis2018-11-151-82/+17
| | | | | | | | | | | | | | | | | | | | | This reverts the following commits: d5cb26bc56a3b6f6e99c88654d4f7a65f43551ac - Menu: ensure the correct delegates are used when created via Component d923dd467c1aeb3e195a09949b04862084002f88 - MenuBar: ensure the correct delegates are used when created via Component d56c193eb4ceb640611d66f22e1f26aae91cd7d1 - QQuickPopupPositioner: avoid adding duplicate item change listeners 567a2de8cd493aabe0055d6dbc367b39447e70dd - Stabilize tst_qquickmenubar 953fbac6131823e4fce0eb4707a854469c4c04ff - Fix Instantiator-created MenuItems disappearing 936d31179d44220571ded15840bedeccb581c83b - tst_qquickmenu: add a test for MenuItems before and after a Repeater fc1832810f6c09505d9413685ed0b2d6295bea4a - QQuickMenuBar: fix menu not opening The fix for QTBUG-67559 has caused lots of issues, with the latest being a crash right before the 5.12 release. The bug that they fix is a P2, so it's not worth the hassle. The patches might be able to be resubmitted to dev after the crash is fixed. Change-Id: Ic192c7a302176bcdb2503b636b3462b10898a2ba Fixes: QTBUG-71770 Reviewed-by: J-P Nurmi <jpnurmi@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix Instantiator-created MenuItems disappearingMitch Curtis2018-11-021-4/+44
| | | | | | | | | | | | | | | When d5cb26bc fixed a bug in Menu, it also broke the use case of having an Instantiator create menu items. Using an Instantiator like this allows users to create a "Recent Files" menu, for example. The issue was that we would indiscriminately recreate items, even those owned by an Instantiator. This patch avoids recreating items owned by Instantiators. It also adds a logging category for Menu, to aid debugging. Fixes: QTBUG-71066 Change-Id: Ie0e46de1cbfaee81b43d63f3143435f2514371d5 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-09-111-17/+42
|\ | | | | | | Change-Id: I3fa0011d8b69db2a004feb177a7f89ccb75a724d
| * Menu: ensure the correct delegates are used when created via ComponentMitch Curtis2018-09-051-17/+42
| | | | | | | | | | | | | | | | | | | | Don't add items until we're complete, as the delegate could change in the meantime. Instead, add them to contentData and create them when we're complete. Task-number: QTBUG-67559 Change-Id: I5f42129f49de861ff5f15d0069daeda0b4e5017c Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | QQuickTheme: rename themeFont() and themePalette()J-P Nurmi2018-05-221-2/+2
| | | | | | | | | | | | | | We don't have the conflicting virtual getters anymore. Change-Id: Ia20bfa0a0b1aa67c35a23270eb0241018f8e0ada Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-071-7/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quicktemplates2/qquickabstractbutton_p_p.h src/quicktemplates2/qquickcombobox.cpp src/quicktemplates2/qquickcontainer.cpp src/quicktemplates2/qquickcontrol.cpp src/quicktemplates2/qquickcontrol_p_p.h src/quicktemplates2/qquickdialog_p_p.h src/quicktemplates2/qquickdialogbuttonbox.cpp src/quicktemplates2/qquickdialogbuttonbox_p_p.h src/quicktemplates2/qquickdrawer.cpp src/quicktemplates2/qquickmenubar.cpp src/quicktemplates2/qquickmenubar_p_p.h src/quicktemplates2/qquickpage.cpp src/quicktemplates2/qquickpage_p_p.h src/quicktemplates2/qquickpane.cpp src/quicktemplates2/qquickpane_p_p.h src/quicktemplates2/qquickpopup.cpp src/quicktemplates2/qquickpopup_p_p.h src/quicktemplates2/qquickrangeslider.cpp src/quicktemplates2/qquickscrollview.cpp src/quicktemplates2/qquickslider.cpp src/quicktemplates2/qquickspinbox.cpp src/quicktemplates2/qquickswipeview.cpp src/quicktemplates2/qquicktabbar.cpp src/quicktemplates2/qquicktextarea_p_p.h src/quicktemplates2/qquicktextfield_p_p.h src/quicktemplates2/qquicktheme_p.h Change-Id: I6e2b8fe99e51e3e26c87546aa66af045bc429ec4
| * Templates: use C++11 default member initializationJ-P Nurmi2018-05-041-7/+1
| | | | | | | | | | | | | | | | | | | | | | The code is more readable and less error-prone (this patch caught a few uninitialized members) when the members are initialized in the same place where they are declared. In many cases, empty default destructors can be entirely removed, and we get faster implicitly declared inline default constructors defined by the compiler. Change-Id: I14c5448afc901f9b2ac5965f28c1c26c0b646c08 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Replace QQuickMenuPrivate::reposition() with QQuickMenuPositionerJ-P Nurmi2018-05-031-10/+28
| | | | | | | | | | Change-Id: Iea8c1b8609778604af06cc70eaefad21f00186bd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickTheme::ScopeJ-P Nurmi2018-03-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | Replace the old enums that were originally copied from QPlatformTheme, including irrelevant entries for DockWidget, MdiSubWindow, MessageBox, with a unified enum that will be matched to cover everything needed for theming fonts and palettes for Qt Quick Controls 2. Task-number: QTBUG-67062 Change-Id: Ia99d092f28c00210c0c7f24d4241eb5a5d9ceb5b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Move QQuickControlPrivate::themeFont|Palette() to QQuickThemeJ-P Nurmi2018-02-151-2/+2
|/ | | | | | | | | | | | | | QPlatformTheme is too limited for our theming purposes. We need support for separate palettes (and later, icon colors) in dark and light themes. Also, the fact that Qt Quick Controls 2 injects a platform proxy theme does have undesired side effects in Qt Widgets and Qt Quick Controls 1. Therefore, we start separating QPlatformTheme and QQuickTheme. The first step is to eliminate some direct QPlatformTheme access in QQuickControl and route it via QQuickTheme instead. Task-number: QTBUG-51921 Change-Id: I055471a75ed6f26968796496efd1892975447c98 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.9' into 5.10J-P Nurmi2018-01-101-0/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/controls/BusyIndicator.qml src/imports/controls/CheckBox.qml src/imports/controls/CheckDelegate.qml src/imports/controls/ComboBox.qml src/imports/controls/DelayButton.qml src/imports/controls/Dial.qml src/imports/controls/ItemDelegate.qml src/imports/controls/MenuItem.qml src/imports/controls/RadioButton.qml src/imports/controls/RadioDelegate.qml src/imports/controls/SwipeDelegate.qml src/imports/controls/Switch.qml src/imports/controls/SwitchDelegate.qml src/imports/controls/doc/src/qtquickcontrols2-configuration.qdoc src/imports/controls/material/CheckDelegate.qml src/imports/controls/material/ItemDelegate.qml src/imports/controls/material/MenuItem.qml src/imports/controls/material/RadioDelegate.qml src/imports/controls/material/SwipeDelegate.qml src/imports/controls/material/SwitchDelegate.qml src/imports/controls/qquickdefaultbusyindicator.cpp src/imports/controls/qquickdefaultbusyindicator_p.h src/imports/controls/qtquickcontrols2plugin.cpp src/imports/controls/universal/CheckDelegate.qml src/imports/controls/universal/ItemDelegate.qml src/imports/controls/universal/MenuItem.qml src/imports/controls/universal/RadioDelegate.qml src/imports/controls/universal/SwipeDelegate.qml src/imports/controls/universal/SwitchDelegate.qml src/quickcontrols2/quickcontrols2.pri src/quicktemplates2/qquickcontrol.cpp src/quicktemplates2/qquickmenu.cpp src/quicktemplates2/qquickpopup_p.h Change-Id: Ib25c8b4a7fe018b7c0ade9b02bfaaa6980118c15
| * Popups: use deferred executionJ-P Nurmi2017-12-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | QQuickPopup is backed by a QQuickControl subclass aka QQuickPopupItem. However, since the QML engine sees "background" and "contentItem" as properties of QQuickPopup, we must ensure that the deferred properties are executed for the QQuickPopup wrapper object. Task-number: QTBUG-50992 Change-Id: I2ec055b382e41530a6f4a740cb80853c0181c21a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Re-order revision 3 members and add explanatory commentsJ-P Nurmi2017-11-061-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | We've come to realize that even though it's tempting to group similar properties together, organizing the API so that revisions are grouped together makes future maintenance more pleasant. It's a lot easier to to see what was added and when. The same was done for earlier revisions in 5.9 in commit 430fe83. Change-Id: I738d7fdadd348c21737228c37d0f31e39b37f8e7 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Introduce MenuBarJ-P Nurmi2017-07-261-9/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | MenuBar is an ordinary Item. It can be located basically anywhere, but the idea is to introduce a new ApplicationWindow::menuBar property in a follow-up commit. Currently the example snippets are using the header property. [ChangeLog][Controls][MenuBar] Introduced a MenuBar control. Task-number: QTBUG-60350 Change-Id: Ie66dc457a3d8edbe8362fab2a591dc49442c95e2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: make sure to stop the hover timer when closingJ-P Nurmi2017-07-211-0/+2
| | | | | | | | | | | | | | | | This seems to be one of the reasons why tst_QQuickMenuBar has had troubles in a busy CI environment. Change-Id: Ifa20c309eac86e8f47ba0a8c3da76a58f00465cb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: get rid of openSubMenu()J-P Nurmi2017-07-141-18/+15
| | | | | | | | | | Change-Id: I8125971dd91614984379e734af21f5ff28852667 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Make QQuickMenu::popup() available in C++J-P Nurmi2017-07-131-24/+38
| | | | | | | | | | | | | | | | | | This is going to be used for sub-menus by QQuickMenu itself, by the upcoming QQuickMenuBar, and allows users to implement their own Menu navigation if desired. Change-Id: I29258e78fec27e8dd207ed649958df1a718bcd39 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: close non-cascading parent menu from prepareEnterTransition()J-P Nurmi2017-07-131-4/+3
| | | | | | | | | | Change-Id: I075241c07702d1e8bbc89c43cef35525d9e67cc7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: resolve the parent itemJ-P Nurmi2017-07-131-7/+32
| | | | | | | | | | | | | | | | | | | | | | | | A cascading sub-menu is parented to the menu item in its parent menu, but a non-cascading sub-menu is parented to the parent menu's parent item to be able to have the sub-menu visible while the parent menu is hidden (non-cascading menus are opened and closed one by one). Based on these conditions, resolve the parent item automatically instead of doing it by hand in openSubMenu(). Change-Id: I5dd38ee0978604cd604dabf6f40ac4fb5f3eebbe Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickMenu::countJ-P Nurmi2017-07-121-0/+15
| | | | | | | | | | | | | | [ChangeLog][Controls][Menu] Added "count" property. Change-Id: I42971a6bf8fd74b9f2d3df52f191b66cd7022b81 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: override reposition() to position sub-menusJ-P Nurmi2017-07-121-6/+17
| | | | | | | | | | Change-Id: Ia63148beee6b574e435a120be245601b3a0b3322 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: control allowHorizontalFlip from prepareEnterTransition()J-P Nurmi2017-07-121-3/+5
| | | | | | | | | | Change-Id: I0444e3e9137e1b71cdd16c35dc7cc47875937a22 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickMenuPrivate::setParentMenu()J-P Nurmi2017-07-121-4/+27
| | | | | | | | | | | | | | | | To help propagating the cascade-property automatically, instead of doing it manually in openSubMenu() that we're trying to get rid of. Change-Id: I3a3d59cafccc85d6affc325eb60e717e22b8f812 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: fix overlay change notifier signalJ-P Nurmi2017-07-121-1/+1
| | | | | | | | | | Change-Id: Ia8ffca05d6eba5214dec3a4675be0f7a109f06bd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: control close policy from prepareEnterTransition()J-P Nurmi2017-07-121-3/+15
| | | | | | | | | | | | | | Moving stuff away from openSubMenu() until we can remove it... Change-Id: I0a979a6a0de25584a213b59e1d29d3b9f78b184e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu::popup(): allow a parent argumentJ-P Nurmi2017-07-121-15/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The parent argument is handy for sharing a single context menu instance for multiple listview items: ListView { delegate: ItemDelegate { onPressAndHold: contextMenu.popup(this) } Menu { id: contextMenu } } Change-Id: I77ff87ee03d2d1b53485863ab9c99f3226496dfc Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickMenu::dismiss()J-P Nurmi2017-07-111-35/+54
| | | | | | | | | | | | | | | | | | [ChangeLog][Controls][Menu] Added a dismiss() method. Unlike close() that only closes a menu and its sub-menus, dismiss() closes the whole hierarchy of menus, including the parent menus. Change-Id: Ibde2102bbb542a5deefdf17843496b7b80021db4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: cleanup focus handlingJ-P Nurmi2017-07-111-10/+3
| | | | | | | | | | | | | | | | Since 744164e6, there is no more need to manually transfer the focus when dealing with nested menus. Change-Id: I8e283b2ef4501aa36d57b3e06190237a1fee7133 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Menu: leave transformOrigin to be defined in QMLJ-P Nurmi2017-07-111-6/+2
| | | | | | | | | | Change-Id: I960d90a7d1604f35a67dfe5f4adb57d4d62968f9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: fix parent menu handlingJ-P Nurmi2017-07-111-5/+8
| | | | | | | | | | | | | | | | | | | | | | Set the parent menu when added as a sub-menu, and reset when removed from the parent menu, instead of waiting until the sub-menu is being opened and never reseting it. Furthermore, fix onItemTriggered() to not overwrite the original parentMenu value when iterating the parent menus to close them. Change-Id: If4cf9cd8794e34275f38a3b991e5c403725a8706 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: add actionAt() and menuAt() accessorsJ-P Nurmi2017-07-101-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | This complements the add/insert/remove/take API that was added for actions and menus. Unlike for menu items, there was no convenient way to access a specific action or menu directly without accessing the respective item first. [ChangeLog][Controls][Menu] Added actionAt() and menuAt() accessors. Change-Id: I5515441626b3a04b05265d5b42afdaea8e256709 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: use key press instead of key release eventsJ-P Nurmi2017-07-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | In general, when shortcuts override key press events, the respective key release events are still sent. Therefore, in order to respect shortcuts, key navigation should be based on key press events. Key release -based navigation is also not going to work with nested menus in a menubar, because a leaf menu may need to propagate key events up to the parent menus and finally to the menubar, but only if keys are not actually handled. Change-Id: Ia040a387adc782d8828250fbed393ef1794f2148 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Doc: revise the custom menu exampleJ-P Nurmi2017-07-041-1/+1
| | | | | | | | | | | | | | | | | | Use a single example for the whole menu. We can now use Actions and the delegate property to use the styled menu item for the whole menu. The same structure will be used for the upcoming MenuBar example. Change-Id: Idbaa38cc536b27a4d64eb9ad72c07936bf160d6e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: fix mnemonics for dynamic action/submenu itemsJ-P Nurmi2017-06-301-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously mnemonics worked only for "normal" menu items, but not for dynamically created menu items that present actions and sub-menus. This patch fixes the issue by specifying the menu as a QObject-parent for such dynamically created items, because QQuickShortcutContext is based on QObject-hierarchy. Change-Id: I3637ef06e9cb2a27673e4618c253279a0123b7c8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devJ-P Nurmi2017-06-291-5/+2
|\| | | | | | | | | | | | | Conflicts: src/quicktemplates2/qquickmenu.cpp Change-Id: I595ed1671fcad6c3b87123be2b825bca09552f0f
| * QQuickMenu: fix press-and-hold supportJ-P Nurmi2017-06-291-1/+0
| | | | | | | | | | | | | | | | | | | | Remove the OnReleaseOutside close policy, just use the defaults from QQuickPopup. This way menus won't get immediately closed on release, when opened from an onPressAndHold signal handler. Task-number: QTBUG-61608 Change-Id: Ifedd596aa0e71ac5f4211fa42e2ae499918df1b2 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Menu::currentIndexJ-P Nurmi2017-06-211-29/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | De-couple current index management from the content item. Instead of manipulating the content item's current index directly from C++, offer a currentIndex property that can be visualized by the style, also when not using a ListView. This is essentially the same technique ComboBox uses to control the highlighted index in the popup ListView. [ChangeLog][Controls][Menu] Added currentIndex property for styling purposes. Change-Id: Idf7746d9c08fc9ca9a0dfd15225ebae5a29243c9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Menu: allow horizontal flip for cascading sub-menusJ-P Nurmi2017-06-211-0/+1
| | | | | | | | | | | | | | | | Allow sub-menus to open on the left side if there's more space than on the right side. This is the expected behavior on desktop. Change-Id: I915cb93e98a42bf50758d9e98fd98632e55c2cfa Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devJ-P Nurmi2017-06-151-10/+32
|\| | | | | | | | | | | | | | | | | Conflicts: src/imports/controls/ButtonGroup.qml tests/auto/controls/data/tst_container.qml tests/auto/menu/tst_menu.cpp Change-Id: Ie8ee7e4f83f3fda6a09507b060576ebda929a7cd
| * QQuickMenu: fix key navigationJ-P Nurmi2017-06-091-9/+27
| | | | | | | | | | | | | | | | | | | | | | Skip non-focusable separators, and use a key focus reason (Qt::TabFocusReason & Qt::BacktabFocusReason) to give the items visual focus. [ChangeLog][Controls][Menu] Fixed key navigation to skip separators. Change-Id: I99affabc50703c7363ab8146e5ced9b45111de00 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Fix QQuickMenuPrivate::itemSiblingOrderChanged()J-P Nurmi2017-06-081-1/+5
| | | | | | | | | | | | | | | | | | | | | | QQuickContainer was fixed in the previous commit. Apply the same fix to QQuickMenu, because the code is based on QQuickContainer. I'm not able to make QQuickMenu crash with the same test case adapted to QQuickMenu, though. QQuickMenu already has tests for Repeater in tst_menu.cpp. Task-number: QTBUG-61310 Change-Id: I3fba1b7ef15659724880df080dab5015eae484a3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickMenu::add/insert/remove/takeAction()J-P Nurmi2017-06-131-0/+76
| | | | | | | | | | | | | | | | | | [ChangeLog][Controls][Menu] Added addAction(), insertAction(), removeAction(), and takeAction() methods for adding and removing actions programmatically. Change-Id: I7d494ef1edc1cf384314fa90d97cfd2290d2e8a3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QQuickMenu::add/insert/remove/takeMenu()J-P Nurmi2017-06-131-0/+76
| | | | | | | | | | | | | | | | | | [ChangeLog][Controls][Menu] Added addMenu(), insertMenu(), removeMenu(), and takeMenu() methods for adding and removing sub-menus programmatically. Change-Id: Ibf39448cdf528f64695b1ee5f0781384b754ba22 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickMenu: add a little delay for opening sub-menus on hoverJ-P Nurmi2017-06-131-1/+32
| | | | | | | | | | | | | | | | | | This improves the usability on desktop. When a menu has multiple sub- menu items, they don't all trigger a sub-menu (and close immediately) while moving mouse over the items. Change-Id: Ie4c9e409da8d6877e35506bffb94ed57f5985dcd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Remove unnecessary QQuickMenuPrivate::onItemPressed()J-P Nurmi2017-06-131-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | QQuickMenu was developed before QQuickControl::focusPolicy was added. Now that QQuickAbstractButton sets Qt::StrongFocus, which includes Qt::ClickFocus, by default, it gains active focus automatically and there is no need to call forceActiveFocus() by hand. This patch does not include new tests, because QQuickMenuItem's focus behavior is already tested in tst_menu. Change-Id: Ia2c9bed34548c3edbb54b8e5dc1207b3c7520b22 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add support for cascading sub-menusJ-P Nurmi2017-06-131-28/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds initial support for cascading sub-menus by allowing one to nest declarative Menu declarations. A follow-up commit adds support for adding, inserting, and removing menus programmatically. [ChangeLog][Controls][Menu] Added support for cascading sub-menus. Task-number: QTBUG-60351 Change-Id: I0eee4f74d92a97c09333fcc4348b019782448535 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>