aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* QQuickMenu: fix key navigationJ-P Nurmi2017-06-091-3/+74
| | | | | | | | | | | 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 QQuickContainerPrivate::itemSiblingOrderChanged()J-P Nurmi2017-06-081-0/+27
| | | | | | | | | Repeaters are not part of the content model. Exclude them when calculating the target index when the order of items changes. Task-number: QTBUG-61310 Change-Id: Iaedd59288ed38e985a34ed8e1f515fdfb50d74e6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix font inheritance for popupsJ-P Nurmi2017-06-0717-1/+1258
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) First of all, Popup's QObject-parent depends on the way the Popup is declared in QML, or what is passed as a parent to createObject() when creating dynamic instances. For example: - Popup becomes a QObject child of of the contentItem: ApplicationWindow { Popup { } } - Popup becomes a QObject child of the window: ApplicationWindow { Item { Popup { } } } - Popup becomes a QObject child of the specified parent: ApplicationWindow { Component { id: component Popup { } } Component.onComplete: component.createObject(overlay) } Since QQuickWindow and QQuickView did not set the QObject-parent of their contentItem and rootObject, respectively, we had troubles finding popup instances, because window->findChildren<QQuickPopup>() and window->contentItem()->findChildren<QQuickPopup>() would produce inconsistent results. This has been fixed in qtdeclarative commit af6655885, so now we can use window->findChildren() reliably. 2) Popups inherit font from the associated window, not the parent item. It was wrong to call resolveFont() in setParentItem(), because the parent item might not change even though the associated window does. The piece of code was moved to setWindow() instead. 3) QQuickPopupItemPrivate::resolveFont() did not propagate the default font at all when the font was resolved before being associated to a window. 4) After the above fixes had been applied, to ensure that popups always inherit fonts and propagate them down to children as appropriate, we got a new test failure in tst_controls::Popup::test_font() indicating that there were extra font change notifiers triggered at creation time. This was fixed by associating "top-level" popups with the window as soon as they are appended to ApplicationWindow's default property, instead of waiting until the popup is complete and then doing a lookup in the parent hierarchy. Task-number: QTBUG-61114 Change-Id: I6185c76d50835cb7a06b03db0a3ac9ddad64bdd3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix QQuickStyle::availableStyles()J-P Nurmi2017-06-075-1/+21
| | | | | | | | | Filter out macOS debug symbol (.dSYM) directories from the list of available styles. Task-number: QTBUG-60973 Change-Id: I5b9c3f4af946d44b1601f32bf7da699c29a86689 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Attempt to fix tst_controls::ComboBox flakinessJ-P Nurmi2017-06-061-0/+8
| | | | | | | | | | | QQuickWindowPrivate::flushFrameSynchronousEvents() is a real trouble maker in auto tests, because it keeps delivering spurious hover events based on the last mouse position from earlier test functions and test cases. Task-number: QTBUG-61225 Change-Id: I5a8d40a01e3919033f74b26357505f2b514a3281 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* ComboBox: fix empty popup being shown after model is clearedMitch Curtis2017-05-311-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, ComboBox's popup is sized vertically in this way: implicitHeight: contentItem.implicitHeight Adding an item to a ComboBox with an empty model and then opening the popup results in the implicitHeight being used in the line below (in QQuickPopupPositioner::reposition()): QRectF rect(p->allowHorizontalMove ? p->x : popupItem->x(), p->allowVerticalMove ? p->y : popupItem->y(), !p->hasWidth && iw > 0 ? iw : w, !p->hasHeight && ih > 0 ? ih : h); An explicit height was never set on the popup, and ih (the implicitHeight of the popupItem) is greater than 0. This is fine. However, when a ComboBox's popup item grows large enough that it has to be resized to fit within the window, its explicit height is set. The problem occurs when the model is then cleared, as the implicit height of the popup item becomes 0. So, while "!p->hasHeight" is still true, "ih > 0" is not, and the explicit height of the popup item is used, which is still the previous "let's fill the entire height of the window" size. To fix this, we bind the height of the popup to a different expression: height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) This ensures that the popup has a zero height when the ListView's implicitHeight is zero (i.e the model is empty), and a height that fits within the window in all other cases. Ideally, we'd have a maximumHeight property that controls this, but for 5.9, we have to fix it this way. Task-number: QTBUG-60684 Change-Id: Ied94c79bb7b0e693be34e9c7282d991f6f704770 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Page: fix initial layouting of dynamically created instancesJ-P Nurmi2017-05-311-0/+37
| | | | | | Task-number: QTBUG-61109 Change-Id: I43d28a80ec1a46e836fa8a0f76ee65b0c1a24228 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Merge remote-tracking branch 'origin/5.9.0' into 5.9Liang Qi2017-05-314-10/+307
|\ | | | | | | Change-Id: Iba044084bf82f6b2b8ceba4aa2a80bdcf8fc38e0
| * Fix drawers not to be touch-draggable through modal popup shadowsJ-P Nurmi2017-05-082-0/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * Drawer: fix dragging from the inside over interactive contentsJ-P Nurmi2017-05-083-10/+161
| | | | | | | | | | | | Task-number: QTBUG-60598 Change-Id: I65e6e9440c9450fbec4a53b9ee60e11b919c090a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | tst_popup: add closeOnEscapeWithNestedPopups()Mitch Curtis2017-05-262-0/+180
| | | | | | | | | | | | | | | | | | | | This test confirms that the behavior found in the gallery example (where there are several nested popups that should close when the Escape key is pressed, and a Shortcut that should also be activated by the Escape key once all popups are closed) continues to work. Change-Id: Ie848ff3505e66ded7b78777808d982c642092d61 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | tst_tooltip: fix test_attached() failing when it's not run firstMitch Curtis2017-05-261-1/+5
| | | | | | | | | | | | | | | | | | It currently depends on being the first test that uses attached properties to be run. This patch resets the values to the expected values at the beginning of the test to avoid the failure. Change-Id: I9dea7867e6740cba2e3541bffd1f6648ddf0e47d Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Make tst_pageindicator::test_interactive() more reliableJ-P Nurmi2017-05-221-4/+1
| | | | | | | | | | | | | | | | | | | | | | PageIndicator uses Row internally, and changing its spacing triggers an asynchronous relayout. Instead of waiting for the Row to relayout, just pass the padding and spacing at construction time to ensure that the Row has suitable layout for testing mouse clicks between the row items. Change-Id: I9c25c6b57042abb0363bdfe73ebac047cff0fcc7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | tst_combobox: make test_highlightRange() more reliableJ-P Nurmi2017-05-221-0/+1
| | | | | | | | | | | | | | | | | | | | This test is failing with the upcoming Fusion style, perhaps because the combo delegates are a bit heavier. Give the Popup and ListView some time to layout themselves, before attempting to find a list item at the bottom. Change-Id: Ib8486bb7dbc4a43eb3549e2e7ca7ad1be5bad4a0 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickStackView::clear(): don't emit depthChanged() when already emptyJ-P Nurmi2017-05-221-0/+12
| | | | | | | | | | Change-Id: Ib20995b86e776cb64a3d1fa6dea01dee4a802426 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | ApplicationWindow: fix access to revisioned members in base classesJ-P Nurmi2017-05-181-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The inheritance hierarcy is: QWindow <- QQuickWindow <- QQuickWindowQmlImpl <- QQuickAppWindow Each base class has its own set of revisioned members. Import the revisioned members in the base classes to the templates/controls namespace by calling qmlRegisterRevision() with the revision of the base class and the respective templates/controls version. Task-number: QTBUG-60893 Change-Id: I6d91209dc5b2eb17c2b3845675a5ddbffb7e8b72 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | tst_objectcount: use setBenchmarkResult() instead of printLiang Qi2017-05-161-13/+6
| | | | | | | | | | Change-Id: Ieb435b6ac929da753cfff0b157d18d4218cb50d9 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | tst_objectcount: data-driven qobjects vs. qquickitemsJ-P Nurmi2017-05-161-50/+29
| | | | | | | | | | Change-Id: Ia1f9f0fe9d0d907b16159e964573ba1273cc75b9 Reviewed-by: Liang Qi <liang.qi@qt.io>
* | tst_snippets: inject the style name to image file namesJ-P Nurmi2017-05-121-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For example, qtquickcontrols2-label.qml outputs: - qtquickcontrols2-label.png (Default) - qtquickcontrols2-material-label.png (Material) - qtquickcontrols2-universal-label.png (Universal) This allows us to take screenshots with different styles without overlapping names and error-prone manual renaming. Change-Id: Ic475ee0d95539a1122e37780f8cec038e2fc9446 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | tst_controls: use TestCase::createTemporaryObject()J-P Nurmi2017-05-094-16/+6
| | | | | | | | | | Change-Id: Iec2e4fdba18402762c6d6580abf8e677d5ae583c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Disable/blacklist failing tests for boot2qtSami Nurmenniemi2017-05-081-0/+6
|/ | | | | | | | | Currently boot2qt is tested with QEMU and some tests fail. Disabling them for now to make it possible to enable qt5 tests for Coin. Task-number: QTBUG-60266 Change-Id: I2b8d7612ae22741cb19037ff47698f096753d9ca Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* tst_snippets: skip style-specific screenshots when appropriatev5.9.0-beta4J-P Nurmi2017-05-042-1/+10
| | | | | | | | For example, don't take screenshots of qtquickcontrols2-material-*.qml snippets when running with another style than the Material style. Change-Id: Ifef5b841d16314ba5d131a7d56f57251d6780ae7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Cleanup obsolete references to doc/snippets/screenshotsJ-P Nurmi2017-05-041-1/+1
| | | | | Change-Id: Ia631cd493d695aaac44d612f234756b4e5b558dd Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_snippets: take screenshots only when requestedJ-P Nurmi2017-05-031-61/+43
| | | | | | | | | | | | The component loading code has been adjusted so that it can load snippets that use either a Window root element too. This speeds up the test a lot in the CI, and allows us to flatten the snippet-structure. Set SCREENSHOTS=1 environment variable to take screenshots. Change-Id: Ibd9e76befe62044dd1374899f18ea3d8c7ad454b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Drawer: fix drag-over-threshold calculationJ-P Nurmi2017-05-022-20/+45
| | | | | | | | | | Don't steal a horizontal drag if a flickable has been dragged a long distance vertically, and then later the flick happens to exceed the horizontal drag threshold. Change-Id: Idf39997aa20cc41da561f182119199f30c63ba32 Task-number: QTBUG-60521 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_popup: disable touch compressionJ-P Nurmi2017-05-021-0/+7
| | | | | | | | 09b9a55 added touch event tests to tst_popup::overlay(). In order to make touch tests reliable, touch event compression must be disabled. Change-Id: I9fcda132447d9a8cf6ef80163be46aea391eff24 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickPopopPositioner: fix reposition() callsJ-P Nurmi2017-05-022-0/+18
| | | | | | | | | | QQuickDrawer still overrides QQuickPopupPrivate::reposition(), so it must be called instead of calling QQuickPopupPositioner::reposition() directly. Task-number: QTBUG-60493 Change-Id: I45ba7364c32d89d2fd128c07f68274b962467ced Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Don't close a popup when pressed inside and released outsideJ-P Nurmi2017-04-291-0/+6
| | | | | Change-Id: Iadf58b0c98d7410e4cc9f75f4baf42adf8c521b8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickDrawer: fix flicking inside drawersJ-P Nurmi2017-04-282-22/+141
| | | | | | | | The pressPoint must be stored before rejecting a press event, to be able to calculate correctly when to steal/grab move. Change-Id: I4c9225fdaf730800fec30b3f37a2a0fe773e8b03 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_combobox: get rid of waitForRendering()J-P Nurmi2017-04-271-9/+31
| | | | | Change-Id: I91b0a529b293aaef8d17cfbc2aafa5ea1805a3f8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_rangeslider: remove unnecessary waitForRendering()J-P Nurmi2017-04-271-1/+0
| | | | | | | Apparently missed in 87c1ec3. Change-Id: Iafeee4d44790eaa37f0e51b5ebe1aefb5d532cf6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix Popup.CloseOnRelease for non-modal popupsJ-P Nurmi2017-04-271-16/+40
| | | | | Change-Id: I70ac251a02a7856e6770cdb9b3e5b2a2d027d133 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Container: document and test current index managementJ-P Nurmi2017-04-271-0/+36
| | | | | Change-Id: I368dd50a4ded743826d6dc4d25dde379c98af20d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_popup: get rid of waitForRendering()J-P Nurmi2017-04-271-1/+6
| | | | | Change-Id: I4db519712ad3d2aa53d8fa7cd387c8a893fc6472 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_dialog: get rid of waitForRendering()J-P Nurmi2017-04-271-4/+20
| | | | | | | | | | | | The intention is to wait until a dialog and its content is fully open and visible. While waitForRendering() does the job, it can sometimes take a bit of unnecessary extra time. Using SignalSpy to wait for opened() allows the test to continue immediately after the enter transition is finished. Change-Id: I86f2d524c616981148988f67dfed09c79002f7a9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Popups: fix non-dimming modal background leaking events throughJ-P Nurmi2017-04-261-4/+28
| | | | | | | | | | | 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>
* Forward focus to the contentItem of editable spinboxesMitch Curtis2017-04-242-1/+11
| | | | | | | | | | | | This fixes the scenario where a SpinBox is shown for the first time with focus, but its editor (TextInput) doesn't have active focus. tst_focus' keyNavigation.qml had to be adjusted, as an editable spinbox will now consume key events. Task-number: QTBUG-60356 Change-Id: I3af0260a22e9633ab6110d6adab7b39a22b849de Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* QQuickDrawer: don't jump when dragging openJ-P Nurmi2017-04-241-15/+25
| | | | | | | | | | | | | | | | Typically drawer's drag margin is so small that one can barely notice that it jumps when dragging begins. On systems with larger start drag distance, or when drawer's drag margin is manually increased, the jump was noticeable and disturbing. Unfortunately several tests had to be adjusted accordingly, because they were assuming that pressing at the edge and then dragging in the middle would immediately snap the drawer. Now the tests are sending a press at the edge, first moving past the start drag distance, and then moving to the actual tested position. Change-Id: Id8badf256fd4dd51f34db76ebe03bf6b15203cd9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_Drawer: disable compression for touch eventsJ-P Nurmi2017-04-241-3/+10
| | | | | | | | | | Touch event compression makes auto tests unpredictable and is causing headache for the upcoming "smooth dragging" changes. Disable touch event compression and remove the manual flushing that is no longer needed. Change-Id: I1264203255d1c796829479026c84ba368f4758b3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_slider & tst_dial: add simple tests for null handlesJ-P Nurmi2017-04-242-0/+26
| | | | | | | | Just to ensure that these corner cases are also tested. We should not assume that the handle visuals exist, so these tests must not crash. Change-Id: I3dbf6ec78667bd9e99b3de79ffa8109858f9edd5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickRangeSlider: don't crash on press with null handlesJ-P Nurmi2017-04-241-0/+27
| | | | | | | | The handle visuals should be optional. There were a few missing checks for null pointers. Change-Id: I13e38f373428dbe0c8e338442370fbe7bb02c15a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix QQuickApplicationWindow::isComponentComplete()J-P Nurmi2017-04-211-0/+23
| | | | | | | | | | It has to default to true to ensure that a QQuickApplicationWindow instantiated in C++ is not stuck to false forever. When instantiated by the QML engine, it is set to false during the QML component initialization phase from classBegin() to componentComple(). Change-Id: Ieba2bbfb8fc0296b8cb28df91b12bcc55dd31bf4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix QQuickPopup::isComponentComplete()J-P Nurmi2017-04-211-0/+23
| | | | | | | | | | | | | | | It has to default to true to ensure that a QQuickPopup instantiated in C++ is not stuck to false forever. When instantiated by the QML engine, it is set to false during the QML component initialization phase from classBegin() to componentComple(). NOTE: QQuickPopupItem's visibility has to be now set outside of QQuickPopupItem constructor, because QQuickPopupItem::itemChange() calls back to QQuickPopup::itemChange(). At that point QQuickPopupPrivate::popupItem should be set. Change-Id: I96fa4ab4b2f29344c4a0d5bce5f8c7642e9db1a6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* *.pro: osx -> macosJ-P Nurmi2017-04-2014-14/+14
| | | | | Change-Id: I29b36eaa417986be24c917bc9c9b1f6441773e3d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_controls: remove waitForRendering() from test_multiTouchJ-P Nurmi2017-04-205-5/+0
| | | | | | | | | | Not sure why this was added in the first place. Now it has been copied to all test_multiTouch() implementations and sometimes slows down the test round quite a bit. Change-Id: I76e259e0267b34de6432998385b9f2e6759b9819 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Override QQuickControlPrivate::handleXxx()J-P Nurmi2017-04-201-1/+0
| | | | | | Change-Id: I5c5be24142a758637e18df24b43847a8c6079346 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Re-enable tst_focus on LinuxJ-P Nurmi2017-04-201-4/+1
| | | | | | | | | | The auto test was disabled on Linux, because it was randomly crashing in libdbus on Ubuntu 14.04. The CI has upgraded to Ubuntu 16.04 so this should no longer be a problem. Task-number: QTBUG-50295 Change-Id: If654a30456a0d5e2a516b5e235b9b75e89425c92 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickControl: implement focus handling on touchJ-P Nurmi2017-04-201-2/+53
| | | | | | | | | | | | | | | | | | | | QQuickControl::focusPolicy was only managed in mousePressEvent() and mouseReleaseEvent(). All controls call the base class implementations of these event handlers to get the focus policy handling "for free". Move focus policy handling to handlePress() and handleRelease() that can be re-used for touch events, and make sure that various controls call the base class implementation of touch event handlers. There's still a bit of duplication in QQuickControl::touchEvent() and the overridden handlers in sub-classes, but this will be improved step by step. QQuickControlPrivate::handlePress/Move/Release/Ungrab() are planned to be made virtual, overridden in subclasses, and only called from QQuickControl event handlers. Most mouse and touch event handlers in QQuickControl subclasses can be removed later when we get there. Task-number: QTBUG-58389 Change-Id: I7e82dc2ef49762a005c482ce1353e03cc841659f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickComboBox: handle touch eventsJ-P Nurmi2017-04-191-0/+44
| | | | | | Task-number: QTBUG-58389 Change-Id: I7120d7bce827beb97a9ae3eaf4e99cf6b6e9f209 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* ScrollBar: react immediately when using a mouseJ-P Nurmi2017-04-101-1/+1
| | | | | | | | | | | | | | | The initial drag threshold is a necessary evil on touch to avoid conflicting with flickables, but leads to bad experience (QTBUG-47081) when using a mouse. Now that we have separate mouse and touch handling, we can apply immediate moves when using a mouse, but keep the old behavior on touch. [ChangeLog][Important Behavior Changes] ScrollBar now reacts immediately when using a mouse. Task-number: QTBUG-58667 Change-Id: I51759fc01dc8b8536834a8a3cca635ff512f7dc9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>