summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* QCalendarWidget: code tidies for the internal modelGiuseppe D'Angelo2020-07-081-31/+20
| | | | | | | | | | | | | | The table model inside a QCalendarWidget was violating a few QAIM principles: * returning illegal values from row/columnCount by not checking the parent index * not keeping invariants on row/column manipulation. Pick-to: 5.15 Change-Id: I2c51e59ea2d89e73884bad20f3c06fbb808a26c5 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Item widgets: fix crash in mimeTypes()Giuseppe D'Angelo2020-07-082-2/+7
| | | | | | | | | | *Always* check the result of a dynamic/qobject cast. I'm not positive if the cast is correct (or should it just be a static cast), but in principle these models can be used with a different view. Change-Id: I37108cbb2744b6bf0fb46392d1cc9883f2d0b60e Pick-to: 5.15 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Replace use of deprecated Q_OS_MACX in favor of Q_OS_MACOSTor Arne Vestbø2020-07-083-7/+7
| | | | | Change-Id: I1059d56f67be28a4cc1a66b744e81df6d0b5d00d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Move method only used in keypad navigation to a better placeVolker Hilsheimer2020-07-072-27/+14
| | | | | | | QDesktopWidget in particular doesn't use that code anymore. Change-Id: I8eed752175c5478663b25872c7ffe78c814245d7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Refactor QTabBarPrivate::Tab and much of its usage in QTabBarVolker Hilsheimer2020-07-072-171/+187
| | | | | | | | | | | | | | | | | | | | | | | | | The type was broken in that it pretends to be a value, but didn't implement the necessary operators for save copy, move, or comparison. Tabs are supposed to be managed by Tab instance, as the crazy implementation of operator== demonstrated. Refactor the code to use it as a pointer consistently, even though this means additional allocations for each tab. This is however acceptable since there are not millions of tabs, and there is only a single place where tabs are removed from the list. Also use ranged for where possible, and never access the tabList using operator[] to avoid detaches. Use a std::unique_ptr for the animation in the tab, which implicitly protects against attempts to copy a Tab, and allows us to use the compiler generated default destructor. Add Q_DISABLE_COPY_MOVE for good measure, the compiler-generated move semantics would not work either due to the back-pointer from animation to the tab. Change-Id: I8e8c071472f8f1f401b0f4f1dde074d800842934 Fixes: QTBUG-85394 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add ; to Q_UNUSEDLars Schmertmann2020-07-0724-56/+56
| | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: I3f0b6717956ca8fa486bed9817b89dfa19f5e0e1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Remove usage of QDesktopWidget(Private) from most places in QtWidgetsVolker Hilsheimer2020-07-0724-191/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Call QGuiApplication and QScreen APIs directly to get geometries, and make use of QScreen::grabWindow grabbing the screen it's called on when called with WId == 0. This assumes that QGuiApplication::screen and QWidget::screen never return nullptr, which is already assumed in other places. In QSplashScreen, simplify the code to operate on the screen of the QSplashScreen itself. Remove the case that handles a QDesktopWidget parent - QSplashScreen doesn't have a constructor that takes a QWidget* parent anymore. In the QEffect implementation, we can rely on the widget pointer not being nullptr (it's tested in the free functions client code uses). Includes a few drive-by changes to coding style and logic in qtooltip.cpp, where the tip label placement now prefers the screen of the widget the label is created for, and uses the position only as a fallback. What remains is the special handling of QDesktopWidget and the Qt::Desktop type in QWidget and QApplication. Change-Id: I30b67bab8ae82ddfcc7bbbec3c10f6e935b74f06 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* macOS: Remove QMenu indirection via QPlatformNativeInterfaceTor Arne Vestbø2020-07-071-18/+14
| | | | | | Task-number: QTBUG-83252 Change-Id: I0c750d2b1912ced343d96ea0ca081c3319be2889 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use QList instead of QVector in qtbaseJarek Kobus2020-07-073-11/+11
| | | | | | | | Fixes all other QVector occurrences Task-number: QTBUG-84469 Change-Id: I5f9311298d341a9a3061a6a640539583d1618939 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Clean up data members and initialization in QAbstractSpinBoxVolker Hilsheimer2020-07-072-26/+25
| | | | | | | | Group the bit flags together and generally order roughly by size to give the compiler better packing options. Change-Id: I9468d5aaef96e115ad363c59222e626d792a0edc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Remove unused virtual method QWindowPrivate::allowClickThroughVolker Hilsheimer2020-07-071-6/+0
| | | | | | | Always returned true, also in the QWidgetWindowPrivate override. Change-Id: I01d11ae6f85882b52ce397125f994eea663ffcb5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Use qsizetype in QListLars Knoll2020-07-065-6/+6
| | | | | | | | | | | | | | | | | | | | The change creates a slight source incompatibility. The main things to take care of are * code using printf statements on list.size(). Using qsizetype in printf statements will always require a cast to work on both 32 and 64 bit. * A few places where overloads now get ambiguous. One example is QRandomGenerator::bounded() that has overloads for int, uint and double, but not int64. * Streaming list.size() to a QDataStream will change the format depending on the architecture. [ChangeLog][QtCore][QList] QList now uses qsizetype to index into elements. Change-Id: Iaff562a4d072b97f458417b670f95971bd47cbc6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Simplify QMainWindow::setUnifiedTitleAndToolBarOnMacTor Arne Vestbø2020-07-061-21/+14
| | | | | | Task-number: QTBUG-83252 Change-Id: Ib6f7dcfe21407603d4cfd5d33f6615d8623db940 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Make QtPlatformHeaders a private moduleTor Arne Vestbø2020-07-064-1/+5
| | | | | | | | | | | The APIs will be reintroduced as part of the new platform interface API where appropriate. Clients that still depend on the platform headers can include it via QT += platformheaders-private. Change-Id: Ifbd836d833d19f3cf48cd4f933d7fe754c06d2d9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Remove unnecessary ; after function implementationsLars Schmertmann2020-07-061-1/+1
| | | | | | Task-number: QTBUG-82978 Change-Id: Iea3bcaec1ef9f4bd0f73e5dccca33354650f5bf4 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Improve data member ordering and initialization in some private classesVolker Hilsheimer2020-07-043-93/+66
| | | | | | | | | Put bit fields together, and generally order by size to maximize the compiler's ability to pack data. Initialize in declaration where possible. Change-Id: I49d4a3d2271229d671aeaf3eb17e6b7ecdc5099e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Avoid use of Q_UNUSED by eliminating the parameter namesLars Schmertmann2020-07-032-2/+2
| | | | | | | | | This change only happens to files touched by the commit to add missing ; to Q_UNUSED. Task-number: QTBUG-82978 Change-Id: I10e6993a2bb3952cf9a262708b8573550e0dbe63 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Only use one macro per lineLars Schmertmann2020-07-031-1/+2
| | | | | | | | | Also add a ; where it is missing. Task-number: QTBUG-82978 Change-Id: Ic5d2a07363c25ab641d234baca89bc62238458cb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Keep track of mouse button state in QTabBarVolker Hilsheimer2020-07-022-6/+14
| | | | | | | | Get rid of call to QGuiApplication::mouseButtons Task-number: QTBUG-73829 Change-Id: I7cc706b5e037c68ecf3c778b824ae8c93e5cfe38 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Pass modifier and button information down the call stackVolker Hilsheimer2020-07-021-4/+11
| | | | | | | | | Gets rid of calls to QGuiApplication::mouseButtons and QGuiApplication::keyboardModifiers. Task-number: QTBUG-73829 Change-Id: Idba978fe8db21622ca05c4882c74fd2792b119e5 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Maintain keyboard modifier state in QAbstractSpinBox's input event handlersVolker Hilsheimer2020-07-022-3/+10
| | | | | | | | | | Gets rid of calls to QGuiApplication::keyboardModifiers. Need to handle key and mouse events, since the spin buttons may be clicked on without the spinbox having focus. Task-number: QTBUG-73829 Change-Id: I455c42987f19bb5b7997dc8d61272863d7bc394e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Use QList instead of QVector in widgetsJarek Kobus2020-07-0291-456/+499
| | | | | | Task-number: QTBUG-84469 Change-Id: I3007734f8e4f164ece9dd8850ef007cbef9e12ef Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Manage keyboard modifier state in QPlainTextEditVolker Hilsheimer2020-07-022-1/+7
| | | | | | | | | Gets rid of a call to QApplication::keyboardModifiers, at the expense of some more bytes in QPlainTextEditPrivate. Task-number: QTBUG-73829 Change-Id: I0394cb773034e832cffe5fa643ac308493f815b4 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Make feature datetimeparser depend on feature datestringEdward Welbourne2020-07-022-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | No client of QDateTimeParser actually uses it unless datestring was enabled, nor is it any use without datestring. Various methods conditioned on datestring are broken unless datetimeparser is enabled. We can't condition public API on datetimeparser, as it's a private feature, but client code can condition use of it on the private feature. All string-to-date/time conversions that use a string format (this includes all locale-specific formats) depend on feature datetimeparser. Change #if-ery (or add it) in all client (including test) code to test the right feature. Tidied up some code in the process. Killed some already-redundant textdate #if-ery. Renamed a test whose name claimed it involved locale, which it doesn't, in the course of #if-ing it. This simplifies the condition for feature datetimeedit (which overtly depended on textdate, redundantly since it depends on datestring which depends on textdate; its dependence on datetimeparser now makes its dependency on datestring also redundant). It also removes the need for assorted datestring checks in QDateTimeParser itself. Change-Id: I5dfe3a977042134b2cfb16cbcc795070634e7adf Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add keyboardModifiers member to QStyleOptionSlider, and use it for macVolker Hilsheimer2020-07-023-2/+4
| | | | | | | | | | Gets rid of a call to QApplication::keyboardModifiers in a method that is anyway only called from an input event handler, where we have that information already. Task-number: QTBUG-73829 Change-Id: I81753d6bf725e9db4918d831fac5b03a0b1940b9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Doc: make paragraph about access of QStyleOption members consistentVolker Hilsheimer2020-07-021-90/+122
| | | | | | | | Slight language simplification, and consistent usage of paragraph for all QStyleOption subclasses. Change-Id: I06a0480fc963d4457d5397b11df3acf62bc6912a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QTabBar: make sure the tab is repainted after releasing mouseWang Chuan2020-07-021-2/+4
| | | | | | | | | | | | | | The tab has to be repainted even f the mouse release event happened outside the tab bar, otherwise it will look like the tab is still pressed. As a drive-by, replace the repaint() call with update(); there is no need for synchronous painting in an event handler. Pick-to: 5.15 Fixes: QTBUG-81637 Change-Id: Ia55182be906511ac3b462f00add8a621c6c05fc3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix delivery of MouseMove events to newly opened popup windowsVolker Hilsheimer2020-07-012-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Amend d934fd7f54eae24ea3f719890e2c4dbbc445049d, which was too naive in assuming that any change to the popup stack while a popup had been pressed into should result in mouse move events to be delivered without buttons. Instead, add a new flag that is set explicitly when the qt_popup_down widget is closed, and remove buttons from the move move events only when that flag is set. Add the sorely missing test case as well, even if we have to accept that not all behavior can be tested reliably. Ie. on macOS, the simulated mouse event differs from the event we do get from the QPA plugin or the system; on Xcb, some of the behavior depends on the window manager. This is something we could try to clean up for Qt 6. Change-Id: Ibf0a0a6fb7d401915057365788947e5a35aa20c3 Fixes: QTBUG-84926 Task-number: QTBUG-82538 Pick-to: 5.15 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Liang Qi <liang.qi@qt.io>
* Doc: Update docs with cmake package informationNico Vertriest2020-06-301-0/+1
| | | | | | Task-number: QTBUG-85179 Change-Id: I70dda9b906ecd0b8d8f4d88b0562af8e6c428143 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove leftover QT_WARNING_POPTor Arne Vestbø2020-06-291-1/+0
| | | | | | | Amends ab1e0961d4718fb5e36e22c3b70dd98e776e0edd. Change-Id: I460d650e70dc5635cb377569aa976f11fc206d63 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QFileDialog: remove deprecated mode QFileDialog::DirectoryOnlyChristian Ehrlicher2020-06-262-53/+7
| | | | | Change-Id: Ia06e80c1bbed3e5bb80793aebd0a4780eb81a36b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Skip proxy widgets that can't take focus when (back)tabbingVolker Hilsheimer2020-06-251-4/+6
| | | | | | | | | | | | | | Fixes regression introduced in b4981f9d4ca914c6ecaa49bfdd69e51806a3671a, due to which it was possible to back-tab into a widget even though it or its focusProxy had a NoFocus policy. As a drive-by, split the complicated if-statement up a bit for improved readability. Change-Id: Ib0ac2604076e812e340b11534c23ae8ae958d082 Fixes: QTBUG-76924 Pick-to: 5.15 5.12 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Remove deprecated QStyleOption::init()Christian Ehrlicher2020-06-2119-38/+31
| | | | | | | | Even it was not marked as deprecated the replacement function initFrom() is available since Qt4 times (and init() is deprecated since then) Change-Id: I09a4ebbf66b01fbe7aec67691dc68d2e42d1cd78 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Move implementation of QVector/List back to qlist.hLars Knoll2020-06-201-2/+1
| | | | | | | | | | | | | And name the main class QList. That's also the one we document. This gives less porting pain for our users, and a lot less churn in our API, as we use QList in Qt 5 in 95% of our API. In addition, it gives more consistent naming with QStringList and QByteArrayList and disambiguates QList vs QVector(2|3|4)D. Fixes: QTBUG-84468 Change-Id: I3cba9d1d3179969d8bf9320b31be2230d021d1a9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove deprecated roles BackgroundColorRole and TextColorRoleChristian Ehrlicher2020-06-202-4/+0
| | | | | Change-Id: I2729102d1efa9f3809ec22c29517961800e7dc6d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove deprecated QStyleOptionFooVx typedefsChristian Ehrlicher2020-06-202-122/+0
| | | | | | | They were not used the whole Qt5 lifetime. Change-Id: I1452b90d63bbeed3cc9131b04ed5263b38ad89b3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QTreeWidget: remove deprecated function items()Christian Ehrlicher2020-06-202-13/+0
| | | | | | | | | It does not return anything and was already deprecated in Qt4.8 (and already returned an empty QList back then) Change-Id: I3a2f1b79081d3289d13ba9fdee346aa730d16114 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port Q_STATIC_ASSERT(_X) to static_assertGiuseppe D'Angelo2020-06-194-8/+8
| | | | | | | | | | | | | | | | | There is no reason for keep using our macro now that we have C++17. The macro itself is left in for the moment being, as well as its detection logic, because it's needed for C code (not everything supports C11 yet). A few more cleanups will arrive in the next few patches. Note that this is a mere search/replace; some places were using double braces to work around the presence of commas in a macro, no attempt has been done to fix those. tst_qglobal had just some minor changes to keep testing the macro. Change-Id: I1c1c397d9f3e63db3338842bf350c9069ea57639 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Introduce QInputDevice hierarchy; replace QTouchDeviceShawn Rutledge2020-06-165-28/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have seen during the Qt 5 series that QMouseEvent::source() does not provide enough information: if it is synthesized, it could have come from any device for which mouse events are synthesized, not only from a touchscreen. By providing in every QInputEvent as complete information about the actual source device as possible, we will enable very fine-tuned behavior in the object that handles each event. Further, we would like to support multiple keyboards, pointing devices, and named groups of devices that are known as "seats" in Wayland. In Qt 5, QPA plugins registered each touchscreen as it was discovered. Now we extend this pattern to all input devices. This new requirement can be implemented gradually; for now, if a QTWSI input event is received wtihout a device pointer, a default "core" device will be created on-the-fly, and a warning emitted. In Qt 5, QTouchEvent::TouchPoint::id() was forced to be unique even when multiple devices were in use simultaneously. Now that each event identifies the device it came from, this hack is no longer needed. A stub of the new QPointerEvent is added; it will be developed further in subsequent patches. [ChangeLog][QtGui][QInputEvent] Every QInputEvent now carries a pointer to an instance of QInputDevice, or the subclass QPointingDevice in case of mouse, touch and tablet events. Each platform plugin is expected to create the device instances, register them, and provide valid pointers with all input events. If this is not done, warnings are emitted and default devices are created as necessary. When the device has accurate information, it provides the opportunity to fine-tune behavior depending on device type and capabilities: for example if a QMouseEvent is synthesized from a touchscreen, the recipient can see which touchscreen it came from. Each device also has a seatName to distinguish users on multi-user windowing systems. Touchpoint IDs are no longer unique on their own, but the combination of ID and device is. Fixes: QTBUG-46412 Fixes: QTBUG-72167 Task-number: QTBUG-69433 Task-number: QTBUG-52430 Change-Id: I933fb2b86182efa722037b7a33e404c5daf5292a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Always show a submenu on its parent menu's screenShawn Rutledge2020-06-161-1/+1
| | | | | | | | | | | | | | | QWidget::screen() was added in b455a863a1df61337f36f2e8b43101ca21514697 and this is another good use for it (in 5.15 and newer). Amends c068edcecf6876c7b57abbe302ad8b1347e4445e Pick-to: 5.15 Fixes: QTCREATORBUG-24195 Task-number: QTBUG-76162 Change-Id: Ifaafe9b45fafaae220da54bbf3bc7a568e7953f9 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix breakage of QPushButton on macOS when a style sheet was setVolker Hilsheimer2020-06-111-0/+1
| | | | | | | | | | | | | | | | | | | | | Amends comment 6e1d70ae12baae4610356ec7b69635ad75a97b4e, which introduced SE_PushButtonBevel so that QPushButton could ignore clicks outside of the button's bevel. In the macOS style, make sure that the framerect we pass to NSButton::alignmentRectForFrame is the rect we receive from QPushButton in the style options. The frame property of the shared NSButton* object might not be initialized. In the style sheet style, handle SE_PushButtonBevel the same ways as Contents and FocusRect, as it is not a separately styleable property. Change-Id: I12eb1b046c864a02b34d276e6352e2e16d44231e Fixes: QTBUG-84852 Fixes: QTBUG-84879 Task-number: QTBUG-81452 Pick-to: 5.15 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fix QToolButton menus showing on primary screens in multiscreen setupsFriedemann Kleint2020-06-101-1/+2
| | | | | | | | | | | | | | Calculate an initial position based on the current size hint and pass it to QMenuPrivate::exec(), which does screen checks based on it. Amends a78d66743171557d79b16c08be775e3ac15bb4ef. Pick-to: 5.15 Fixes: QTBUG-84462 Task-number: QTBUG-78966 Change-Id: Icae8d2bc0fb50c4c853cfebaa2b2250fc06542e3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Merge QToolTip::showText overloads as per ### Qt 6 commentsVolker Hilsheimer2020-06-102-28/+6
| | | | | Change-Id: Ic156fed27bd535daf828e5d95049591833614307 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Long live std::pair!Giuseppe D'Angelo2020-06-102-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make QPair an alias for std::pair, and qMakePair just a forwarder towards std::make_pair. Why? Fundamentally to ditch a bunch of NIH code; gain for free structured bindings, std::tuple and std::reference_wrapper compatibility, and so on. Breakages: * Some that code manually forward declares QPair. We don't care about it (<QContainerFwd> is the proper way). * Some code that overloads on std::pair and QPair. Luckily it's mostly centralized: debug, metatypes, testing macros. Just remove the QPair overload. * Usages of qMakePair forcing the template type parameters. There are a handful of these in qtbase, but only one was actually broken. * std::pair is NOT (and will never likely be) trivially copiable. This is agreed to be a mistake done by practically all implementations in C++11, can can't be fixed without breaking ABI. Some code using QPair assuming it's trivially copiable may break; exactly one occurrence was in qtbase. * QMetaType logic extracts the type names in two different ways, one by looking at the source code string (e.g. extracted by moc) and one via some ad-hoc reflection in C++. We need to make "QPair" (as spelled in the source code) be the same as "std::pair" (gathered via reflection, which will see through the alias) when compared. The way it's already done e.g. for QList is by actually replacing the moc-extracted name with the name of the actual type used in C++; do the same here. On libc++, std::pair is actually in an inline namespace -- i.e. std::__1::pair; the reflection will extract and store "std::__1::pair" so we need an ad-hoc fix to QMetaType. [ChangeLog][QtCore][QPair] QPair is now an alias to std::pair, and does not exist as a class in Qt any more. This may break code such as functions overloaded for both QPair and std::pair. Usually, the overload taking a QPair can be safely discarded, leaving only the one taking a std::pair. QPair API has not changed, and qMakePair is still available for compatibility (although new code is encouraged to use std::pair and std::make_pair directly instead). Change-Id: I7725c751bf23946cde577b1406e86a336c0a3dcf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port QtWidgets from QStringRef to QStringViewLars Knoll2020-06-1012-20/+20
| | | | | Change-Id: Ibe348e7aea838ab8c2d628bb43709c867a506637 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Make QLayout::spacing/setSpacing virtual, remove qobject_cast hackVolker Hilsheimer2020-06-095-39/+16
| | | | | Change-Id: If256609a1f561b957378010d88120f5aaf94a45e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Unexport private classes that are no longer used outside QtWidgetsVolker Hilsheimer2020-06-083-6/+3
| | | | | | | | Address ### Qt 6 comments for QFramePrivate, QAbstractScrollAreaPrivate, and QGraphicsTransformPrivate. Change-Id: I9407c03247c7ea41decce6f9c289c16ad8bf0c3f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Phase 2 of removing QDesktopWidgetVolker Hilsheimer2020-06-0841-398/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove QDestopWidget public header, simplify the implementation that maintains a Qt::Desktop type QWidget for each QScreen, and turn QWidget's initial target screen into a QScreen pointer. QApplication::desktop() now takes an optional QScreen pointer, and returns a QWidget pointer, so that applications and widgets can get access to the root widget for a specific screen without having to resort to private APIs. QDesktopWidgetPrivate implementations to look up a screen for an index, widget, or point are now all inline functions that thinly wrap QGuiApplication::screens/screenAt calls. We should consider adding those as convenience APIs to QScreen instead. Note that QWidget::screen is assumed to return a valid pointer; there is code that handles the case that it returns nullptr (but also code that trusts that it never is nullptr), so this needs to be defined, verified with tests, and asserted. We can then simplify the code further. Change-Id: Ifc89be65a0dce265b6729feaf54121c35137cb94 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Replace calls to deprecated QEvent accessor functionsShawn Rutledge2020-06-0850-358/+358
| | | | | | | Many of these were generated by clazy using the new qevent-accessors check. Change-Id: Ie17af17f50fdc9f47d7859d267c14568cc350fd0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix build without features.menubarTasuku Suzuki2020-06-082-1/+9
| | | | | Change-Id: If7ad6f4c50936d2abf8b88859cb3a8a6189df152 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>