aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qquickpopup
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2019-10-152-2/+140
|\ | | | | | | | | | | Removed dependencies.yaml. Change-Id: I1e2b3f486e9ace4bc8dc0419a64848990b3a6b39
| * Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-10-122-0/+136
| |\ | | | | | | | | | Change-Id: Ibdfd1048941c55bcf6abe101cad2b58a2ea9e776
| | * Fix a crash on exit when using ToolTip in a specific item hierarchyMitch Curtis2019-09-302-0/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickPopup connects its parent item's (MouseArea, in this case) windowChanged() signal to QQuickPopupPrivate::setWindow(). It does this so that: 1) QQuickOverlay can keep track of all of the popups that it manages. 2) Fonts, palettes and locales can be resolved. 3) If the QQuickPopup component has completed loading and the popup is visible with a valid window, start the enter transition. The problem arises only when using a very specific item hierarchy: Window { width: 640 height: 480 visible: true Item { anchors.fill: parent Item { anchors.fill: parent ColorOverlay { source: parent anchors.fill: parent } MouseArea { anchors.fill: parent hoverEnabled: true ToolTip.visible: containsMouse ToolTip.text: "ToolTip text" } } } } When the window is closed and hence begins to be destroyed, the following events occur: - QQuickWindow's destructor is called. - The window's root item (QQuickRootItem) begins destruction. - QQuickOverlay is destroyed. - QQuickWindow's destructor is done, so the QWindow and then QObject destructors are called. - The QQuickItem destructor for the outer Item is called. - The child items of the outer Item have setParentItem(nullptr) called on them, one of which being the inner Item. - The inner Item's setParentItem() function calls derefWindow(), which in turn calls derefWindow() on its children. One of those children is MouseArea. - Since the MouseArea's window is deref'd, it emits the windowChanged() signal. MouseArea is the parentItem of the popup, so its windowChanged() signal causes QQuickPopupPrivate::setWindow() to be called. - setWindow() tries to remove the popup from the old overlay, which has already been destroyed. One approach I tried involved using QQuickOverlay::itemChange() to remove all of the popups (via setWindow(nullptr), to ensure that their window pointer is nullified), since that was called much earlier than the windowChanged() signal is emitted. However, this still resulted in a heap-use-after-free in the same place when running the newly added setOverlayParentToNull() test. I also tried removing the popups in QQuickOverlay's destructor, but this resulted in another heap-use-after-free (when accessing a popup in the destructor) in tst_QQuickPopup::Universal::visible(). The remaining options were: store the window in a QPointer or return early in overlay() if the wasDeleted member of the window was true. Using QPointer seems like it would catch more issues than a single check in overlay(), so I went with that. Fixes: QTBUG-73243 Change-Id: Ieb5ce26dd76d45771d28297031ec43e27d958b5b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-09-061-1/+1
| | |\ | | | | | | | | | | | | Change-Id: I859406dc779e59ee5d8e2980e04f8be28b1a69aa
| | | * Fix flakiness in tst_qquickdrawer testsMitch Curtis2019-09-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although it's not ideal to add arbitrary delays to tests, it does reflect a more realistic testing environment, and more importantly, seems to fix the flakiness on OpenSUSE. (cherry picked from commit 97fc102cd079f32cc1a4f00a764ceea981699fc0) Fixes: QTBUG-77946 Change-Id: I2998611759106386091d7375b31e56523c95371f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
| * | | Fix flakiness in tst_qquickdrawer testsMitch Curtis2019-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although it's not ideal to add arbitrary delays to tests, it does reflect a more realistic testing environment, and more importantly, seems to fix the flakiness on OpenSUSE. Change-Id: I0c13e5f628654aaff349c2f07be46792773a9789 Fixes: QTBUG-77946 Reviewed-by: Liang Qi <liang.qi@qt.io>
| * | | Remove usages of deprecated APIs of QWheelEventSona Kurazyan2019-09-021-1/+3
| |/ / | | | | | | | | | | | | | | | | | | Task-number: QTBUG-76491 Change-Id: I346ddb1e926047878ce57c88cea24d8a4689adaa Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* / / Convert QtQuickControls2 testsLeander Beernaert2019-10-081-0/+51
|/ / | | | | | | | | | | | | | | Initial conversion of QtQuickControls2 tests. Change-Id: I7e09e387ec90f89cc2856c7f7f2cb810b03b7fa3 Reviewed-by: Qt CMake Build Bot Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* / QQuickComboBox: emit countChanged signal when model is updatedWang Chuan2019-07-112-0/+96
|/ | | | | | | | | [ChangeLog][QtQuick][QQuickComboBox] countChanged signal now will be emitted when a new model is set to the ComboBox Fixes: QTBUG-75972 Change-Id: Ic26718453ba06ba284ac5903fc6f55ddf3523331 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Popup: ensure that "palette" is reevaluated when enabled state changesMitch Curtis2019-02-052-0/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | When changing the enabled state of a Menu after component completion, the background would not change. The problem was that QQuickPopup::paletteChanged() was not being emitted when the enabled state changed, resulting in QQuickControl::palette() (which QQuickPopup::palette() forwards calls to via its popupItem) not being called. QQuickControl::palette() changes the palette's current color group to QPalette::Disabled when it is disabled, so if it's not called, the popup's colors won't change. Fix the issue by adding a virtual enabledChange() function to QQuickControl, which QQuickPopupItem can override to emit both QQuickPopup::enabledChanged() (saving a connection in the process) and QQuickPopup::paletteChanged(). This ensures that bindings to QQuickPopup::palette are re-evaluated. The patch adds a virtual instead of just emitting paletteChanged() in QQuickPopup::setEnabled(), because we also want to be notified of indirect enabled state changes, such as those coming from parent items. Change-Id: Ibdbd05f27b5a74fe731bda9d6698cbf6b8f81785 Fixes: QTBUG-73447 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQuickPopupPositioner: fix crash on application exitMitch Curtis2019-01-142-0/+98
| | | | | | | | | | | | Don't add duplicate change listeners, since only one of them will be removed. Coincidentally, this is the same fix as d56c193e, which was reverted for unrelated reasons as part of a bulk revert in d3545dbd. Change-Id: If6fde09f884929c7928f3a1f78625559c9fcbf07 Fixes: QTBUG-72746 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-4/+0
| | | | | | | | | | | | | | | | | | | | | 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>
* Tie minor version of all imports to Qt's minor versionMitch Curtis2018-11-0214-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change makes all Qt Quick Controls 2 imports match the current Qt minor version, which is 12 as of this patch. It also updates all other Qt Quick imports to match. This will also make future version bumps easier as all version numbers in existing code/docs will match. The following commands were used to verify that no old versions remain: for i in `seq 0 11`; do git grep "import QtGraphicalEffects.*1.$i$"; done for i in `seq 0 11`; do git grep "import QtQuick 2.$i$"; done for i in `seq 0 11`; do git grep "import QtQuick.Layouts 1.$i$"; done for i in `seq 0 5`; do git grep "import QtQuick.Controls.*2.$i$"; done for i in `seq 0 11`; do git grep "import QtQuick.Templates 2.$i as T$"; done [ChangeLog] From Qt 5.12 onwards, all import versions in Qt Quick Controls 2 follow the same minor version as Qt's minor version number. For example, the import version for Qt 5.12 is: "import QtQuick.Controls 2.12". Change-Id: I6d87573f20912e041d9c3b7c773cc7bf7b152ec3 Fixes: QTBUG-71095 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Menu: ensure the correct delegates are used when created via ComponentMitch Curtis2018-09-051-0/+4
| | | | | | | | | | 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>
* tst_QQuickPopup: run with all stylesJ-P Nurmi2018-02-121-37/+51
| | | | | Change-Id: I0f48ef8bbf0cb7567796dc67f1030d274f684d67 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.9' into 5.105.10Liang Qi2018-02-091-0/+10
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ia407f277cccfdd96242ebfdbe294d699e26e6b1d
| * Popup: fix restoring focus for popups that did not request focusJ-P Nurmi2018-02-061-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | When a popup closes, if it has active focus, it should restore focus back to where it was regardless of whether the popup originally requested focus. Even if a popup does not request focus on open, it may gain focus programmatically or when a control with click-focus is clicked, for example. Task-number: QTBUG-66113 Change-Id: I9a7c467abe781bbef390d74898d13b9a30b2695b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | remove blacklistsShawn Rutledge2017-10-221-10/+0
| | | | | | | | | | | | | | | | Task-number: QTBUG-62668 Task-number: QTBUG-62628 Task-number: QTBUG-62631 Change-Id: If3220bf00a4729573be4b85755897586105b55a2 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.10J-P Nurmi2017-09-273-1/+75
|/ | | | | | | | | | Conflicts: .gitignore tests/auto/auto.pro tests/auto/qquickmenu/tst_qquickmenu.cpp tests/auto/qquickpopup/tst_qquickpopup.cpp Change-Id: I7e5a7b39d890796fd63a7b24ae19765ab41fecda
* Rename tst_popup to tst_QQuickPopupJ-P Nurmi2017-09-2716-0/+2138
Change-Id: I98f7081e94672a4454c33841934158ae82e9388f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>