aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickoverlay.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QQuickOverlay: micro optimization for disabled multitouch supportKonstantin Ritt2019-09-131-6/+14
| | | | | | | | avoid checking every press event to be one of touch events type when touch events are not delivered at all Change-Id: I1ed91fa124608d8a006cf2f5256ad68294dd465f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix crash on exit when using a shader and a PopupSimon Hausmann2018-07-161-1/+1
| | | | | | | | | 3b5143bb67cdaaff6b0eabedff1034e4add7ec87 already fixed a crash with the same stack trace in dev. The same fix works with the referenced bug report. Task-number: QTBUG-66483 Change-Id: I05450d2ff40f317d9b5b59e28991fa92b414022e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Doc: provide code snippets for Overlay.modal and Overlay.modelessMitch Curtis2018-07-101-0/+10
| | | | | Change-Id: I0ea789c0ba3a153b00ac3ab6501ecf10f6c733ce Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Templates: use C++11 default member initializationJ-P Nurmi2018-05-041-16/+3
| | | | | | | | | | | 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>
* Document how to position a popup in the center of the windowMitch Curtis2018-02-161-19/+2
| | | | | | | | | This was already in Overlay's docs, but not Popup's, so this patch moves the example to a .qdocinc and includes it in both places, creating a new Popup Positioning section in the process. Change-Id: I8e8438919fd849a8466b3a28133d22bb45f7dc19 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-151-5/+43
|\ | | | | | | | | | | | | Conflicts: tests/auto/popup/tst_popup.cpp Change-Id: I32e6c6b646a00f8805cb82d181417db60a6fe6c8
| * Popups: take Window::contentOrientation into accountJ-P Nurmi2017-07-271-5/+43
| | | | | | | | | | | | Task-number: QTBUG-62158 Change-Id: I0bcf5b02da6a3500e4324462d5f1249a6178c9fd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devJ-P Nurmi2017-07-111-1/+6
|\| | | | | | | | | | | | | | | Conflicts: .qmake.conf tests/auto/controls/data/tst_scrollindicator.qml Change-Id: I1f5581ae7814c0d4152e4c9b79a30a8af5a3a17b
| * Fix modal overlay to block multi-touchJ-P Nurmi2017-07-041-1/+6
| | | | | | | | | | | | Task-number: QTBUG-61698 Change-Id: I46db5e9816190ac7afd6b671198dff11089bc4f3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Overlay attached properties and signalsJ-P Nurmi2017-06-261-0/+187
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][Controls][ApplicationWindow] Deprecated the overlay grouped property in favor of the newly introduced Overlay attached properties. [ChangeLog][Controls][Overlay] Introduced Overlay attached properties and signals that supersede the overlay grouped property in Application Window. The Overlay attached type allows providing background dimming for popups without requiring an ApplicationWindow instance. Task-number: QTBUG-61336 Change-Id: I9df11bcb167e7725014d5f058fe24d70da4a10b3 Reviewed-by: Topi Reiniƶ <topi.reinio@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Move visual overlay background management to QQuickPopupJ-P Nurmi2017-06-231-122/+1
|/ | | | | | | | | | | | | | During the early days, there was only one visual overlay background dimmer, so QQuickOverlay was the natural choice to manage it. It was soon realized that multiple modal popups and drawers needed each their own background dimming. Now the implementation becomes simpler when each popup manages its own background dimming. This paves the road for the upcoming changes making it possible to provide background dimming without ApplicationWindow. Task-number: QTBUG-61336 Change-Id: I621db4efe4aa74c147f81f7aee8affebddb00d49 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Let users disable the multi-touch supportJ-P Nurmi2017-06-071-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | The newly added multi-touch support can create issues, especially together with Flickable that is unfortunately still not properly touch-compatible. The implementation is still based on synthesized mouse events, so things like Flickable::pressDelay that intercepts mouse presses and re-sends sends them after a delay, does not play well with touch-enabled controls. The easiest way we can disable the whole thing is to make multi- touch support a configurable feature, the same way hover support is. ./configure -no-feature-quicktemplates2-multitouch [...] Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... no [ChangeLog][Templates] Added a configure feature for disabling multi- touch support (configure -no-feature-quicktemplates2-multitouch). Task-number: QTBUG-61144 Change-Id: I0003ae925c2a499ecb3e2a5b720088bd963d9ad3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix drawers not to be touch-draggable through modal popup shadowsJ-P Nurmi2017-05-081-13/+16
| | | | | | | | | | | | | | Material style popups have a shadow outside the popup. QQuickOverlay cannot block press events to children of a popup, because otherwise interacting with popup contents would be impossible. However, since the shadow is outside of the popup, touch events don't propagate to the popup and get naturally blocked by the popup background. Instead, the touch event propagates to the overlay. At this point, we must do an additional check whether we're allowed to start dragging a drawer. Task-number: QTBUG-60602 Change-Id: I9b5c81246bca7ea40bce0e46dc2e94558a0b9204 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickOverlay: reduce one event filterJ-P Nurmi2017-04-281-52/+49
| | | | | | | | | | | | | Instead of using the window content item for detecting when mouse and touch events propagate through the item hierarchy without being accepted/handled, utilize QQuickWindowPrivate::handleMouse/TouchEvent() to deliver the respective events from the window-level even filter. That way we can unconditionally accept mouse and touch events after the delivery to the item tree, to ensure receiving the consequent mouse and touch events. Change-Id: I5f70c2e0e0d931c544461261721cc9b17ce8d3ef Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix Popup.CloseOnRelease for non-modal popupsJ-P Nurmi2017-04-271-6/+70
| | | | | Change-Id: I70ac251a02a7856e6770cdb9b3e5b2a2d027d133 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickOverlay: add handleMouseEvent() and handleTouchEvent()J-P Nurmi2017-04-271-58/+88
| | | | | | | | To unify overlay event delivery from the child event filter and the event handlers in QQuickOverlay itself. Change-Id: I0e867baeda3a8b829fe1d1992ea8289d466afc85 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add QQuickOverlayPrivate::startDrag()J-P Nurmi2017-04-271-13/+19
| | | | | Change-Id: I9558f82cb7330e451c043e25c9a140f49eefa219 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickOverlay: add return value to handlePress/Move/Release()J-P Nurmi2017-04-271-9/+14
| | | | | | | Inform the caller whether the event was handled. Change-Id: I9433164ec810f55e760960dd70e4539c5722e775 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Popups: fix non-dimming modal background leaking events throughJ-P Nurmi2017-04-261-3/+8
| | | | | | | | | | | This piece of code, which was thought unnecessary, went missing when moved from mousePressEvent() to handlePress() in 7faafa4. It is needed after all for non-dimming modal popups, because in that case we simply cannot rely on the background dimming blocking the press... Task-number: QTBUG-60405 Change-Id: I53d89133eeae4ad8531b3c1e07c3b22295d438de Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Implement QQuickOverlay::touchEvent()v5.9.0-beta3J-P Nurmi2017-04-211-37/+88
| | | | | | Task-number: QTBUG-58389 Change-Id: I59b2936fd0c984c2dc7c1d3c49fb78c1fa950be7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickDrawerPrivate::startDrag(): remove superfluous argumentJ-P Nurmi2017-04-211-1/+1
| | | | | | | | | | Popups used to have a valid window-pointer only when they were visible, but now the window is automatically looked up from the parent item. There is no need to pass the window pointer from the overlay anymore, because the drawer already knows the window. Change-Id: I9652607217a82af2be89f6ab4490431556e3d17c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Set explicit cursors on all interactive controlsJ-P Nurmi2017-04-051-0/+3
| | | | | | | | | | | | For example, if you have a floating button on top of a text editor, hovering the button must change the cursor from the editor's ibeam cursor to an arrow cursor. This applies to all interactive controls that call setAcceptedMouseButtons(). If a control blocks mouse events, it should not use some random cursor from another control underneath. Task-number: QTBUG-59629 Change-Id: I8a6ae306bbc76a9b22377361cb19cf9c3a872d31 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Pass a parent to QQmlContextsMitch Curtis2017-03-241-1/+1
| | | | | | | | To avoid crashes in the future. Task-number: QTBUG-59532 Change-Id: Ie81f95939fc5655567f9d987cf040daf3a32df43 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Add "hover support" configure featureJ-P Nurmi2017-02-061-0/+2
| | | | | | | | | | ./configure -no-feature-quicktemplates2-hover [...] Qt Quick Templates 2: Hover support .......................... no Change-Id: I0509a1a9ac3ffe2cbfe4f2016ce0345708860b84 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix build with -no-feature-wheeleventJ-P Nurmi2017-01-311-0/+2
| | | | | Change-Id: I6f40794ae1977d1f23916bff6d0c58d44440fbe5 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Format initializer listsJ-P Nurmi2017-01-191-3/+3
| | | | | | | | Initialize one member per line. Allow empty constructors with one initialized member on a single line. Change-Id: Ie115802561ebd19efd4dacda1fa868b64d279109 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.8' into devJ-P Nurmi2017-01-111-1/+1
|\ | | | | | | Change-Id: If797ac58344b20e8de4379343131c097247ba2f2
| * Welcome to 2017J-P Nurmi2017-01-091-1/+1
| | | | | | | | | | Change-Id: If68cff4efacc7dc5719c8b8e61937e85e9076870 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devJ-P Nurmi2016-12-011-5/+12
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/imports/controls/SpinBox.qml src/imports/controls/material/SpinBox.qml src/imports/controls/universal/SpinBox.qml tests/auto/controls/data/tst_swipedelegate.qml Change-Id: Ie1d1f487890f0a9f80a00df5e813e1d2e8303fe5
| * Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-281-5/+12
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/controls/doc/src/qtquickcontrols2-differences.qdoc sync.profile Change-Id: I554c40516030075142f9af1dd5c66fdca2b78b9a
| | * Fix popups to close on click outsidev5.7.1J-P Nurmi2016-10-251-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a popup closes itself on press outside, it accepts the press event so that it doesn't propagate to other popups or the content below. We must make sure that such closing popup does not become the mouse grabber, because it doesn't make sense to route the subsequent mouse events to the popup that was just closed. Change-Id: I80c6e26a1d94aa1526a61862f00af2fd0778aa82 Task-number: QTBUG-56697 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Move QQuickPopupItem out of qquickpopup.*J-P Nurmi2016-10-261-0/+1
|/ / | | | | | | | | | | | | | | | | | | We'll start slowly refactoring all QQuickPopupItem-specific things out of QQuickPopup. In the future the presentation/backend of a popup could be, under certain circumstances, a native menu popup window, for example. Change-Id: I8508da14ab52c65221afc3a9b7f07c371f0416d2 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.7' into 5.8J-P Nurmi2016-09-261-3/+14
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: examples/quickcontrols2/gallery/gallery.qrc src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc src/quicktemplates2/qquickstackview_p.cpp src/quicktemplates2/qquickstackview_p_p.h tests/auto/controls/data/tst_stackview.qml Change-Id: If451fe0e5653572d305b4de90a6d5cb878463e8d
| * Fix nested popupsJ-P Nurmi2016-09-231-3/+13
| | | | | | | | | | | | Task-number: QTBUG-56136 Change-Id: I3ed7fae09c342c2c456b94fc0cfed781d8edf6aa Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Fix QQuickOverlay::childMouseEventFilter() to release the grabber popupJ-P Nurmi2016-09-231-0/+1
| | | | | | | | | | | | Change-Id: Id9d844d1fc75f4d254abaf1681747b7b521e881b Task-number: QTBUG-56131 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-09-221-13/+7
|\| | | | | | | Change-Id: I37aab846346692fd4bff08b0dbab66db3a8e2716
| * Move resizeOverlay() to QQuickPopupPrivateJ-P Nurmi2016-09-211-12/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a preparation step for making drawers movable. Drawer must be later able to resize the overlay to fit the area of the window that is covered by the drawer. For example, if the Drawer is below the header, it can resize the overlay so that it won't be on top of the header. Change-Id: I2cfd025a31f3a517575f3dbf9b972dcd6957715c Task-number: QTBUG-53168 Task-number: QTBUG-55360 Task-number: QTBUG-53609 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Drawer: fix drag to close from the outside on touchJ-P Nurmi2016-09-191-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set mouseGrabberPopup in QQuickOverlay::childMouseEventFilter() the same way it is set in QQuickOverlay::mousePressEvent() to ensure that the consequent mouse move events are routed to the appropriate popup. This worked with "genuine" mouse move events that were caught by the same child mouse event filter and that way routed to the appropriate popup, but not with "synthesized" mouse move events that are caught by QQuickOverlay::mousePressEvent() instead. Change-Id: Ic59afd85e55c13ebec482bc4dc534accd1f92b2c Task-number: QTBUG-56010 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.7' into 5.8J-P Nurmi2016-09-141-0/+16
|\| | | | | | | | | | | | | | | Conflicts: src/quicktemplates2/qquicktextarea_p_p.h src/quicktemplates2/qquicktextfield_p_p.h Change-Id: Ie7b4a114ad27a4cad337c91e8ebcf696b0e845d7
| * Fix modal overlays leaking wheel events throughJ-P Nurmi2016-09-131-0/+16
| | | | | | | | | | | | Change-Id: I1a3be5ef02cf73a153cebc030313f892fbb03d9f Task-number: QTBUG-55769 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge remote-tracking branch 'origin/5.7' into 5.8J-P Nurmi2016-09-061-111/+155
|\| | | | | | | Change-Id: Ief98cd56abd13cfa4e30578e150207462a8243b8
| * Fix drawer visibility and overlay event handlingJ-P Nurmi2016-09-061-63/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drawers were visible all the time, lurking at the window edges to be able to catch presses and drag themselves visible when appropriate. This change moves the handling of window edge presses from QQuickDrawer to QQuickOverlay, making it possible to show and hide drawers like any other popups. Instead of having all drawers visible all the time, we just keep QQuickOverlay visible when there are any registered drawers, even hidden ones. Furthermore, this change makes modal popup/drawer background dimming items accept mouse press events just like they accept hover events to ensure that a modal overlay does not leak input events through. When the background dimming of a modal drawer has been dragged over the drag-threshold, the drawer simply steals/grabs mouse to start dragging of the drawer. Task-number: QTBUG-54794 Task-number: QTBUG-54800 Task-number: QTBUG-55022 Task-number: QTBUG-55703 Task-number: QTBUG-55713 Change-Id: I65fb38fcf1466d4e41192c4321d80fb90b49da9a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Remove superfluous QQuickOverlayPrivate::popupsJ-P Nurmi2016-09-051-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | First of all, the name was a bit misleading. It was a list of _visible_ popups. Anyway, it is unnecessary to maintain such list anymore. The only use case for it was to resize the background dimming items of visible popups when the window was resized. For that infrequent desktop -only event, we can fetch the background dimming items from the list of all popups. Change-Id: Ie17db042719d4614189a78a2e5314136ca95df42 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * QQuickOverlay: keep track of all drawersJ-P Nurmi2016-09-051-12/+5
| | | | | | | | | | | | | | | | Required by the subsequent patches. Done separately keep the other patches smaller and easier to review. Change-Id: Id5d13e19f98155cfd3d0474c7d3839808133bab1 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * QQuickOverlay: keep track of all popupsJ-P Nurmi2016-09-051-0/+10
| | | | | | | | | | | | | | | | Required by the subsequent patches. Done separately keep the other patches smaller and easier to review. Change-Id: I60212451cf53443ae7abd58b8eaad94b66984e03 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Make QQuickOverlayPrivate accessible via qquickoverlay_p_p.hJ-P Nurmi2016-09-051-29/+1
| | | | | | | | | | | | | | | | Required by the subsequent patches. Done separately keep the other patches smaller and easier to review. Change-Id: I90ae08ea196354b3db74e2203983ca95733ef0c8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Fix hover event delivery with plain QQuickWindowJ-P Nurmi2016-09-051-9/+16
| | | | | | | | | | | | | | | | | | | | A plain QQuickWindow cannot provide a modal background dimming visual, but we can create a QQuickItem as a fallback to take care of blocking the hover events for modal popups. Change-Id: I3ead985c4e2e030aaf28f1ec6c8a1ae285637819 Task-number: QTBUG-54913 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Use QQuickOverlay with plain QQuickWindowJ-P Nurmi2016-09-051-1/+27
| | | | | | | | | | | | | | | | | | | | | | Get rid of the ugly and broken event filter approach that was used with QQuickWindow. Create an instance of QQuickOverlay so that the same overlay code path is used for both QQuickApplicationWindow and plain QQuickWindow. Task-number: QTBUG-55729 Change-Id: I6e26b19cd94a9580418912803f50c30b9dcaeedb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Make QQuickOverlay resize itselfJ-P Nurmi2016-09-051-1/+21
|/ | | | | | | | This prepares QQuickOverlay to be usable with a plain QQuickWindow, for which we cannot override resizeEvent(). Change-Id: Ib021c510539b134477bb8d532787721a5ac7fca4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Popup: respect dynamic dim & modal changesJ-P Nurmi2016-09-021-1/+18
| | | | | | | | | | | | | What comes to the visual background dimming, popups did not respect dynamic 'dim' or 'modal' property changes. This was half-intentional, because it was thought an unrealistic use-case to toggle these while the popup is visible. As a result, the background dimming was missing if a popup was made visible in a declarative way, and either 'dim' or 'modal' was evaluated after the popup was already visible. Task-number: QTBUG-54797 Change-Id: Icfb171e619540fef2d91908867b702790cde6c32 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>