summaryrefslogtreecommitdiff
path: root/src/controls/qquickmenu.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Menu: Separate dismiss and destroy actionsGabriel de Dietrich2015-03-271-11/+35
| | | | | | | | | | | | | | | | | | | | This avoids issues when the action is triggered from a Menu and the slot ends up processing pending events, effectively deleting an object while one of its QML signal handlers is being executed. The reason being that we used to call deleteLater() on the menu popup window while still in the mouse event handler. Now, we do the same thing in three separate steps. 1. Close/dismiss the menu popups, 2. trigger the action, and 3. delete the popups. This keeps the menu popups and their contents alive until we return from the action triggered handler. We also need to take care of manually destroying any popup we may create. Finally, the menu content creation in Menu.qml had to be tweaked since we shouldn't rely on the popup visibility anymore. Task-number: QTBUG-45182 Change-Id: I9f1155bbf74dd3353c6c4066a24abf1cd2c3a283 Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com> Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* Take all offsets into account also with PlatformMenuv5.4.05.4.0Laszlo Agocs2014-11-241-0/+1
| | | | | | Task-number: QTBUG-42314 Change-Id: I7e63d744bbed4a5c254d6cffdc8aba4c5e37d5c3 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
* Fix popup menu position for QQuickWidgetPaul Olav Tvete2014-10-151-7/+11
| | | | | | | | | | | QQuickMenu::popup() did not handle the QQuickWidget case properly when mapping between screen and local coordinates. This meant that popups appeared in the wrong position for comboboxes, context menus and edit menus. Task-number: QTBUG-38116 Change-Id: Iedd7bed55648b1b4a576b9ccb8575b75427bd06f Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* QQuickRenderControl is now in public headersv5.4.0-beta1Oleg Shparber2014-10-111-1/+1
| | | | | Change-Id: I57d8ecd771eac00cc68de0ec5afa07706fee3671 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Get the popup mouse position for the right screenGiulio Camuffo2014-10-061-3/+5
| | | | | | | | If the parent window of the popup is not on the primary screen use the right one to get the mouse position. Change-Id: Ib9929e6fdf90dfae2457486edc9504719bdaad8b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Allow sharing menu itemsJ-P Nurmi2014-09-301-2/+0
| | | | | | | | | | This is needed for mobile platforms that want to present the whole menubar as a single button. For example, if the menubar has only one menu, it will be shown directly. If there are multiple menus, they will be placed into a proxy menu (the removed assertion would fail). Change-Id: I83365253b89f6b450812f032af0e9fe3e4f847ff Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* qquickmenu: add support for providing a target rect to __popup()Richard Moe Gustavsen2014-09-301-8/+10
| | | | | | | | | | | | | | | | | Using a target rect as menu location instead of a position has been supported in QPlatformMenu for a while. The reason for specifying a rect instead of a position is that then the OS can decide if the popup should be placed above or below the target rect so that it fits inside the screen. A typical example is when showing an edit menu around a text selection. If the selection (target rectangle) is far up on the screen, the popup (with arrow) will be placed below the selection instead of above, which is the normal. Change-Id: Ie6cd6a92f1d9ef480c1e455960021c7f18f86569 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Revert "qquickmenu: implement support for __closeMenu when using native menus"Richard Moe Gustavsen2014-09-221-4/+1
| | | | | | | | | | | | This showed not to be the correct solution, since hiding a (sub) menu will make the menu appear removed from the parent menu the next time the parent menu opens. This reverts commit 1c40734f87fa10934d7cee430027b478c2ceaf58. Change-Id: Ife071348c93d630ad372aea66fd848885aef032b Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* qquickmenu: implement support for __closeMenu when using native menusRichard Moe Gustavsen2014-09-181-1/+4
| | | | | Change-Id: I6ba0924d0dd90b87426f4315bd36496cbd4ad7f5 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Update license headers and add new license filesAntti Kokko2014-08-251-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I470909ba0980db33ab551790d619c59a35978590 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* QQuickMenu: add enum MenuType that reflects QPlatformMenu::MenuTypeRichard Moe Gustavsen2014-08-061-1/+2
| | | | | | | | | | | | On mobile platforms several different popup menu types exist. E.g on iOS, you have a special popup just for selecting text. A recent patch added to QtBase added a new enum to QPlatformMenu that lets UI controls select/hint which one to use. This patch adds the same enum to QQuickMenu so that we can control this from Controls as well. Change-Id: Ibf4bdc84577b5a6527021b1cb15578b56bb4a92e Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* QQuickMenu: dismiss platform menu, not only QQuickMenuPopupWindowRichard Moe Gustavsen2014-08-041-6/+10
| | | | | | | | This patch will fill in the missing code path that tells a native platform menu to dismiss when requested. Change-Id: I2625fddd0a735ca9ec7fabaf783921a1f99caa1d Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* QQuickMenu: center menu when mouse not presentRichard Moe Gustavsen2014-08-041-0/+6
| | | | | | | | | | | | | | | | | | | | On touch platforms, QCursor::pos() will return the last touch synthesized to a mouse pos. Since this will only happen when the user taps on a control that does not handle the touch, the position you get can easily be very old. And in many cases, a mouse pos has never been synthesized at all, and the position you get is inf. As a quick fix, this patch checks if the mouse position is invalid, and center the menu. For a long term fix we need to find a way to expose touch events in QGuiApplication, and write logic that determines when to use touch and when to use mouse to position the menu, and if using touch, which touch point should be used. Change-Id: Ic4d2dd78372efcd0c2362204492e76f44ff0a49a Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Use the correct parent window for menu popupsLaszlo Agocs2014-07-011-2/+7
| | | | | | | | | The previous fix applied only to the non-platform menu case and was broken on OS X at least, when having a combobox in a QQuickWidget. Task-number: QTBUG-39908 Change-Id: I5dde103c2fe33d52a312cc80b36b47b13e72a188 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Menu: Properly relay enabled state to QPA menu objectGabriel de Dietrich2014-06-061-3/+17
| | | | | | Task-number: QTBUG-39384 Change-Id: I1b71912b4f35ea0aa9e06667a5c0ecedec30f980 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Menu: Fix QPA related crash on exitGabriel de Dietrich2014-05-041-0/+3
| | | | | | | | | | | | In QPA world, menus are always referenced by a menu item. (This is the menu item either on the menu bar or in the parent menu.) So, the same way that we set the menu item's menu in the menu's constructor, we must clear it. Specially since qtbase commit 8605f44097a986e10c2ddaf4b4eae0b2331d98d1 which checks for the menu reference in the menu item's destructor. Change-Id: Id196fc7c2082dbff1d9006cbd82b7237532c4e3c Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Popup Window: Privately expose popup geometryGabriel de Dietrich2014-03-071-0/+9
| | | | | Change-Id: I28a8edd657f02cecbd0c31965bd4085429cf4537 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Menu: Don't create platform item for QQuickMenuItemContainersGabriel de Dietrich2013-12-171-1/+1
| | | | | | | | | | They don't have any QPA counterpart as they're just plain containers. This also removes that "Menu does not contain the item to be removed" warning on Mac. Task-Number: QTBUG-32197 Change-Id: I06e08817194c2e3ad3efd7ded193bfac9d3a1948 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Menu: Extract QQuickMenuPopupWindow core popup behaviorGabriel de Dietrich2013-10-181-2/+2
| | | | | | | ... and put it in QQuickPopupWindow. Change-Id: I6920f5c13904483310faae990c7199db9f1c4708 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* ComboBox: Make popup scrollableGabriel de Dietrich2013-09-191-0/+2
| | | | | | | | | | | | | | | | We factor out part the menu item container logic from Menu into ColumnMenuContent, which takes care of scrolling and mouse hovering, and selection. This makes possible to extend the menu items layout. The pop-over and pull-down look is specified by the menu style component by overriding the ScrollView style. The popup's maximum height is also specified by the menu style. The gallery example can finally use a font families combo box. Task-number: QTBUG-31568 Change-Id: I34a7278f476471c0eb51ef51dde3dd83e13002fe Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Merge branch 'stable' into devGabriel de Dietrich2013-09-181-1/+3
|\ | | | | | | | | | | | | Conflicts: src/controls/qquickaction.cpp Change-Id: I85255ba5c27c0d8ea023d0867e5963d43f8f1ddb
| * Menu: Enable mnemonic menu navigationGabriel de Dietrich2013-09-131-1/+3
| | | | | | | | | | | | | | | | | | | | | | We also added a new mnemonic specific shortcut context matcher. This prevents two menu items with the same mnemonic but within different menus to be reported as ambiguous. Task-number: QTBUG-33030 ChangeLog: Added mnemonic navigation for menus Change-Id: I192c9aacba4d15851fe65bf9201251962fe976d5 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* | Update imports to 1.1 and remove version from qmlmodule definitionJens Bache-Wiig2013-09-101-1/+1
| | | | | | | | | | Change-Id: Icb4c6d78225c072da787e4646a55d8cf71a5db7a Reviewed-by: Caroline Chao <caroline.chao@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devJ-P Nurmi2013-08-201-1/+13
|\ \ | |/ | | | | Change-Id: I97e6044a5d28ab875628e61ea67474f3c0a4ef4b
| * MenuBar: Make sure invisible menus appear soGabriel de Dietrich2013-08-131-1/+13
| | | | | | | | | | | | | | Task-number: QTBUG-32899 Change-Id: Id07baba90ff45ba420d563ce47ee58964d4e4d02 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* | Menus: add RTL supportJ-P Nurmi2013-08-131-1/+4
|/ | | | | | Change-Id: I60f997e545076feb5b72fb9eb4a03b050db5f511 Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Doc: Fixes warningsCaroline Chao2013-06-031-2/+2
| | | | | | | | | | | Fixes issues including: - Misspelled links - Links to signal with arguments - \table in SplitView.qml - Links to current file Change-Id: I2cbadf661a641f19ed55f6854922b2b69966bc9c Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Fix warning in qquickmenu_p.hCaroline Chao2013-05-031-0/+6
| | | | | | | | | | 'Warning: Property declaration __font has no READ accessor function or associated MEMBER variable. The property will be invalid.' Task-number: QTBUG-30988 Change-Id: I7530310d0da03ecd59bfe1cc3e221e776c17d4f7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Menu: Add __xOffset, __yOffset propertiesGabriel de Dietrich2013-04-301-3/+15
| | | | | | | | | | These are for tweaking the popup position according to the current style. First usage goes to ComboBox. Also prepares for proper support of 'small' and 'mini' style hints. Change-Id: I7bc682d5d82bf6fa7a36916a9d4c64dfb2bdb56e Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Menu: Remove items from menu on destructionGabriel de Dietrich2013-04-181-0/+6
| | | | | | | And vice-versa, including containers. Change-Id: I97cfc7a55327d5f5c5e0eb4befb246b0bccb2c32 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Rename QtMenuXxx to QQuickMenuXxxJ-P Nurmi2013-04-151-0/+642
Change-Id: I89aa205686f0bdf2b267ad17a8ae0470c2f4751f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>