summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Check scrollbar visibility when computing QListView marginsChen Bin2021-05-111-0/+54
| | | | | | | | | | | | | | | | | When the listview setWordWrap is true and ScrollBarPolicy is ScrollBarAsNeeded, if the text needs a newline display and the vbar is not shown, the width of the item was subtracted from the width of the scrollbar. In most cases, the listview needs to reserve the size of the scrollbar. But if the flow is TopToBottom and the vertical scrollbar is not visible, the width of the vertical scrollbar cannot be reserved. Fixes: QTBUG-92366 Pick-to: 5.15 6.0 6.1 Change-Id: I73cce691099a253d409019dbb3fe9a16e1830bb1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QTabBar: take a style sheet's font into account when laying out tabsVolker Hilsheimer2021-05-061-0/+67
| | | | | | | | | | | | | | If a tab has a font assigned to it through a style sheet, then take the font size into account when calculating the contents rectangle. Add a test, which hardcodes the windows style to avoid flaky behavior when e.g. macOS lays tabs out in the center. Fixes: QTBUG-92988 Pick-to: 6.1 Change-Id: Ifb0ac97db7647cc25367972737be8878e50f6040 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QMdiArea: Fix top level window title when using ↵Friedemann Kleint2021-05-061-1/+42
| | | | | | | | | | | | | | DontMaximizeSubWindowOnActivation When trying to find the original window title, check for another maximized sub window and use its title. Protect the calls to setWindowTitle to prevent the original title from being cleared. Pick-to: 6.1 5.15 Fixes: QTBUG-92240 Change-Id: I55175382ab261b4cf8b5528304adaaec4fbe2c31 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Blacklist and skip failing tests on macOS ARMTor Arne Vestbø2021-05-041-0/+2
| | | | | | Task-number: QTQAINFRA-4431 Change-Id: I4ae47bb461634d524995077501b54322f6beccf3 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix wrong C-style cast, use correct QTest::keyClick overloadVolker Hilsheimer2021-04-281-1/+1
| | | | | Change-Id: Ic1e170a5f63da76067a48c3775c47e202948b616 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Android: unblock passing testsAssam Boudjelthia2021-04-274-24/+0
| | | | | | | | | | | | | | | | | | Those tests don't fail anymore and show in CI as BPASS, so we can safely, hopefully, unblock them Task-number: QTBUG-87429 Fixes: QTBUG-68974 Fixes: QTBUG-69166 Fixes: QTBUG-87403 Fixes: QTBUG-87411 Fixes: QTBUG-69083 Fixes: QTBUG-69084 Fixes: QTBUG-87426 Pick-to: 6.1 Change-Id: I831b955116c0f465319b9c5fc726dd98804d1c00 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix QTreeModel calling beginRemoveRows twiceLuca Beldi2021-04-261-0/+16
| | | | | | | | | | | | | For items that are children of other items, removeRows calls beginRemoveRows directly and then once again inside takeChild() The signal blocker that dates back to the monolitic import from Nokia prevents the model from emitting extra signals but the persistent indexes are corrupted nonetheless. Fixes: QTBUG-90030 Pick-to: 6.1 6.0 5.15 Change-Id: I5bc4b2598bf13247683b113faeec22471f1f04a4 Reviewed-by: David Faure <david.faure@kdab.com>
* Mark obsolete QMessageBox members as deprecatedVolker Hilsheimer2021-04-231-0/+9
| | | | | | | | | | | | | | | | Those overloads have been documented as obsolete, but never been deprecated. Add the deprecation macros to trigger warnings as of Qt 6.2. The overloads taking a single StandardButton should not be deprecated until Qt 7, as otherwise porting from old to new API will require an unnecessary cast to StandardButtons for calls with only a single enum value. The unit test explicitly tests the deprecated members, so disable warnings there. Fixes: QTBUG-92483 Change-Id: I283ddce4681eafda2378607f999946e56bbb777e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QLayout: mark unsetContentsMargins as the RESET functionGiuseppe D'Angelo2021-04-211-0/+17
| | | | | | | | | | | | | | | | contentsMargins is a Q_PROPERTY on a QLayout. Qt 6.1 introduced QLayout::unsetContentsMargins() to reset the contents margins to the "default" ones (that the user can't know); that's the textbook description of a RESET function for the property. Add some tests also for unsetContentsMargins. [ChangeLog][QtWidgets][QLayout] The unsetContentsMargins() function now acts as the RESET function for the contentsMargins property. Change-Id: I463d88363c11f4a15ad3d6af71401d8698de1d41 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Re-layout QProgressDialog when setting the cancel buttonQiang Li2021-04-191-0/+24
| | | | | | | | | | | | | | Setting a cancel button on QProgressDialog more than once caused the layout to be invalid. The layout was only applied when the dialog resizes or the style changes, but not when a new cancel button is set. The solution is to update the layout() before showing the dialog when adopting new child widgets. Fixes: QTBUG-19983 Pick-to: 6.0 6.1 Change-Id: Id8fb1ac56e94a9bd97d4559a2e8d4835856fd7d0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add the "Territory" enumerated type for QLocaleJiDe Zhang2021-04-153-6/+6
| | | | | | | | | | | | | | | | | | | The use of "Country" is misleading as some entries in the enumeration are not countries (eg, HongKong), for all that most are. The Unicode Consortium's Common Locale Data Repository (CLDR, from which QLocale's data is taken) calls these territories, so introduce territory-based names and prepare to deprecate the country-based ones in due course. [ChangeLog][QtCore][QLocale] QLocale now has Territory as an alias for its Country enumeration, and associated territory-based names to match its country-named methods, to better match the usage in relevant standards. The country-based names shall in due course be deprecated in favor of the territory-based names. Fixes: QTBUG-91686 Change-Id: Ia1ae1ad7323867016186fb775c9600cd5113aa42 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some warningsAndreas Buhr2021-03-311-1/+2
| | | | | Change-Id: Ief00228f83e16421fb4eec4c678632d5c996624f Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* Android: Add select and copy capability to read-only text widgetsPiotr Mikolajczyk2021-03-301-0/+18
| | | | | | | | | | | | | | | | In case of a read-only text editing widget it was imposibble to copy text from it. In QtWidgets you could not even see the selection handless. Text selection in QtWidgets module was filtered depending on readOnly property of the widget. Additionally, in InputMethod the read-only state was translated into disabled. Patch also makes the edit menu to be aware of the read-only status of the control - the menu items are different for rw and ro controls. Task-number: QTBUG-91417 Change-Id: Ic7b27f78678eeaa87a38607af787f254db1383b8 Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Replace QTextDocumentResourceProvider with a std::functionVolker Hilsheimer2021-03-301-17/+11
| | | | | | | | | | | | | | | | | | | | | | 376e3bd8ecf40881685714f6f19e12d68e92127e added the new class for Qt 6.1, but during header review we concluded that using a class introduces complexity wrt instance ownership and API design that can be avoided by using a std::function instead. The functionality is tied to QTextDocument, so the type definition and the default provider API is added there. Since std::function is not trivially copyable, the atomicity of the previous implementation is not maintained, and concurrent modifications of and access to the global default provider from multiple threads is not allowed. The relevant use case can be supported by implementing a resource provider that is thread safe. Task-number: QTBUG-90211 Fixes: QTBUG-92208 Pick-to: 6.1 Change-Id: I39215c5e51c7bd27f1dd29e1d9d908aecf754fb7 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Rename QUrlResourceProvider to QTextDocumentResourceProviderVolker Hilsheimer2021-03-291-2/+2
| | | | | | | | | | | | | | | | | While the class name is now a bit more than a mouthful, it's purpose is very narrowly tied to QTextDocument, so don't use a very generic name for it. That resources are provided based on a URL is to some degree an implementation detail, and URLs are resource locators so we don't need that in the class name. Address code review comment for 6.1. Add documentation and links to existing APIs with a similar purpose. Task-number: QTBUG-90211 Task-number: QTBUG-92208 Pick-to: 6.1 Change-Id: I4f09057cc2f53a5595513c1c9422e6ccaad6ca13 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Fix invalid pointer return with QGridLayout::itemAt(-1)Zhang Yu2021-03-221-0/+51
| | | | | | | | | | QGridLayout::takeAt() and QLayoutItem *itemAt() only check the upper bound. If the index < 0, these function will return invalid pointer. Fixes: QTBUG-91261 Pick-to: 5.15 6.0 6.1 Change-Id: Idfb9fb6228b9707f817353b04974da16205a835c Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QDial: use qRound to roundVolker Hilsheimer2021-03-181-0/+31
| | | | | | | | | | | | | | | The calculation rounds early and often, which is intentional. Add unit test to make sure we don't regress. Fixes static analzyer report about incorrect rounding in c903a34347776fe3b89785faa35c446d. Address some outdated comments and documentation. The property is read only and calculated, so don't imply that it can be changed from its default value. Change-Id: If2dbd9890e533dfccda3eae4cbc96db4f1246f4d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix tst_QPushButton tests on WaylandEskil Abrahamsen Blomfeldt2021-03-161-3/+4
| | | | | | | | | | | | | | | The tst_QPushButton::sizeHint() test was leaking top level windows and confusing the other tests, as they may end up becoming active. This also re-enables tst_QPushButton::setAccel() since I cannot reproduce the failure with that, so maybe that was related to the leaking widgets. Task-number: QTBUG-91418 Change-Id: I33f4a12bf67f784c5d6a06b2407d067e804d766f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
* Skip tst_QDockWidget::restoreDockWidget on WaylandEskil Abrahamsen Blomfeldt2021-03-161-0/+6
| | | | | | | | | | | There is something wrong with dock widget positioning on Wayland. In the interest of getting tests running at all, we skip the test for now, like we already do with a few others. Task-number: QTBUG-91418 Task-number: QTBUG-91483 Change-Id: I44f5fa0e4d0a43a46ce24a61a899bfcc03787f28 Reviewed-by: Liang Qi <liang.qi@qt.io>
* Merge "Fix tsts_QShortcut::keys on Wayland"Eskil Abrahamsen Blomfeldt2021-03-152-1/+8
|\
| * Fix tsts_QShortcut::keys on WaylandEskil Abrahamsen Blomfeldt2021-03-152-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Wayland doesn't support explicit window activation, so the qWaitForWindowActive() function won't actually wait for the window to be active. On platforms like this, we just QTRY_VERIFY() for the window activation instead. Task-number: QTBUG-91418 Change-Id: I5f728e6a6bcaac283c026b60e6378b9d5aaf1be5 Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Fix tst_qwidget_window::mouseMoveWithPopup on WaylandEskil Abrahamsen Blomfeldt2021-03-151-1/+4
| | | | | | | | | | | | | | | | | | | | | | The test assumed that a window was registered as the active one immediately when it was exposed. This created a race condition on Wayland, where we would often get the wrong active window when simulating the events. Task-number: QTBUG-91418 Change-Id: Ie41fe5adb339bbb43d5ee5db400a198e479de386 Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Make tst_qwidget pass on WaylandEskil Abrahamsen Blomfeldt2021-03-151-3/+16
|/ | | | | | | | | | | | | | | | | | | | | | | | Several tests failed due to side effects of client side decorations. We explicitly disable this when initializing the test to make things go smoother. In addition, the setToolTip() test tries to set the mouse cursor position programmatically, which is not possible on Wayland. And finally, the qWaitForWindowActive() falls back to qWaitForWindowExposed() on platforms where explicit window activation is not supported. This fixes a few issues, but in cases like focusProxy(), it means we aren't actually waiting for the WindowActivation event. Instead of testing for exposed twice on such platforms (Wayland), we replicate the logic from qWaitForWindowActive() instead and rely on automatic window activation. If it fails, we do a QSKIP, so this shouldn't cause any flaky test failures at least. Task-number: QTBUG-91418 Change-Id: I767c881e7cdc91f43ad357294a2c6240ab1af43c Reviewed-by: Liang Qi <liang.qi@qt.io>
* Revert "QPushButton: fix support of style sheet rule for text alignment"Volker Hilsheimer2021-03-111-0/+18
| | | | | | | | | | | | | | | | This reverts commit 6269438af95bbd988ead08829fa3bc9dc25891e8, and adds a test. This change introduced QTBUG-91735, without fixing QTBUG-86857 correctly. The code already interprets the textAlignment values from the rule, also if no icon is set. Adding the same, or some default textAlignment to the text flags if there is no icon doesn't work. Fixes: QTBUG-91735 Task-number: QTBUG-86857 Pick-to: 6.1 6.0 5.15 Change-Id: Iee07e63a40e72909275f32e1caa28b33a595f879 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fix tst_QDialog::keepPositionOnClose on WaylandEskil Abrahamsen Blomfeldt2021-03-111-1/+2
| | | | | | | | | | | | | | | | | The test assumed that dialog.move() would actually move the dialog box to the requested location, which is an invalid assumption on Wayland. Since the objective of the test is not to check if move() works this way, but to check whether the dialog box shows up in the same location when it is re-shown, we actually fetch the pos after showing it the first time, rather than assume this is the same as the requested one. Task-number: QTBUG-91418 Change-Id: Ifa21fa08429f198988f90d7ee328e4f35a4764c2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix tst_qgraphicseffect on WaylandEskil Abrahamsen Blomfeldt2021-03-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | If we only wait until the window is shown before testing the event delivery, we may be getting a WindowActivation event and subsequent paint event after we start testing. This can cause a shift in the paint events, so that we end up with an unexpected paint event at the end. We should wait until the window is active before we start checking the response to updates, to be sure nothing is pending on the queue still. Note that you'd expect QTest::qWaitForWindowActive() to do this, but this actually falls back to qWaitForWindowExposed() when the platform does not have WindowActivation capability. While there is no real link between WindowActivation capability and waiting for a window to be active, changing the behavior of that function would be too scary, so we just implement an explicit wait in the functions that depend on this. Task-number: QTBUG-91418 Change-Id: Iee40dcfa1377f543ea05042cc5a972270b346708 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix the crashes when animated QTreeWidgetItems are hiddenQiang Li2021-03-081-0/+24
| | | | | | | | | | | | | | | | | | QTreeView's drawTree implementation performs lazy layouting when calling itemDecorationAt. If animations are enabled, this can change the list of items, and invalidate the copy made earlier. Don't copy the list of items, use a reference instead so that code iterating over the items later operates on valid data. Add an assert in the private itemHeight method, it must not be called with an index that is out of bounds. Fixes: QTBUG-42469 Pick-to: 6.0 6.1 5.15 Change-Id: Ifdb782881447912e00baffd1c407de10a1d8d0d4 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QMenu test: turn tooltip animations offVolker Hilsheimer2021-03-041-0/+2
| | | | | | | | | | QTBUG_89082_actionTipsHide() is very flaky if tooltips fade in, as the mouse move might happen while the tooltip is still appearing. Fixes: QTBUG-91532 Pick-to: 6.1 6.0 5.15 Change-Id: I55305927fcf143d99dfff28d0bc70b2e831a139a Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Blacklist test QMenu::QTBUG_89082_actionTipsHide() for WindowsFriedemann Kleint2021-03-041-0/+1
| | | | | | | | | | | Apparently, ba139603925453bf79994eca48b566d8f15b2af0 is not sufficient. Amends 3f3d5e6716d9130776b3613ccbd5595de7d4af8d. Pick-to: 6.0 6.1 5.15 Task-number: QTBUG-89082 Change-Id: I80a00abb330bebd3be8667762c279c2eef595c7f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Stabilize test QMenu::QTBUG_89082_actionTipsHide() on Windows, take 2Friedemann Kleint2021-03-031-3/+5
| | | | | | | | | | | | | Use the QWindow-based overloads of QTest::mouseMove(), which do not move the cursor position. Amends ba139603925453bf79994eca48b566d8f15b2af0, 3f3d5e6716d9130776b3613ccbd5595de7d4af8d. Task-number: QTBUG-89082 Pick-to: 6.0 6.1 5.15 Change-Id: I2cc62e4d1f24e4baebafd0d76fbf0fbdb6f588c7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Prospective fix for flaky test tst_QDoubleSpinBox::setReadOnly()Friedemann Kleint2021-03-031-34/+22
| | | | | | | | | | | | | | | The test has been observed to fail with: FAIL! : tst_QDoubleSpinBox::setReadOnly() 'QTest::qWaitForWindowActive(&spin)' returned FALSE. () /Users/qt/work/qt/qtbase/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp(863) : failure location Remove the widget member and use a widget instantiated on the stack instead. Add a check for top level widget leaks in cleanup() and fix leaking task224497_fltMax() by instantiating the widget on the stack. Pick-to: 6.1 Change-Id: Idbbb5d859c0df2d9b9f49fb9f69ef6bb7d1ee150 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Stabilize test QMenu::QTBUG_89082_actionTipsHide() on WindowsFriedemann Kleint2021-03-021-0/+3
| | | | | | | | | | | Move the cursor out of the way to prevent it from interfering. Amends 3f3d5e6716d9130776b3613ccbd5595de7d4af8d. Task-number: QTBUG-89082 Pick-to: 5.15 Pick-to: 6.0 Change-Id: I0efbe2b5618a04e92839083a1bd3383e05d6ff93 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Verify that QFileIconProvider returns valid pixmapsMorten Johan Sørvig2021-02-231-6/+6
| | | | | | | | | Extend and rename the pixmap() crash test to also verify that a non-null pixmap is returned. Change-Id: Ia972c4f705724cfa1394521a2dfd87451d9c5d64 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* tst_qapplication: Prevent desktopaware test from deactivating main testTor Arne Vestbø2021-02-151-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | Applications on macOS are automatically activated (put into the foreground), when launched from the Finder, or via 'open' on the command line. But when launched from the terminal, e.g. foo.app/Contents/MacOS/foo, the application will launch in the background (inactive). In Qt we override this behavior, activating the app even when launched from the terminal, as a convenience, as long as the application is a GUI application. Unfortunately this means that when tst_qapplication launches a subprocess that is a GUI app, it will steal activation from tst_qapplication, which in turn will break tests that later try to activate a window and check that the window is then active. The window will not be active until the application is active. We can work around it by preventing Qt from activating the application, but ideally we'd find a better solution to this, as we don't want to sprinkle overrides all over our tests. Fixes: QTBUG-90699 Pick-to: 6.1 6.0 5.15 Change-Id: If53a86548002b739df0c0a7153d6244924a4a205 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Replace QScopedPointer with std::unique_ptrVolker Hilsheimer2021-02-121-7/+7
| | | | | | | | Fix compile warning from QScopedPointer::take being deprecated. Change-Id: I7f86e08a5a1021263ee57898cbc1d5942ea3113b Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QPlainTextEdit: adjust scroll bars when showing upWang Chuan2021-02-091-0/+32
| | | | | | | | | | | The text of QPlainTextEdit might change when it is invisible, so an adjustment of scroll bars is needed when the QPlainTextEdit showing up, otherwise the range of scroll bars might be incorrect. Fixes: QTBUG-77937 Pick-to: 5.15 6.0 6.1 Change-Id: I45c686c7e09ca7b2944c36122e9157de0ec4f0e0 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Remove blacklisting for b2qt tests that now passSamuli Piippo2021-01-281-2/+0
| | | | | | | With the updated QEMU and toolchain, these tests now pass. Change-Id: Icb74562a0e6422cd4564f63db991aa431e0e3119 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Stabilize tst_QListView::internalDragDropMove() on X11Friedemann Kleint2021-01-271-1/+3
| | | | | | | | | | | | | | The test was flaky in recent test runs on X11. Debugging showed that the global position of the synthesized mouse events was not correct due to the window not being mapped properly. Use QTest::qWaitForWindowActive() instead of QTest::qWaitForWindowExposed() to ensure that. Task-number: QTBUG-90016 Pick-to: 5.15 Pick-to: 6.0 Change-Id: Ie1bc4157e6d0e807d8530f70dcbd27b5e2fc813c Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* control scrolling of QTabBar using StyleHintSophie Kums2021-01-191-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mouse wheel/touchpad scroll signals sent to the tab bar trigger cycling through the tabs. In applications where the tab bar is close to "mouse click hotspots", the cursor may accidentally be left over the tab bar instead of the main content of the window. When the user wants to scroll up/down the main conten, the scroll signals are thus sent to the tab bar and instead of scrolling, the focus switches to another tab. This is confusing to the user, because not only does the application not carry out the desired action (scrolling through the main content), it jumps to a different tab. Two common examples of applications affected by this nuisance are Konsole and any kind of browser (file browser or web browser), where the address bar is right below the tab bar. Moreover, on macOS, scroll events do not have an effect on the tab bar widget of the native UI. Currently, the code makes use of preprocessor directives to achieve consistent behavior on macOS (`#ifndef Q_OS_MAC`). This patch implements the check of a StyleHint in order to determine if scroll events on the tabbar should have an effect. This approach is more consistent with Qt coding style than OS-dependent preprocessor directives and, in addition, makes the behavior configurable according to the user's preferences. [ChangeLog][QtWidgets][QStyle] Added SH_TabBar_AllowWheelScrolling as a style hint to enable/disable cycling through tabs using the scroll wheel. This defaults to true in all styles except the macOS one so there is no change in existing behavior. Change-Id: I99eeb5a1aab03cbc574fac7187d85a8a2d60cf34 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Windows: Fix dialog moving up after closing/reshowingFriedemann Kleint2021-01-151-0/+22
| | | | | | | | | | | | A resize event delivered after closing the platform window was causing the stored frame margins to be cleared. Bail out of QWidgetWindow::updateMargins() if the platform window is null. Pick-to: 5.15 Fixes: QTBUG-79147 Change-Id: Iebbc90c3cccafa209cd720baedf45affb3f3c2b8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fix setting active window as application's focus widgetSona Kurazyan2021-01-151-0/+40
| | | | | | | | | | | | | | | | | | | | | | When setting the application's focus widget we search for the next child widget that can hold the focus and call its setFocus() method, which also updates focus widgets of all its parent wigets. In case if the focus widget is the active window itself, we only set it as the application's focus widget, but we don't update the focus widget of the active window itself. Because of this the focusWidget() method always results nullptr for the active window. This prevents from setting the focus back to active window after the focus has changed (for example after a context menu is closed, as in the bugreport). Transfer the focus to active window by calling the setFocus() method, as it is done in case of transferring the focus to any other widget. Pick-to: 6.0 5.15 Fixes: QTBUG-85846 Change-Id: I91ebf182fd5bb7d451a1186e2f3e38c8d48acc4e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix the tips still show when cursor move to another actionQiang Li2021-01-152-1/+57
| | | | | | | | | | | | In this case, the previous action's tip is still displayed when the cursor moves from one action with tip to another action without tip. Fixes: QTBUG-89082 Pick-to: 5.15 Pick-to: 6.0 Change-Id: I0a00595dc3d716725678487be9cbb363c4d3b392 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix QApplication::font returns the font unstable according to the objectChunLin Wang2021-01-151-0/+42
| | | | | | | | | If a default font was not registered for the widget's class, it returns the default font of its nearest registered superclass. Fixes: QTBUG-89910 Pick-to: 5.15 6.0 Change-Id: I6e6b2c6a0044462f84db9f76a03be0c6cfaaae8e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Widgets: fix setTabOrder for QAbstractSpinBox-like widgetsIvan Solovev2021-01-141-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | setTabOrder was not considering the case, when a child widget has its focus proxy set to its parent widget. This happens, for example, for the QLineEdit that is nested inside the QAbstractSpinBox. For such cases the lastFocusChild was calculated incorrectly, and, as a result, such child widgets were not correctly positioned in the focus chain. This could lead to an error while backtabbing. Here is a brief example. Suppose we have 3 widgets arranged like this: auto spinBoxOne = new QDoubleSpinBox; auto spinBoxTwo = new QDoubleSpinBox; auto button = new QPushButton; Then the default widget focus order is: - spinBoxOne - lineedit (from spinBoxOne) - spinBoxTwo - lineedit (from spinBoxTwo) - button Before this commit setting the explicit tab order changed the focus order in the following way: QWidget::setTabOrder(spinBoxOne, spinBoxTwo); QWidget::setTabOrder(spinBoxTwo, button); - spinBoxOne - spinBoxTwo - button - lineedit (from spinBoxOne) - lineedit (from spinBoxTwo) In this case, backtabbing from spinBoxOne actually leads us to lineedit (from spinBoxTwo), which refers to spinBoxTwo. And so we're stuck in a loop. This commit fixes the issue by handling such special case, and preserving correct focus order. Note: the actual unit-test in this patch uses QLineEdit instead of QPushButton, because one can't tab to buttons on macOS by default. However the general idea is the same. Pick-to: 6.0 5.15 Fixes: QTBUG-81097 Change-Id: I5d16da7733a4d63f809cab28b8ca9e116b87cffa Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove .prev_CMakeLists.txt filesJoerg Bornemann2021-01-1210-318/+0
| | | | | | | | | | Those serve no purpose anymore, now that the .pro files are gone. Task-number: QTBUG-88742 Change-Id: I39943327b8c9871785b58e9973e4e7602371793e Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Set the PlaceholderText color in the palette from the stylesheet as wellAndy Shaw2021-01-121-0/+16
| | | | | | | | | | The color should be used across the board, so the PlaceholderText color should also be respecting the one passed for Text and so on. Fixes: QTBUG-89815 Pick-to: 6.0 5.15 Change-Id: I2accb3db35488f95a1c8ebacf2316a08ee416fac Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Introduce QUrlResourceProvider to load resources for HTMLAlexander Volkov2021-01-121-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | QTextDocument and the text editor classes suggest to override their loadResource() methods to provide data associated with a text document. This approach has the following drawbacks: - it requires subclassing - there is no way to set a global resource provider - QLabel is missing virtual loadResource() method and it can't be added without breaking ABI QUrlResourceProvider is designed to solve these issues. One should create a derived class that implements QUrlResourceProvider::resource(). The objects of the derived class then can be set for any text document. The default resource provider can be set with QUrlResourceProvider::setDefaultProvider(). This change also adds QLabel::setResourceProvider(), which doesn't break ABI. [ChangeLog][QtGui][Text] Introduced QUrlResourceProvider that allows to load resources for HTML. It is intended to replace the use of QTextDocument::loadResource(). Change-Id: Iaf19b229f522a73508f20715257450fe58f68daf Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Android: exclude failing tests for tst_QPlainTextEdit on AndroidAssam Boudjelthia2021-01-111-0/+10
| | | | | | | | | | | The Android tests were marked insignificant for some days, due to an emulator issue, these tests slipped during that time. Exclude them now to bring Android tests. Task-number: QTBUG-89402 Pick-to: 6.0 Change-Id: I96d0f87b36975b7e2c83956b04b6569a03a781a9 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Replace some more erase/remove patterns with removeIfGiuseppe D'Angelo2021-01-101-4/+2
| | | | | Change-Id: I6c6f33450fbfd798e5ef71a8ba18f590581dc3a2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* tst_qstylesheetstyle: blacklist tests for QEMU ARMv7Samuli Piippo2021-01-071-0/+6
| | | | | | | | QEMU ARMv7 uses different font, which doesn't pass the tests. Task-number: QTQAINFRA-3836 Change-Id: I8454c35d99045adfd28d3bcbbaf791b0a668978f Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>