Commit Graph

33222 Commits (1a342b2db14fa92bca717f5daff950b2eef869f7)

Author SHA1 Message Date
Volker Hilsheimer d934fd7f54 Send MouseMove events without buttons if the press closed the popup
With nested popup widgets, pressing a mouse button on the lower
popup will close the active popup. MouseMove events that are generated
before the button is released again should not have that button
included, as it is likely to result in incorrect state handling in
the widget. This change removes all buttons from the MouseMove event,
which is the second best option.

This is mostly consistent with the behavior when closing a popup and
no other popup remains. The widget underneath will get MouseMove
events without the respective button included.

This change doesn't include a fix for the final release event, which
should ideally also not be delivered to the remaining popup, as it
never got a corresponding press event. Qt has already reset the states
in which it stores which widget received the press event at the time
the release is generated, such as qt_button_down and qt_popup_down.
So we can't separate a release grabbed by a newly opened popup (which
we want) from a release to the popup that became active after closing
(which we don't want).
However, widgets can more easily work around this issue, and the risk
of breaking things by changing the code further becomes too high.

Change-Id: I603bbdbc7e7355952d96ab77c5e2d2f1e6f94987
Fixes: QTBUG-82538
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2020-03-30 20:06:20 +01:00
Allan Sandfeld Jensen 8f88a3962a Fix 1 pixel wide images
Images are rounded up to 4 bytes per line minimum, so one pixel wide
images might not shrink when resizing.

Fixes: QTBUG-83179
Change-Id: If72c94409e4c899c5ad05b2867f5f53a94d0580f
Reviewed-by: Christian Kamm <mail@ckamm.de>
2020-03-30 20:55:11 +02:00
Liang Qi 22fe293038 testlib: add QAbstractItemModelTester::verify()
This amends b3e4be2d8b.

When building testlib with QtGui linked:(use "QT = core-private gui"
in src/testlib/testlib.pro)

    Undefined symbols for architecture x86_64:
      "QAbstractItemModelTester::verify(bool, char const*, char const*, char const*, int)", referenced from:
          QTestPrivate::testDataGuiRoles(QAbstractItemModelTester*) in qabstractitemmodeltester.o

Change-Id: Ideb10ddd6717fed8d9f91f75bbfc9d5a22104730
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-03-30 19:32:06 +02:00
Shawn Rutledge 68916fede4 Finish deprecating TouchPoint::rect, sceneRect and screenRect accessors
All 6 getters and setters were deprecated by doc comment \obsolete in
3c159957f8 (Qt 5.9). Now we will generate
compiler warnings too.

Change-Id: I94c6da607fa5758072af1287c9286b6c52179cfb
Reviewed-by: Frederik Gladhorn <gladhorn@kde.org>
2020-03-30 18:12:51 +02:00
Eskil Abrahamsen Blomfeldt 3abacf39de RHI: Fix running with Vulkan on Wayland
When the Wayland client plugin is in use, the capabilities
for the surface may report a minimum image count of 4. The
internal "maximum minimum count" of 3, was arbitrary and
only used for sizing buffers. To be more friendly to different
setups, we remove the restriction and use QVarLengthArrays
instead.

We also set the initial size of the buffers to 4 so that we
can run with Wayland without any resizing, but now the arrays
will also grow to be safe for cases where 4 is not sufficient.

Change-Id: Iba5434e84417d36b70f2655b152e816f04650ce4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-30 14:04:19 +02:00
Eskil Abrahamsen Blomfeldt adc205631b Android: Update minimum version to 23 again
In 519ea72108, the minimum SDK
version was moved away from the AndroidManifest.xml, and when
the change was merged, we lost parts of the update to set
the minimum version to 23.

This redoes it in the remaining locations.

Change-Id: Iada8188d3c0c8ec0a4801c1d219640ecb3976753
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-30 13:04:06 +01:00
Eskil Abrahamsen Blomfeldt a35a7fcb5a Android: Implement MaximizeUsingFullscreenGeometryHint
(This reintroduces c17a5cec19,
which was reverted in Qt 5 because it requires API level 23.)

This flag tells the app to use as much of the screen as possible
while still keeping system UI visible, and can be supported on Android
by using translucent system UI, similar to iOS.

What this does:
1. It changes the current fullscreen/not-fullscreen logic to
allow three states: fullscreen, fullscreen with translucent
decorations and not-fullscreen.

2. In order for it to work, we have to send the actual
screen geometry and available geometry, at least in the case
where the user needs to know the available geometry to
know the safe area of the window. So we get the real screen
metrics and pass these to the QPA plugin (API level 17, so
we can do that now that the minimum version is 21.)

3. Note that getting the insets and calculating the useable
area does not work for non-fullscreen windows, since Android
is quite inconsistent in this respect. So in this case we
just use the window size and origin of 0,0 for the available
geometry.

4. Since we are touching this code anyway, this patch also tries to use
more consistent wording (calling it "available geometry" everywhere
instead of desktop geometry in some places and just geometry in
others, etc.)

[ChangeLog][Android] Qt::MaximizeUsingFullscreenGeometryHint window
flag is now supported, and will make the window fullscreen, but keep
the system UI on-screen, with a translucent background color.

Fixes: QTBUG-74202
Change-Id: I4cc5ef9cc2a3bd22d4d8d2bb767c6ff8a3aa75c0
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-30 13:03:49 +01:00
Andy Shaw 2e0c29a4bb itemviews: Use the start of the current selection when getting the range
When doing a shift-select while moving the mouse then the start point
should be based on the start of the current selection and not the
pressed position. If there is no current selection start index, then
we can safely depend on pressed position as this will be the previous
index pressed on.

This resolves an issue introduced by
e02293a76d when fixing QTBUG-78797

Fixes: QTBUG-81542
Change-Id: Ia66c42b220452fdcbc8cfccc05dbc8a3911c3f5e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-30 11:17:59 +00:00
Mitch Curtis 3f73995a03 Move undo framework out of Qt Widgets
- Moves QUndo* classes (except QUndoView) from src/widgets/utils to src/gui/utils
- Moves related auto tests from widgets to gui
- Replaces QUndoAction with lambdas that do text prefixing

[ChangeLog][Undo Framework] QUndo* classes (except QUndoView) were moved from Qt
Widgets to Qt GUI.

Done-with: volker.hilsheimer@qt.io
Fixes: QTBUG-40040
Change-Id: I3bd8d4d32c64f8dee548f62159a1df2126da89d8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-30 12:36:29 +02:00
Lars Knoll adc1be3c33 Get rid of QRegExp usage in qfiledialog
and replace with QRegularExpression

Change-Id: Ic692fc0ea24da84dd4b6bb4c8a846c0fcc62c3cb
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-30 11:33:11 +01:00
Lars Knoll 3532c0256d Make MatchRegExp an alias to MatchRegularExpression
All matching happens using QRegularExpression now.

Change-Id: I10bfcefbf4d9c79d235242e3e05116cdf7af02d1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-30 11:33:07 +01:00
Lars Knoll 2e0070d42c Remove QRegExp dependencies and mentions
Change-Id: I399f8980f56eda5d60b554aa942bf045ab91e0d6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-30 11:33:02 +01:00
Lars Knoll 3151c510e8 Remove some leftovers of QRegExpValidator
Amends dee55af0a5

Change-Id: I59c02c6c289028abb86cdab1b2f2b3efdcea7821
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-30 11:32:57 +01:00
Martin Storsjö 907652e1ed Extend the configure test for C++17 filesystem
If recent versions of libc++ are built with filesystem support disabled,
the filesystem header still is installed., The std::filesystem::path()
constructor is completely defined inline in that header, making the test
pass on such configurations, despite C++17 filesystem not being
implemented.

Test a call to std::filesystem::copy instead, which requires the actual
library implementation to be available as well (on recent libc++).

Change-Id: Id997ab75f3299d8431b13cad871f2901f4d9f6ed
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-30 13:31:05 +03:00
Eirik Aavitsland c3b6d09cae Update bundled libjpeg-turbo to version 2.0.4
[ChangeLog][Third-Party Code] libjpeg-turbo was updated to version 2.0.4

Change-Id: I7f74af0dc774a2172ff59713613a706e80d5b2cb
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-30 07:36:47 +01:00
Joni Poikelin 7eb7bb979e Fix Fusion style ignoring SH_UnderlineShortcut from proxy style
Fixes: QTBUG-83133
Change-Id: If3fbfae515567d9a0136beb35ca1f9f59460894b
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-30 09:11:26 +03:00
Volker Hilsheimer b61ea367a5 Fix deprecation warnings in QCocoaCursor
Explicitly use the Qt APIs that return QPixmap and QBitmap by value, and
fix the API taking those to use const references rather than pointers
or const values.

Change-Id: I2bb7ad1edb3b65f806f0475fca383e5b9bdb61f3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-30 00:11:51 +01:00
Vitaly Fanaskov 5a0d4f3313 QtConcurrent: add fluent interface to configure a task before run
Task-number: QTBUG-82950
Change-Id: I449da938b6b501a7646b3425edde5c880d6ca87e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
2020-03-29 20:44:32 +01:00
Volker Hilsheimer d975ad4ed7 Merge QGuiShortcut and QShortcut again in QtGui
QShortcut has only one widget specific feature, which is whatsThis; that
is just a QString, so the setters and getters can just as well be in
QtGui.

The widgets specific implementation of shortcut matching and of showing
the whatsThis balloon stays in QtWidgets, in the private implementation.
Using virtual functions in the private we can override the empty default
in QtGui, and by adding a virtual factory function in QGuiApplication,
the correct private is instantiated depending on the kind of application
running.

Change-Id: I09ae4a5482f9fb70940c5e2bfe76d3d7fd710afc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-29 19:31:14 +01:00
Volker Hilsheimer bcaff2b06f Remove QGuiAction again and split QAction implementation up instead
Duplicating the number of classes is a high price to pay to be able to
have some QAction functionality behave differently, or be only available
in widgets applications.

Instead, declare the entire API in QtGui in QAction* classes, and
delegate the implementation of QtWidgets specific functionality to
the private. The creation of the private is then delegated to the
Q(Gui)ApplicationPrivate instance through a virtual factory function.

Change some public APIs that are primarily useful for specialized tools
such as Designer to operate on QObject* rather than QWidget*. APIs that
depend on QtWidgets types have been turned into inline template
functions, so that they are instantiated only at the caller side, where
we can expect the respective types to be fully defined. This way, we
only need to forward declare a few classes in the header, and don't
need to generate any additional code for e.g. language bindings.

Change-Id: Id0b27f9187652ec531a2e8b1b9837e82dc81625c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-29 11:18:57 +01:00
Konstantin Ritt e3d0184065 Follow bundled Harfbuzz update
as we raised the minimum requirement for harfbuzz to version 2.6.0:
* use new HB_SCRIPT values instead of tags
* get rid of deprecated (and no-more-used) callbacks
* replace deprecated hb_ot_tags_from_script() usage with a more
  flexible and up-to-date hb_ot_tags_from_script_and_language()

Change-Id: I0eafdd2d2028c353fa3a93f5868efceccd364a70
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-28 13:44:19 +03:00
Christian Ehrlicher 8de62d3432 QAbstractItemView::dataChanged(): optimize call to QWidget::update()
When topLeft and bottomRight are different in QAIV::dataChanged(), the
current implementation simply calls QWidget::update() without checking
if the affected cells are visible. This results in a big performance hit
when cells are updated frequently.
Now try to compute the exact update rect by iterating through the
modified indexes.

Fixes: QTBUG-58580
Change-Id: I97de567d494e40ed8cdb1ea1f5b3cf3a2f60455e
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-28 09:03:18 +01:00
Konstantin Ritt b8be5b4002 HB-to-Qt bridge: get rid of stale/dubious safety checks
these aren't needed for quite a long time already

Change-Id: I3a5ce3199cee467d7dfba3c68256d214fee4d83c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-28 04:17:28 +03:00
Thiago Macieira 783d574b93 CBOR support: prevent overflowing QByteArray's max allocation
QByteArray doesn't like it.

Apply the same protection to QString, which we know uses the same
backend but uses elements twice as big. That means it can contain
slightly more than half as many elements, but exact half will suffice
for our needs.

Change-Id: Iaa63461109844e978376fffd15f9d4c7a9137856
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-27 16:45:48 -03:00
Qt Forward Merge Bot fd44fb7675 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-27 18:58:56 +01:00
Simon Hausmann 865d3846d8 Revert "QMetaType: support manual unregistration"
This reverts commit cf000d080c.

Reason for revert: This API is not needed (anymore) by qtdeclarative.

Change-Id: I8af604c2babe3afc11f183ddb3ce3a9038a456ad
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-27 16:57:05 +01:00
Morten Johan Sørvig 3a6d8df521 Revert "wasm: Specify event targets by CSS selectors; Support emsdk >= 1.39.5"
This reverts commit c6da278271.

This was a 5.15-only change which should not go into 5.14
since it raises the minimum supported emsdk version.

Task-number: QTBUG-83098
Change-Id: I9e15952803f9dfff89b5b4e9caeff5c03dabca27
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-27 13:47:09 +01:00
Simon Hausmann f3ce9e9332 Make QPropertyBindingPrivate accessible to QtQml
QtQml needs the private just for one detail which nobody else should
need it for: Tracking additional dependencies and marking the binding as
dirty. Exporting the private requires hiding some variables and
providing accessors, to compile with MSVC - including the removal of
QVarLengthArray usage. Upside: The binding structure shrinks by 8 bytes
and the encapsulation makes it a little easier to change things without
breaking declarative, ... in the unlikely event ;-)

Also remove setDirty() from the public API as it's not needed by QtQml
and using it is dangerous, because it means that there's a risk of
somebody keeping a reference (count) to the untyped binding from within
the binding closure, which introduces a memory leak.

Change-Id: I43bd56f4bdf218efb54fa23e2d627ad3acfafeb5
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-27 13:29:47 +01:00
Eirik Aavitsland 533f7d7ca3 Raster painting: fix dashing for separate lines
When drawing multiple distinct (unconnected) lines (e.g. from
QPainter::drawLines() or a QPainterPath with alternating
movetos/linetos), the dash pattern should not continue from one to the
next, as it should when drawing a connected line (e.g. polyline).
Both the cosmetic stroker and the full stroker does it right, but the
fast rasterizing codepath got it wrong.

Fixes: QTBUG-83048
Change-Id: I3d090f7121726755a0e53cb66b99a5563ac0e1c0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-27 12:31:01 +01:00
Volker Hilsheimer 0613bf5d16 QTextEdit: remove the cursor when a read-only textedit looses focus
A read-only text edit with Qt::TextSelectableByKeyboard shows a steady
cursor to indicate to users that they can select the text, but not edit
it. When the control receives focus, it doesn't turn on blinking, but
explicitly sets cursorOn to true.

When focus is lost, then cursorOn needs to be reset to false to make
the cursor disappear, even if the blinking (as indicated by the poorly
named cursorVisible variable) is not on.

Change-Id: I78408b5c50c6ede3f9a7128be7a31b9c6795cf9c
Fixes: QTBUG-83029
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-03-27 12:13:53 +01:00
Tor Arne Vestbø d4a4202caa widgets: Sync client rect of paint-on-screen widgets during resize
Paint events are delivered with the client rect of the widget, and
this applies to paint-on-screen widgets as well. The same goes for
how the widget repaint manager tracks dirty rects. Internally we
were also calling paintOnScreen() with client rects, so the use
of geometry() in the resize handler was likely a bug/oversight.

Change-Id: I1312ccf77218d1162e0971e4cbabaa80f49c852c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-27 11:19:52 +01:00
Tor Arne Vestbø 80be47ae06 macOS: Fix or ignore deprecated API in 10.14
Fixes: QTBUG-82128
Change-Id: I11abfcf7f245a7a25733625b50e207b07abba289
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-27 09:00:11 +00:00
Qt Forward Merge Bot 4752bd7718 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/serialization/qcborvalue.cpp

Change-Id: I539d8cae5fd413b8a6c9c5d8a6364c79c8133a0a
2020-03-27 09:23:33 +01:00
Christian Ehrlicher ddcf0df7d7 Speed up QSortFilterProxyModel filtering
Speed up the QSortFilterProxyModel filtering by only updating the
source_to_proxy entries which are really changed - When proxy intervals
are added or removed, it is not needed to update the proxy_to_source
indexes which were not touched.

Change-Id: I35459ff1b04f4610ec74f4b01d58a71832a9ae22
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-27 06:56:23 +01:00
Lorn Potter 6434101360 wasm: refactor network to use fetch API
This has better support for threaded use, and gets rid of bind use.

This requires emscripten 1.38.37 and above

Task-number: QTBUG-76891
Change-Id: Ic30a6820c2ce945c314751c06cfc356914a71217
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-26 22:36:36 +00:00
Topi Reinio 96de59d7c1 Doc: Document new property change notifiers for QSortFilterProxyModel
Change-Id: I02789fa2281d33c7344a5d5e730a27fe6fa50e56
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:28:42 +01:00
Topi Reinio 07558ae12d Doc: QItemSelectionModel: Note when function default arguments were added
Change-Id: I4b7a9269b68c86548035b57211c4c1b5ad451767
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:28:08 +01:00
Topi Reinio 7d0f24b166 Doc: Mark QTextStream manipulators as deprecated
and instruct to use the ones from the Qt namespace instead.

Task-number: QTBUG-82532
Change-Id: I6a85f5096da8aec925a287beff136b77d113926e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:58 +01:00
Topi Reinio beffcc590c Doc: Expand reasoning for QHash deprecations
and mark QHash::[const_|key_]iterator operators correctly as deprecated.

Change-Id: I01da16254759b9bdb7920709de45a72933d6b5c8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:49 +01:00
Topi Reinio f588804725 Doc: Expand reasoning for QMap deprecations
Change-Id: Idaec1ebd2a392af2b8d778e72acda6bd117d1a48
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-26 15:27:39 +01:00
Topi Reinio bd9a13b370 Doc: Fix \fn command for qScopeGuard(F &&f)
and tag it in the header file to ensure the documentation is matched.

Change-Id: Id1e7cd395ca0ec337845da9a207bfbf95db01064
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-26 15:27:28 +01:00
Topi Reinio 737e7524e8 Doc: Fix documentation for deprecated QSet functions
QDoc has trouble applying the \obsolete command for multiple
topic (\fn) commands in one go. Separate them out and expand
the reasoning for deprecation.

Mark the rest of the deprecated functions and typedefs related
to reverse iterators as \obsolete.

Change-Id: I09858efd7e1e5fc890d4f3f063f00c8812fc0b52
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:16 +01:00
Topi Reinio 5a7a590e8a Doc: Mark deprecated QMutableSetIterator functions as \obsolete
Change-Id: I07a4ade20242fbe4139c0b88cf8728dd74628511
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:27:07 +01:00
Topi Reinio e16137d2db Doc: Document QDBusReply copy constructor
Change-Id: Ice71b8d48f92b9ecd3075fba1927d3657934b018
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:26:48 +01:00
Topi Reinio c81b172781 Doc: Mark gamma-related functions deprecated in QImageReader/Writer
Change-Id: I0a9fbcca7a10a6555f5879cc4955f046eaa56602
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-26 15:26:35 +01:00
Topi Reinio a320b57f1d Doc: Don't mention deprecated functions in QTabletEvent overview
Change-Id: I5d41d6061403f2923d673376be7cf1250d0f0e82
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-26 15:26:21 +01:00
Volker Hilsheimer 5f87fb8813 QLineEdit: Include the horizontal margin in minimumSizeHint
The margin is respected in the sizeHint, but not in the minimumSizeHint.
Since the latter should be the former for a single character (as per the
documentation promising enough space for one character), the margin
calculation needs to be identical.

Adjusting the documentation nevertheless, as there are characters that
won't fit either way. As reported, the permyriad character doesn't fit
even with this fix on macOS, as the core graphics API we are using
doesn't report a glyph-index for U+2031 (so our existing assumption
that 'W' is the widest character is still the best we can do).

Change-Id: I30573960c316cc7b8c9bbe3c3f4c6351792bed36
Fixes: QTBUG-82970
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-26 14:56:57 +01:00
Lars Knoll b3b51a7665 Fix deprecation warnings for QInputDialog::getDouble()
The way this was done didn't really make sense. The change added
an overload with one additional argument. The deprecation warning
would have now forced everybody to explicitly specify all arguments
to avoid the warning.

Instead, keep both overloads in 5.15, but document them as one method.
Remove the old version in Qt6 and move the default arguments to the
new version.

Change-Id: I738d4d1b99cdf30db53acf14382a00cac74aa10a
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-03-26 14:48:17 +01:00
Andre de la Rocha 319ac188eb Windows QPA: Enable Toggle UIA pattern for all checkable controls
This change allows the checked/unchecked state to be detected by screen
readers for all controls with a checkable state.

Task-number: QTBUG-81919
Change-Id: I604151397b4ae21297009c274ffe634723ebe783
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-26 14:25:00 +01:00
Andre de la Rocha c91b7f15ce Add "checkable" state to QAccessibleTableCell
The information about whether a table/tree item may be checked is necessary
to allow the platform code (in particular, Windows UI Automation layer)
to make this information available to screen readers.

Task-number: QTBUG-81919
Change-Id: Id68eea4a004788751404d70567222a2c531578aa
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-26 14:24:43 +01:00
Morten Johan Sørvig 85a1582412 wasm: add braces around multiline else case
From clang warning:

qwasmcompositor.cpp:335:13: warning: misleading indentation;
	statement is not part of the previous 'if' [-Wmisleading-indentation]
		offset += (delta +delta);

Change-Id: Id372dfdd8fda1c705c61a24c26843dfb33fba40c
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-03-26 12:31:09 +01:00
Paul Wicking 3f3e200aef Doc: Fix coverity warnings in SQL snippets
Fixes: QTBUG-83008
Change-Id: I126bc04719cd221a3d80ae825fca44e63aeec934
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-03-26 12:25:06 +01:00
Lars Knoll f2208c59e7 Add a public qsimd.h header
This header only covers a part of what qsimd_p.h does, namely
the compile time detection of simd extensions.

Change-Id: I05f1d987f194a5bec335f2405cc2846fbaa88b66
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-26 09:15:37 +01:00
Lars Knoll f2f32b88b8 Move qsimd* from corelib/tools to corelib/global
It's not used in tools at all and fits a lot better in global.

Also fix the qsimd_x86* files to have a proper copyright
header.

Change-Id: Id3d8e7cfcd7769a1ca9f3d8cf6d357a31a99ba40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-26 09:15:32 +01:00
BogDan Vatra c0538d5ff3 Revert "Android: Fix compile on arm64"
This reverts commit 81d6906ad9.

Fixed upstream. \sa https://github.com/harfbuzz/harfbuzz/issues/1308

Change-Id: I7759e2bb199ffd11d42239be59704c4e1f7ddb9f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-26 01:57:11 +03:00
Lars Knoll 6fea5b4dd8 Make QCborValue::toCbor() const
Those methods don't modify the CBOR value, they should be const.

Change-Id: I213984ed82e43429413344999a22ad1c4c3beac8
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-25 23:33:57 +01:00
Thiago Macieira f581b04119 QCborValue: apply a simple optimization to avoid unnecessary allocations
If the map or array is known to be empty, we don't need to allocate a
QCborContainerPrivate.

Change-Id: Ief61acdfbe4d4b5ba1f0fffd15fe212b6a6e77c3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:22:02 -03:00
Thiago Macieira 02d595946f QCborValue::fromCbor: Apply a recursion limit to decoding
A simple 16k file can produce deep enough recursion in Qt to cause stack
overflow. So prevent that.

I tested 4096 recursions just fine on my Linux system (8 MB stack), but
decided 1024 was sufficient, as this code will also be run on embedded
systems that could have smaller stacks.

[ChangeLog][QtCore][QCborValue] fromCbor() now limits decoding to at
most 1024 nested maps, arrays, and tags to prevent stack overflows. This
should be sufficient for most uses of CBOR. An API to limit further or
to relax the limit will be provided in 5.15. Meanwhile, if decoding more
is required, QCborStreamReader can be used (note that each level of map
and array allocates memory).

Change-Id: Iaa63461109844e978376fffd15fa0fbefbf607a2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:21:47 -03:00
Thiago Macieira b7da66132b QCborValue: create a wrapper to set the QCborStreamReader error state
The next commit will need to do so from outside QCborContainerPrivate,
where QCborStreamReader::d can't be accessed (private).

Change-Id: Iaa63461109844e978376fffd15fa0f6f04081bf2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 16:21:38 -03:00
Thiago Macieira 028ddf3633 QProcess/Linux: use the FFD_VFORK_SEMANTICS flag
... when we are not using the FFD_USE_FORK flag. We use the FFD_USE_FORK
flag when we have user code to run in setupChildProcess(). This code is
enabled for all Unix, but forkfd() honors this flag only on Linux >=
5.4.

See the commit adding the flag for more information on what the flag
does and see the comment in this commit on why it's safe to use it.

Fixes: QTBUG-17331
Change-Id: I1bee3bc466a04f19bd6efffd15f448cb23ce1e91
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:41 +01:00
Thiago Macieira defd49f7bf forkfd: add FFD_VFORK_SEMANTICS flag
This flag asks forkfd() to use vfork semantics wherever available. That
is, suspend the calling process execution until the child either does an
execve(2) or _exit(2). The advantage of that is that it puts lower
pressure on the OS VMM system, as the number of pages that need to be
copy-on-write duplicated is much smaller (still not zero, as at least
the stack in the child will be written to).

However, the only implementation that supports using this flag for now
is Linux's pidfd. It would be possible to add to FreeBSD, but pdfork(2)
does not have a flag for this behavior -- if it gets one, we can add
support for it later. Everywhere else, we need to force the child to not
exit until we store the child process's PID in the ProcessInfo structure
we allocated, which means the parent process must run before we even
return from forkfd().

Change-Id: I1bee3bc466a04f19bd6efffd15f447f28c201aa9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-25 20:19:38 +01:00
Thiago Macieira ba5e2ce49a forkfd: fix forkfd_wait when FFD_USE_FORK was active
If we detected that the OS supports a version of system forkfd (Linux
pidfd, FreeBSD procdesc), the forkfd_wait() function was using only the
system waiting implementation, which of course can't work for file
descriptors created with FFD_USE_FORK. So just detect EBADF and attempt
again.

If the file descriptor is neither one of our pipes nor a system forkfd,
bad things will happen...

Fixes: QTBUG-82351
Change-Id: I4e559af2a9a1455ab770fffd15f59fb3160b22eb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:36 +01:00
Thiago Macieira 4605583fec forkfd: introduce forkfd_wait4() that takes options
"wait4" because it looks like the wait4() BSD function, which has the
signature:

       pid_t wait4(pid_t pid, int *wstatus, int options,
                   struct rusage *rusage);

And because ours also has 4 parameters.

Having options is important anyway. I might want to add some more later,
but we can't really support them with the fall back implementation (in
fact, we don't honor WNOHANG in the fall back implementation either).

Change-Id: I4e559af2a9a1455ab770fffd15f5858bb357e15b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-25 20:19:34 +01:00
Fabian Kosmale fe275c75ae QMetaType: Do copy constuctible check at compile time
Change-Id: I2f6a9bbaa0153fa33fc6a0b68bcedfbe3b9b1a7c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 17:55:29 +01:00
Fabian Kosmale 98ca319819 QMetaType::fromType: support classes with inaccessible dtors
Change-Id: I60a1b2496d48651a8166173b420da37f59d7a395
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 17:55:28 +01:00
Mårten Nordheim eb13e75f56 QHttpNetworkReplyPrivate: Remove unused variable
Oh, and re-remove the spdy protocol handler.

Change-Id: I9ca3517b14ac202eac19ae75d481cfd78d431abb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-25 16:44:17 +01:00
Michal Klocek b1e3f33a28 Call post routines from ~QGuiApplication
Currently depending if user uses QApplication
or QGuiApplication we end up in different behavior
when running post routines. For example QApplication
destructor calls post routines before stopping event dispatcher,
In case of QGuiApplication post routines are called
from QCoreApplication destructor, so no more event dispatcher.
This behavior is not consistent and creates troubles
when releasing resources of web engine.

Attached test will hang on windows with QGuiApplication,
however works fine with QApplication.

Task-number: QTBUG-79864
Change-Id: Ice05e66a467feaf3ad6addfbc14973649da8065e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-25 14:40:32 +00:00
Kai Koehne e63d227289 CMake: Warn about using internal macros and functions
These functions and macros were never documented.
Let's warn about using them for now, with the option of
removing / renaming them in Qt 6.

Change-Id: Ia595aa35b73e54534e535d2946581651af8023f2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 14:43:02 +01:00
Leander Beernaert 8dcf7d2674 CMake: Add support for bundled SQLite library
Change-Id: I4d3f6e3bf04eb2fcf337e2c5dbc04b6e6f8ebe0b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 13:52:05 +01:00
Lars Knoll 46ebd11e66 Fix deprecation of QComboBox:::currentIndexChanged(const QString&)
Don't introduce another overload with two parameters. Users
want a simple signal to connect to, not another overload. Deprecate
the currentIndexChanged(QString) overload, usage of that can/should
get replaced by currentTextChanged().

This partially reverts commit 11dc7b35c8.

Change-Id: I5e7d16413f3d62b1a5a7a197f510af2c45cdfa55
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-03-25 13:09:38 +01:00
Tor Arne Vestbø 02fa39ed22 macOS: Flush sublayers via separate IOSurface backingstores
Flushing sublayers via QImage copies of the root IOSurface was causing
performance regressions due to the constant allocations of new images
each frame.

We now re-use the QCALayerBackingStore implementation for sublayers,
which gives a dynamic swap-chain.

We're still paying the CPU cost of the copy from the root backingstore
to the layered backingstores, as well as the memory cost, but at least
improves the situation.

We do not try to be smart and paint directly into the sublayers,
as that would leave the root backingstore stale, potentially causing
glitches when views are repositioned. Investigating this is left
for future work.

Fixes: QTBUG-82986
Change-Id: I758a3d8e1e40e2ed4fe6bc590a4a5a988d87a3a7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit ce2d68ebe1aefeae78ff2fd8ec5ff7e20790ef69)
2020-03-25 12:20:00 +01:00
Joni Poikelin d0b30de542 Avoid recreating QRegularExpression for every text block
With very complex regular expressions this makes a significant
difference in performance.

Change-Id: I5267bf71cae98dffb58ec7a1fc982dae639ff312
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-25 12:33:26 +02:00
Lars Knoll 7b5e4b6944 Don't call QSet::erase() on an end iterator
hash.erase(hash.constFind()) is bound to crash if the hash doesn't
contain the item we're looking for.

Change-Id: Icbefca87b0258970373ec55d5dc113e6ab39c5f0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-25 11:33:23 +01:00
Leander Beernaert f716a87352 CMake: Fix configuration of FEATURE_JPEG
Without this patch JPEG support is always disabled, even though we can
build it from 3rdparty sources.

Change-Id: I9e619f0ca8ec3ca3e7c58981bb6af9b33426a029
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 10:51:55 +01:00
Lars Knoll 874c6b00dd Remove QSignalMapper::mappedWidget()
mappedObject() can do exactly the same thing, there's no need for a
mappedWidget() signal as well

This removes a reverse dependency between Qt Widgets and Qt Core where
QWidget pointers are being used inside Qt Core.

[ChangeLog][QtCore] Removed QSignalMapper::mappedWidget. Connect to
mappedObject instead, and use qobject_cast<QWidget *> to handle Widgets.

Change-Id: I60618a34dd94575e993bd6d8a2cead95cfd71d55
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-25 09:46:15 +01:00
Lars Knoll 53f8f23369 Get rid of QRegExp usage in rcc
As a drive-by, enable testing of rcc in the cmake build.

Change-Id: I4150ff3ffe7404bab0cbc72f80b23b47a60cf33d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-25 09:34:37 +01:00
Lars Knoll a7fe1af609 Remove QRegExp usage from the XBM handler
Change-Id: Ie7141c2a04c233bc1298195aebfc0437e43df0d1
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-25 09:34:32 +01:00
Kai Koehne de67bca44e Remove qt6_use_modules
qt5_use_modules has been deprecated in 2013 (commit d9ea4bb144)
and removed for the first time in 2018, but then brought back - see
discussion in https://lists.qt-project.org/pipermail/development/2018-June/032837.html .

Anyhow, I think we can finally put it to a rest in Qt 6.

Change-Id: I770f7e93406ad68535d1d90e4a3bacfb920e2d5a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-25 08:39:43 +01:00
Giulio Camuffo b15ed929f3 Fix memory leak
When creating a new QColorSpacePrivate it must be reffed otherwise in
the destructor the deref() will bring the count to -1 which is true
and will not delete the d_ptr.

Change-Id: Id569bae22134b56bf6ad37158d7079b495599fd7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 20eabb72de)
2020-03-25 01:15:51 +01:00
Konstantin Ritt 5e213a41ce HB-to-Qt: stop propagating helpers and types not used outside QtGui
Change-Id: I039efaeabc83bc0367bb3ab949057d2cbc6c2742
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-25 02:22:14 +03:00
Morten Johan Sørvig 1d5eb202b9 wasm: Add OpenGL version check
QtQuick3D probes for the supported OpenGL level by testing
multiple OpenGL versions in descending order. Context creation
must fail for versions not supported by WebGL. It does not
appear that Emscripten does this for the 3.x minor versions,
at least.

Add version check which allows OpenGL (ES) 3.0 and 2.0.

Change-Id: Ide8745dd79e69af86812a8d6f5d6cc16ecdd099a
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2020-03-24 21:08:54 +00:00
Allan Sandfeld Jensen 5e1e4b9d52 Extend tiled optimization in 64-bit painting to 64-bit sources
Change-Id: I74b88781d631ee68822cd08f9cb0aca03f7b688e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-24 21:29:22 +01:00
Liang Qi 08fff0cb55 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-24 21:22:40 +01:00
Timur Pocheptsov 4561370661 More qOverload cleanups in qtbase
Task-number: QTBUG-82605
Change-Id: I1c3c14ed82911ed5483258c11e76f5dd7744fa12
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-24 20:58:13 +01:00
Allan Sandfeld Jensen 28a0f1ba79 Fix use of deprecated ::forcesign
Change-Id: I39322bcc0e24d0bfccf43c8700a166ce350208ea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 17:41:30 +01:00
Mårten Nordheim 737fe89691 Q{File,FileInfo,Dir}: add std::filesystem::path overloads
Add some overloads where (I thought) it makes sense for QDir and QFile
to accept std::filesystem::path objects. Currently my thinking is to
not add overloads for static functions where std::filesystem can already
do the same job, e.g. create directory or file.

Template and enable_if is needed due to both QString and
std::filesystem::path being able to be constructed from string literals.

The common shared code is currently in QFile because QDir had an
implicit include of QFile, made explicit in this patch, and QFileInfo
has an include to QFile as well.

The QT_HAS_STD_FILESYSTEM macro is visible in user-code which I
currently take advantage of in the tests, and users could too.

Change-Id: I8d05d3c34c6c17e20972a6a2053862b8891d6c3c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-24 16:20:03 +01:00
Liang Qi 576dc2c701 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/plugins/platforms/xcb/qxcbdrag.cpp

Change-Id: I0b47324b70b0b4894e54b21aa3e7a5041f9bd5e3
2020-03-24 14:36:02 +01:00
Oliver Wolff f10b31fc1b ANGLE: Fix resizing of windows (Take 2)
Task-number: QTBUG-62475
Change-Id: I0ea17e7875906508941ae64bb396a4236928b0f9
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 14:25:51 +01:00
Tor Arne Vestbø bd78753d62 widgets: Re-calculate focus frame style option after setting new geometry
Fixes: QTBUG-83019
Change-Id: I75d3d93732cb0c5a5b7350f19f0227998bda4791
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-24 10:19:12 +01:00
Sze Howe Koh 6a972f44f3 QXcbCursor: Replace deprecated QCursor API
Align with e79a625381 in qtbase.

Task-number: QTBUG-48701
Change-Id: Ia3ca2de6bbf4e9c1738f77193351dd95a14dd2dc
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-24 06:26:33 +00:00
Konstantin Ritt 7c3700c070 Darwin: get rid of Harfbuzz/CoreText specific code
once CoreText shaper in Harfbuzz has been disabled, we do not need
the hack-ish enablers to support it

Follows-up 21c242f9fd

Change-Id: I40d598b2c9b57ca7953716a56e4e119b2fc06a9b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-24 02:00:22 +03:00
Konstantin Ritt 1ab2e4baef Harfbuzz: get rid of Qt-specific patch in CoreText shaper code
this code isn't used as of 21c242f9fd
and thus we do not need to keep the patch around

Change-Id: Ic3b836c6a68f40b8e450542a39db968ef3b09101
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-24 01:58:08 +03:00
Konstantin Ritt 12d3d32f31 QTextEngine: stop guessing the same language in a loop
Change-Id: I155b9380a4ff412d59c7939c377d20f4783e4730
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-24 01:57:09 +03:00
Volker Hilsheimer 34fe5f75bc Deprecation warnings: replace qrand with QRandomGenerator
Change-Id: I80fe6f611b367c6c8a1b77e82dc791493f88929b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-23 20:24:58 +01:00
Volker Hilsheimer c14f3deca9 Fix deprecation warnings from NSColor(Space) with macOS 10.14 SDK
The support for handling color spaces by names is deprecated in
recent AppKit versions, and should be replaced by using
NSColor.type, and operations on the type-specific properties of
the color.

Merge the two implementations from qcoregraphics.mm and
qcocoacolordialoghelper.mm, which also fixes the inconsistent
interpretation of color components as device dependent (in
qcoregraphics) or generic (in qcocoacolordialoghelper). We now
always populate the QColor with device independent components.

Change-Id: Id79c609736ff1962bebe4bd7158781a6d1b4475e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-23 17:36:52 +01:00
Alexander Volkov cc1d891b8e xcb: Add support for XdndActionList property
This allows to pass and receive possible drop actions from other
processes, including GTK applications.

Fixes: QTBUG-75744
Change-Id: I944edc6fa00f8801a25912e70eb104a647a9fc0e
Reviewed-by: JiDe Zhang <zccrs@live.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-23 19:35:19 +03:00
Sona Kurazyan 9ff75d4ea1 Make QFuture::d private
Change-Id: I5820fa1d6d0f003a7cb95db115ef90b32f380a79
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 16:47:55 +01:00
Sona Kurazyan 1005c86c61 Clean-up the duplicate code in QFuture and QFutureWatcher
QFuture<void> and QFutureWatcher<void> are specialized to not contain
any of result fetching methods, but otherwise they share almost the same
implementation with QFuture<T> and QFutureWatcher<T> respectively.

This change unifies their implementations to get rid of unnecessary code
duplication.

Change-Id: I9494ddc58c6db192c66edb988105927da6d61a3b
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
2020-03-23 16:47:47 +01:00
Giulio Camuffo 20eabb72de Fix memory leak
When creating a new QColorSpacePrivate it must be reffed otherwise in
the destructor the deref() will bring the count to -1 which is true
and will not delete the d_ptr.

Change-Id: Id569bae22134b56bf6ad37158d7079b495599fd7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-23 16:47:22 +01:00
Mitch Curtis 3f744be923 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-23 13:55:35 +01:00
Timur Pocheptsov da1d6bccd2 Fix the name in invokeMethod
Task-number: QTBUG-82605
Change-Id: If21d9c25d607e8a363fe703b4ffa1e2d207eef39
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 12:58:06 +01:00
Ulf Hermann 94c564a082 Fusion Style: Use qobject_cast rather than dynamic_cast
We want to avoid RTTI.

Fixes: QTBUG-82287
Change-Id: Ib034094d4035d6dfa99d00ac198c93cc9572755b
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-23 12:00:46 +01:00
Jean-Michaël Celerier b4b8ffb233 rhi: gles2: fix uniform gathering after struct-type member in UBOs
Given:

    struct Light { vec4 foo; };
    layout(std140, binding = 2) uniform material {
      Light light;
      int lightCount;
    };

the previous code would keep "light" appended for the prefix and look for
`light.lightCount`.

Change-Id: Ia8deacd0cb4833f45151e922fa7b5970169332eb
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-23 10:59:30 +01:00
Alexandru Croitor 16df037f9d CMake: Fix metatype file generation not to happen in the source dir
When building qtdeclarative in a non-prefix configuration,
metatypes.json files were created in the source dir. This happened
because the default arg_INSTALL_DIR value is relative in
qt6_generate_meta_types_json_file, and thus a file(TOUCH) with a
relative path creats it in the source dir.

The fix is to check if it's relative during a non-prefix build,
and make it absolute (relative to the install prefix, which is the
qtbase build dir).

Change-Id: Ie9abbd5d93a64e79184d77655d8d8399e894fde5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-23 09:54:52 +01:00
Joni Poikelin cb509f3aee Doc: fix copy paste errors in border-*-style documentation
Change-Id: I442513ec87e25610898c2102170a5f2bfec5ee77
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-21 11:36:04 +02:00
Christian Ehrlicher 1e03015d55 QTableView: Make sure to repaint all needed cells during resizing
Don't try to update the scrollarea geometry while resizing a row or
column since this may lead in flickering and artifacts, esp when the
scroll mode is scrollPerItems. Instead do the calculation only when the
resize is finished.

Fixes: QTBUG-72870
Fixes: QTBUG-82595
Change-Id: Id6903c00485b3be6ed54bd5f9bcafdda6da21598
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-21 07:05:27 +01:00
Thiago Macieira d55dad94f9 64-bit atomics: fix bad copy/paste in macro definitions
Fixes: QTBUG-82864
Change-Id: I35d5bcc92b2e4bddaacbfffd15fc42d054fcb2b1
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-03-20 17:12:58 -05:00
Christian Ehrlicher bd75c87e0e Doc: replace deprecated references to QGLWidget
Remove references to the deprecated QGLWidget and replace it with
QOpenGLWidget.

Change-Id: Ia31df42ab61c25e9ce46f4491267d2c64910f55c
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-20 22:27:29 +01:00
Volker Hilsheimer 580e9eedf7 QDateTimeEdit: with keyboardTracking off, allow values outside the range
QDateTimeEdit very aggressively prevents user input that would result in
values that are outside the dateTimeRange. While keyboardTracking is on
this makes sense, as otherwise the dateTimeChanged signal would be
emitted after each section, with a value that is outside the range.

However, this prevented users from entering a date that is allowed, but
where sections of the date are above or below the respective section in
the maximum or minimum value.

If keyboardTracking is off, QDateTimeEdit only emits the dateTimeChanged
signal at the end of editing, when focus is lost or the return key is
pressed, and then it enforces that the value is within the range anyway.
This change makes the parser ignore the range during editing if
keyboardTracking is off, thus allowing the user to enter a date where
temporary values are outside the range.

The test makes sure that we don't get signals emitted with out-of-range
values, testing both with and without keyboard tracking.

Change-Id: I00fb9f1b328a3477163f890c4618b40878657816
Fixes: QTBUG-65
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 22:18:00 +01:00
Thiago Macieira 30a0787907 Fix binary compatibility issue in QJson{Array,Object} initializer_list
The rewrite using CBOR internals replaced one of the two naked pointers
that were members of QJsonArray and QJsonObject with a
QExplicitlySharedDataPointer. The problem is that its operator= will
read the current value to decrement the refcount and possibly delete the
pointed object.

But QJson{Array,Object}::initialize() are called from inlined code,
without initialization. So we can't call operator=. We need to memcpy to
write a nullptr.

This is not unit-testable because it requires compiling against 5.14 or
earlier, then running against 5.15.

Fixes: QTBUG-82700
Change-Id: Iaa63461109844e978376fffd15f98c62656d197c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-20 13:18:00 -08:00
Thiago Macieira c798b286bd Doc: update QJsonObject::operator[] non-const to say it creates key
the non-const QJsonArray::operator[] requires a valid index and all the
const operator[] say that it returns Undefined if the key or index
doesn't exist. This is the exception.

Task-number: QTBUG-39864
Change-Id: Iaa63461109844e978376fffd15f9716f0cc66cca
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 21:18:00 +00:00
Giuseppe D'Angelo d41d8297c8 OpenSSL: bump the minimum supported version to 1.1.1
We don't support 1.0 any more, and 1.1.0 has reached EOL.
Bump to 1.1.1 so we can freely use its APIs.

[ChangeLog][QtNetwork][SSL] The minimum required version
of OpenSSL is now 1.1.1.

Change-Id: I5cfb6672fadfa48aedaefbcd6a954aa9eb85bfa5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-20 18:23:55 +01:00
Robin Burchell 2af04860f6 qtimezoneprivate_tz: Apply a cache over the top of timezone data
Constantly re-reading the timezone information only to be told the exact
same thing is wildly expensive, which can hurt in operations that cause
a lot of QTimeZone creation, for example, V4's DateObject - which
creates them a lot (in DaylightSavingTA).

This performance problem was identified when I noticed that a
QDateTime binding updated once per frame was causing >100% CPU usage
(on a desktop!) thanks to a QtQuickControls 1 Calendar (which has a
number of bindings to the date's properties like getMonth() and so
on).

The newly added tst_QTimeZone::systemTimeZone benchmark gets a ~90%
decrease in instruction count:

--- before
+++ after
 PASS   : tst_QTimeZone::systemTimeZone()
 RESULT : tst_QTimeZone::systemTimeZone():
-     0.024 msecs per iteration (total: 51, iterations: 2048)
+     0.0036 msecs per iteration (total: 59, iterations: 16384)

Also impacted (over in QDateTime) is
tst_QDateTime::setMSecsSinceEpochTz(). The results here are - on the
surface - less impressive (~0.17% drop), however, it isn't even
creating QTimeZone on a hot path to begin with, so a large drop would
have been a surprise.

Added several further benchmarks to cover non-system zones and
traverse transitions.

Done-With: Edward Welbourne <edward.welbourne@qt.io>
Task-number: QTBUG-75585
Change-Id: I044a84fc2d3a2dc965f63cd3a3299fc509750bf7
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-20 16:58:09 +02:00
Mauro Persano d535dfea1f Doc: replace QFileInfo::created with birthTime
Change-Id: Ia497febcbf28e4b3babe50fc6f05e12f3d686b91
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-20 09:20:54 -03:00
Mitch Curtis 69a5be7ef0 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ib2a2e3a292af43be3a980c2ccc943c08f4bbf72f
2020-03-20 11:28:14 +01:00
Mitch Curtis b888cc6fbc Fix warning in qsql_odbc.cpp when building with MSVC2017
qsql_odbc.cpp(1589): warning C4267: 'argument': conversion from 'size_t'
to 'int', possible loss of data

Change-Id: Ib36fda3e3b21bdbc8b343ae5136542dfcf3c1065
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-20 11:14:40 +01:00
Allan Sandfeld Jensen aa5855847c Add SSE2 optimized solid source composition
Very similar to source-over, but have traditionally been inlined.

Change-Id: I211f0b1c91c1a00c4769fbbfe2e3d0c7b22d7048
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-20 09:56:15 +01:00
Laszlo Agocs 6c5b42b678 rhi: gl: Reduce state changes
...between setGraphicsPipeline() calls with different
QRhiGraphicsPipeline instances within the same pass.

Also adds similar logic for the GL_ARRAY_BUFFER (vertex buffers)
as that is a hotspot as well.

This is not intended to be a 100% avoiding any redundant call solution,
but rather to take care of the most common hotspots, so that bad OpenGL
implementations with a larger API call overhead will not cause us to
regress compared to the direct OpenGL rendering path in Quick and
Quick3D.

What we have here reduces the number of GL calls in the view3d example
by ~200 within one frame, which is a pretty good start.

Task-number: QTBUG-78603
Change-Id: I6aeab9c1c43b148ea6ef05d0284990a996c7ba28
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-03-20 09:43:04 +01:00
Volker Hilsheimer e7cff5bca7 Fix keypad navigation within a button group for push buttons
Keypad navigation within a group should work for auto-exclusive buttons,
or for checkable buttons that are in a button group. Since the code
already tests whether the button should be treated like an exclusive
(which implies checkable) button, use the result of that test when
finding the candidate button to move focus to, and not only when
actually changing the checked button and the focus.

Change-Id: I4dc41a90d51a8304483046252ceff0ebfe2a2e52
Fixes: QTBUG-27151
Done-with: david.faure@kdab.com
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-20 08:20:00 +01:00
Nico Vertriest 0359a82e6e Doc: make Qt Sql snippets compilable
Task-number: QTBUG-81496
Change-Id: Id6206e9179c2e8157c99e777a3de35bd83d49e34
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-20 06:53:59 +01:00
Simon Hausmann cef009b1e4 Change QTaggedPointer API to be more similar to other smart pointers in Qt
* Rename pointer() to data()

Change-Id: I8ef3e552d45c9990fee4b7efa98e2d878ed2cf98
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-19 19:01:31 +01:00
Mitch Curtis fcbbe7ff21 Merge "Merge remote-tracking branch 'origin/5.14.2' into 5.14" 2020-03-19 16:14:25 +01:00
Mitch Curtis 1480922511 Merge remote-tracking branch 'origin/5.14.2' into 5.14
Change-Id: I34ca28c75b88e882c3f35f182bf01acb22b77637
2020-03-19 16:10:31 +01:00
Tor Arne Vestbø 45fe7adcb8 widgets: Clarify backingstore resize logic by removing cruft
Change-Id: I0a449068a0d4557b7bd6581ddf71c590b72d76a1
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Tor Arne Vestbø 5f3c071ee3 widgets: Remove unused member QTLWExtra::inTopLevelResize
It was introduced in Qt 4.4 (e150f6a6e619) to work around slow resizes
on Windows and X11 due to excessive painting, but has since been removed
when old dead code never ported to QPA was removed in a2337f79ff.

Change-Id: Ic14e714a02edb4194a445a6bb0759b601799fdc6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Allan Sandfeld Jensen cfbe481838 QDrawHelper cleanups
We don't need to handle solid SourceOver logic directly, this was
already handled by getOperator and changed composition to Source.

Also removes some dead code and changes an assert in unreachable
code to Q_UNREACHABLE.

Change-Id: I66a6c1248bd34e31096023f1acb20385099932c9
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-19 15:14:29 +01:00
Timur Pocheptsov ad68ecf1d9 q_getTimeFromASN1: fix invalid access
No sanitizer is needed, just looking at the code is enough.
It was wrong.

Change-Id: I9df417c137d6b3361c3161865e099a8be40860de
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-19 14:48:08 +01:00
Mitch Curtis f5fd9c40cd Fix warnings when building with MSVC2017
qstring.cpp(10210): warning C4267: 'argument': conversion from 'size_t'
to 'uint', possible loss of data

qcontiguouscache.h(141): warning C4003: not enough arguments for
function-like macro invocation 'max'

Change-Id: I01f1fc1c85341ea61c86dcffb1b01fe4cde50eea
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-19 14:13:02 +01:00
Simon Hausmann 044f730214 Add documentation for QTaggedPointer
The class remains \internal though, as it has a very narrow use-case for
low-level code inside Qt.

Change-Id: I9d2b6486ce29b290af7f930a0bfc78590a83cc01
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-19 13:09:25 +01:00
Simon Hausmann 4a702e580e Use QTaggedPointer in QPropertyObserver
This replaces the private tagged pointer and the use of enums for the
tag makes the observer handling code more readable. The
pointer-to-tagged-pointer class remains in qpropertyprivate.h due to its
exoticness.

Change-Id: Icc88799136c6839426d994b42368526463265e66
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-19 13:09:13 +01:00
Simon Hausmann 58992993a3 Add support for explicitly marking a property as dirty
When a binding is backed by old-style property captures, then having
this API is needed for Qml.

Change-Id: Icf51efe057eaf845969ed2cda52d082dedde677e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-19 13:09:03 +01:00
Simon Hausmann 1fcce51053 Enable generic property bindings to QProperty<T>
A generic binding allows implementing the binding function in a way that
enables the QML engine to run binding scripts and convert the V4::Value
into a QVariant and then assign the value to the property with the help
of QMetaType::construct.

Change-Id: Id4807be92eee7e3501908e6c5e4c861cfcb7772a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-19 13:08:56 +01:00
Eskil Abrahamsen Blomfeldt 1a18e138f4 Android: Fix deployment on Windows host
The paths in the build properties require forward slashes
apparently. On Windows, we would default to native backslashes
and they would be stripped from the path. Converting to forward
slashes fixes the problem.

Issue was introduced by dd04fb639b,
since before that, the NDK path was retrieved from the environment.

Fixes: QTBUG-82944
Change-Id: I6c51113efcf671461a5871991b3225a52b95266c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-19 10:23:07 +01:00
Lars Knoll 5eb492fb95 Move the default arguments of fromPath away from the deprecated overload
Move the default arguments to the overload that is not deprecated. This
is fully source and binary compatible.

Change-Id: I0d2eb491faf8c2164b80c33c4c4f749173b690f5
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-19 09:27:18 +01:00
Leander Beernaert dfd37e27ca CMake: Enable testlib selftests
This patch adds the equivalent of testlib's selfcover.pri and is enabled
for both testlib and the respective selftests test.

This patch also fixes the selftests so that they can run without
FEATURE_testlib_selfcover enabled.

Change-Id: I15913de2d572ac79804ce3e652cee66de74318f8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-18 16:28:30 +01:00
Alexandru Croitor 64bda9d915 CMake: Regenerate projects after harfbuzz-ng macOS adjustment
Amends 21c242f9fd

Change-Id: I1041d27d2ab764950b574ff729d987b5efe5f2fe
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-18 16:22:09 +01:00
Lars Knoll 272ddbee70 Remove garbage
Change-Id: Ie0b891b9e9c6d12d8684c85a7717d0828fcf1c0c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-18 15:44:02 +01:00
Qt Forward Merge Bot 08b9539b7a Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-18 15:43:52 +01:00
Simon Hausmann d4f0445331 Add support for exposing public QProperty members in the meta-object system
At the moment this makes the type as well as the setter/getter available
through the meta-call as well as the ability to register observers and
bindings. Only QProperty members that are annotated with
Q_PROPERTY(type name) are made public through the meta-object.

Change-Id: I16b98fd318122c722b85ce61e39975284e0c2404
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-18 15:42:58 +01:00
Giulio Camuffo b5f6a85d27 Add a way to filter only rows or columns in QSortFilterProxyModel
If we want to filter away a column without changing the filtering
for the rows calling invalidateFilter() is wasteful because it will
call filterAcceptsRow() for all rows even though that is not needed.
This commit add two functions, invalidateRowsFilter() and
invalidateColumnsFilter() that work the same way as invalidateFilter()
except that they will invoke respectively only filterAcceptsRow() and
filterAcceptsColumn().

Change-Id: Ib4351cf08c229bd97bbbfee6da92397dca579a84
Reviewed-by: David Faure <david.faure@kdab.com>
2020-03-18 15:42:58 +01:00
Qt Forward Merge Bot 18b69ae8a4 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Ia79c2457f20f3428ef1b4358c1094e8dc1bbc33e
2020-03-18 11:45:08 +01:00
Qt Forward Merge Bot 2329580411 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-18 11:45:01 +01:00
Qt Forward Merge Bot 22daba4ff9 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Iaab37b633a8286c2c21425aaac34d30529a3ea82
2020-03-18 11:44:49 +01:00
Fabian Kosmale 6db55e3451 QSequentialIterable: Treat sets as appendable
QSet and std::(unordered_)set were so far not treated as appendable, as
they lack a push_back method. We do however need support for this in
declarative to enable converting back from QJSValue arrays to sets.
We achieve this by testing for and using the insert method. While vector
has also such a method, it doesn't take a single value, but rather a
position or iterator + value, so the template specialization is not
ambiguous.

Task-number: QTBUG-82743
Change-Id: I74fc7b1b856d9bcd38100b274ba2b69578ea8bbb
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-18 09:54:19 +01:00
Lars Knoll 963c47aece Don't limit AAT support to Darwin based platforms
Harfbuzz supports this in a cross platform way, so there's no
reason not to accept a font with AAT tables on other platforms.

Change-Id: I00c38a11dfd4a32e846254c1da9e8841090f5fd9
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-18 00:39:08 +01:00
Eskil Abrahamsen Blomfeldt 21c242f9fd macOS: Disable CoreText shaper in Harfbuzz-NG
On macOS, we have been using a different code path internally in
Harfbuzz-NG for shaping, since most fonts on the platform are based
on AAT rather than OpenType, and this was not supported by the
OT shaper in Harfbuzz before HB 2.0.0.

However, AAT support has been added to the main shaper code now,
and is in a shape where it is used in both Chrome and Firefox,

Since we have upgraded the Harfbuzz in Qt as well as updated the
minimum required version for system-harfbuzz, we can also use this
code path and avoid another source of platform-specific issues.

Change-Id: I5cf4626d986998a0a4614c751183bcac6f4e588d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 19:46:26 +01:00
Volker Hilsheimer 943cb0999d Header-review: add Q_DECL_DEPRECATED_X macro to deprecated method
Change-Id: I486d479b2e07042b397869aab117f44e65539f1e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 18:20:04 +01:00
Simon Hausmann 733ae8a04b Make it possible to use QTaggedPointer within classes
A common pattern in declarative is to use the unused bits in linked list
next pointers for additional information storage. The "next" pointer is
typically then a tagged pointer of the containing class, which is not
fully defined yet. Therefore alignof() can't be used at tagged pointer
instantiation time. This patch delays the calls to alignment, etc. until
the corresponding functions are used, as in principle the tagged pointer
is just a quintptr and no additional information should be needed until
operating on it.

Change-Id: I87a3578ee921d471e1b60ed5903b549ef0610b97
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-17 17:55:27 +01:00
Simon Hausmann 8337684b04 Fix docs suggesting that it's possible to draw to the X11 screen
It's not possible anymore, since many years. The desktop's don't use the
X11 root window anymore :)

Fixes: QTBUG-82880
Change-Id: I923f29f23e61d93640cacb2ac20620c5ddc480b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-17 17:19:44 +01:00
Edward Welbourne 0677525f2e Update Unicode license for CLDR and UCD
Task-number: QTBUG-82747
Change-Id: I6bbecaf3f0a8f8e7e0ad31074d88dea7ec98dff2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-17 16:17:49 +01:00
Allan Sandfeld Jensen b430826501 Fix memory leak on new QThreadPool::tryStart version
Also documents the ownership of the traditional tryStart better, and
remove a redundant check.

Change-Id: I06202465b782926724fa33a901d08c1626f87373
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-03-17 16:13:48 +01:00
Volker Hilsheimer 1b4d01d163 Add 'since' tag to documentation of new enum value
Change-Id: I400dc1f2d3dba0fa50b2bcb5e4efbcfc0ad912fd
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-17 15:37:44 +01:00
Friedemann Kleint 749e37efc5 Property binding system: Fix developer build with MSVC 2019 (16.4.1)
- Fix wrong forward declaration
- De-inline constructor of QUntypedPropertyBinding(), fixing:

qtbase\include/src/corelib/tools/qshareddata.h(184): error C2027: use of undefined type 'QPropertyBindingPrivate'
qtbase\include/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'
qtbase\include/src/corelib/tools/qshareddata.h(184): note: while compiling class template member function 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)'
qtbase\src\corelib\kernel\qproperty.h(143): note: see reference to function template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>::~QExplicitlySharedDataPointer(void)' being compiled
qtbase\src\corelib\kernel\qproperty.h(142): note: see reference to class template instantiation 'QExplicitlySharedDataPointer<QPropertyBindingPrivate>' being compiled
qtbase\include\/src/corelib/tools/qshareddata.h(184): warning C4150: deletion of pointer to incomplete type 'QPropertyBindingPrivate'; no destructor called
qtbase\include\/src/corelib/kernel/qpropertyprivate.h(60): note: see declaration of 'QPropertyBindingPrivate'

Amends 9f9049b486.

Change-Id: Idd613e2487d5ab7f8ead74747acd976d5d210c28
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-17 12:59:31 +01:00
Mitch Curtis 0dcdfc1ee4 src\angle\src\config.pri: remove references to gnuwin32
gnuwin32 repository was removed from Qt 6 in f96355679.
If we don't do this, it could look for the wrong version of flex.

Done-with: Andy Shaw <andy.shaw@qt.io>
Change-Id: I15cd68ceb17c33dfc6316a469bca706100bfce60
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-03-17 11:05:16 +01:00
Tor Arne Vestbø 165de10027 Introduce helper class QTaggedPointer
Useful for attaching small bits of information in the alignment bits of
a naked pointer. For use in the new property system as well as in
qtdeclarative (where currently a similar class exists as private API).

Change-Id: Idf9b93e714e15129f302e16425dbeda94bcd207b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-17 10:01:04 +01:00
Fabian Kosmale 7ef3826497 Introduce always constexpr variants of qNextPowerOfTwo
Amends e464e1eb8e. qNextPowerOfTwo has the
same issue as qCountTrailingZeroBits.

Change-Id: Ib1905986e932ac130bce7a1d98f4f7b5ef73991f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 10:01:03 +01:00
Alexandru Croitor beebd7f4b1 CMake: Regenerate projects and adjust after old harfbuzz removal
Change-Id: I3a00334f2b29caa739d6a1d8edd4c7311dda812f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 09:17:57 +01:00
Eskil Abrahamsen Blomfeldt cfcf88e259 Fix compilation with -no-feature-regularexpression
This -no-feature has probably not been tested for a while
and seems to have rotted a bit, both some unprotected
uses and some warnings on unused parameters.

Change-Id: Ie20a06c78d3b4c36860dab49d6615eaa8ffc9077
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-17 09:17:08 +01:00
Lars Knoll dee55af0a5 Remove QRegExpValidator
As QRegExp will be moved to a compat library in Qt 6.

Change-Id: I181aec45bd798f49d2c50a0e7fb64782e004b854
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-17 08:35:50 +01:00
Lars Knoll befd198c15 Remove QRegExp usage from the the OCI plugin
Change-Id: I95009b5bc6f9ce4356e707e07c5cb7346aaf9245
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-03-17 08:35:35 +01:00
Lars Knoll b798b2cbb4 Remove QRegExp usage from Qt PrintSupport
Change-Id: I32daae8e5028084dd12f0aba4da7920f995d919f
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-03-17 08:35:31 +01:00
Volker Krause c53cccc171 Fix JNI signature for the timezone getDisplayName call
Due to the changes in 5.14.1 this code now actually seems to be hit here,
throwing NoSuchMethodError exceptions all over the place and breaking
date/time handling quite spectacularly.

Change-Id: I9bee3de39ec98f86d7944b94e89119505f62dc6c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-03-17 08:30:32 +01:00
Volker Hilsheimer ffbf5ae11d Fix potential out-of-bounds or nullptr access
This ammends change baed8534bc, which
might have introduced a hard to reproduce segmentation fault when the
screen number is out of bounds, or when the QScreen object doesn't
return a valid pointer for QScreen::handle.

As the issue doesn't reliably reproduce, this is a speculative fix that
adds bounds and nullptr checking.

Change-Id: I0cec0a344e80159ee1723d840f207267a608cef4
Fixes: QTBUG-82807
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-17 06:15:55 +01:00
Lars Knoll 3a5342163a Bump the minimum requirement for harfbuzz to version 2.6.0
That will give better text rendering capabilities in Qt and allow
us to clean up some more code.

Change-Id: Ia11b7ab57cda8320047381224989766b854e8ca5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:44:35 +01:00
Lars Knoll 47b1e883e4 Remove the old harfbuzz library and integration code
It's not used anymore. harfbuzz-ng is a requirement in Qt 6 if you
want any open type shaping.

Fixes: QTBUG-82881
Change-Id: If7100aebdcfa078a999608bb8f07a2ef3a79d282
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:29 +01:00
Lars Knoll 8863bfa603 Remove old harfbuzz support from QFontEngine
Change-Id: I1595ce32d2b88b98157bcf8020ac22db93d7ea64
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:11 +01:00
Lars Knoll f081348472 Remove old harfbuzz dependency from QTextEngine
We're either using harfbuzz-ng or disable shaping now.

Change-Id: Ia80bc4671efb20eabb35d7560abc774cdad7f424
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:43:04 +01:00
Lars Knoll dd7d8304bb Remove harfbuzz dependency from qunicodetools
Copy the relevant harfbuzz code over from Harfbuzz into qunicodetools.cpp

This is basically the attribute functions from the different harfbuzz
shapers. Those methods do not require any font support but operate
purely on unicode input data.

Adjusted the code to use Qt's own data structures and enums (QChar::Script
and friends) instead of the harfbuzz equivalents.

The code is 100% copyright The Qt Company, so we can do this without
requiring any attribution.

Change-Id: I8262ba34eae1837f031f07d1b6d9917c0224e160
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:42:58 +01:00
Lars Knoll 76ced3f179 Change signature of initScripts to take out pointer to a QVLA<ScriptItem>
This avoids one additional copy of data that we've been doing before.

Change-Id: I3fae0ebe0cded632b41fdcf7efc01d5c7f2dc181
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-03-17 01:42:52 +01:00
Lars Knoll 5af2016b7c Remove QRegExp usage
It's deprecated in Qt 6.

Change-Id: I9ea27ed31a8df39670c0a50c9cb182c7f950ad96
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-16 22:04:33 +01:00
Lars Knoll 45e6835727 Remove unused include
Change-Id: I98f018c63295e09c5e374741583d191eca97de3b
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-16 22:04:00 +01:00
Lars Knoll 9981330157 Get rid of QRegExp from the xpm image handler
Change-Id: Ic6bc89c7ffbf1c2f615e9b89aff7c64201ac2837
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-16 22:03:55 +01:00
Simon Hausmann bc64ccbf00 Re-generate various CMake projects and configure after merge
Change-Id: I02f5926c6664aab518c5c81e0c33dca0818a1871
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 20:43:56 +01:00
Simon Hausmann c2f167b412 Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-16 20:43:50 +01:00
Simon Hausmann ff922e7b87 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	src/corelib/kernel/qmetatype.cpp

Change-Id: I88eb0d3e9c9a38abf7241a51e370c655ae74e38a
2020-03-16 18:41:27 +01:00
Simon Hausmann 9f9049b486 Initial import of the Qt C++ property binding system
This implements the core value based property binding system with
automatic dependency tracking. More features are to be added later, and
the documentation will need further improvements as well.

Change-Id: I77ec9163ba4dace6c4451f5933962ebe1b3b4b14
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-16 18:19:45 +01:00
Alexandru Croitor 3c7c60e322 cmake: Regenerate projects
Change-Id: I0cd4f34b0df0227789805f30f474ff6aa275078f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-16 17:58:00 +01:00
Tor Arne Vestbø 77885f8402 cmake: Remove APPLE prefix from platform names
None of the other platforms have it.

Change-Id: Ib448c2c03ba03f711b507ef391977c0e6aa7c192
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 17:57:56 +01:00
Tor Arne Vestbø db745fdd2d cmake: Fix naming when referring to Apple macOS
Change-Id: Iafb5e448d0d65d42f788464fc600594a5666f9af
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-16 17:57:52 +01:00
David Faure 97422abcfc QTreeView: don't call model.index(-1, 0) when using spanning items
drawTree() does
    QPoint hoverPos = d->viewport->mapFromGlobal(QCursor::pos());
    d->hoverBranch = d->itemDecorationAt(hoverPos);
and itemDecorationAt does
    const QModelIndex index = q->indexAt(pos);
which might very well be an invalid index.

Change-Id: I7db98871543bd7e1c57fcc475d2646757bf2bb42
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2020-03-16 10:44:26 +01:00
Edward Welbourne 75f52bd0dd Update the latest public suffix list
Task-number: QTBUG-72623
Change-Id: I8e0450c41882f00a49264a99342eb2dcf1959abe
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-16 08:52:49 +01:00
Edward Welbourne ebb2d85612 Record that we're still up to date with latest dbus
DBus does have dbus-1.13.* releases these days, as well as its stable
1.12.* releases, but there's no change in the fragments we've
extracted from its headers, since the last (1.12.12) release we
checked against. We're thus in sync with 1.12.16 and 1.13.12.

Fixes: QTBUG-82748
Change-Id: Ic550e3cd7486db712643711d010f5b45c347a95b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-16 08:52:10 +01:00
Fabian Kosmale e464e1eb8e Introduce always constexpr variants of qCountTrailingZeroBits
qt_builtin_ctz is unfortunately not constexpr on MSVC, so the whole
function cannot be used in constexpr contexts, unless v is exactly 0. As we
don't have std::is_costant_evaluated until C++20, we need to introduce a new
helper function, which always works in constexpr contexts.

Change-Id: I36290acb61e430d6bdb3da112a9b2263be4b9fbf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-16 08:21:49 +01:00
Lorn Potter d6ddd21257 wasm: remove uneeded platform plugins from build
Wasm does not use minimal, offscreen or qvnc platform plugins.

Change-Id: I3a1919a260280ffdff33b68502d488f71f2b0c13
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-16 10:06:51 +10:00
Lorn Potter e7ae28cfb9 wasm: do not move or resize Popup windows
Fixes: QTBUG-81771
Change-Id: I1595ade444222160ac05c4564dad5b61f10a050f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-16 09:27:20 +10:00
Christian Ehrlicher f5213ab799 QMySQL: return QVariant::ByteArray for POINT column
qDecodeMYSQLType() did not handle FIELD_TYPE_GEOMETRY and therefore the
type for a POINT column was incorrectly treated as QVariant::String.
Even the type can not (yet) be properly decoded to a QPoint, treating it
as QVariant::ByteArray is the better option here.

Fixes: QTBUG-72140
Change-Id: I12e75b326ae3acb75cb36f2e650464528bd43c0e
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-15 23:00:41 +01:00
Lars Knoll cb8eb0f86c Get rid of QRegExp usage in the cocoa plugin
Change-Id: I9789e1637a17809082458e946fa7c49ab9269537
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 15:06:40 +01:00
Lars Knoll fed4d6d78d Fix QNetworkAccessCache after QHash stability semantics change
The data structure relies on stable nodes in QHash, something that
is not guaranteed in Qt 6 anymore.

Change-Id: I9077ed404ee922893099f5eaae76d2dcea414090
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 15:05:26 +01:00
Topi Reinio 26ed956cbc Doc: Remove \contentspage commands
The command is deprecated and has no effect apart from generating
a documentation warning.

Change-Id: I30871bfd6975f8268930cce99993a8579242fdb8
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-15 10:48:58 +01:00
Lucas Wang 9287447a67 macOS: Ensure GL symbols are resolved from the OpenGL framework
The app or its dependencies may link against X11's libGL.1.dylib from
XQuarz, to support GLX on macOS. Doing so may place libGL earlier in
the load order than Apple's OpenGL framework, which results in dlsym
picking symbols from libGL when using the RTLD_DEFAULT lookup strategy,
breaking Qt's OpenGL support in various ways:

  QOpenGLShaderProgram: could not create shader program
  Warning: "" failed to compile!

To fix this we use RTLD_NEXT, which looks up the symbol in
dependency order of the image that called dlsym, rather than
the global load order.

Change-Id: I1ec3055a4ab0bb96566c7e196d301b30785f2dc0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-15 00:02:45 +01:00
Harald Meyer 91436e2409 Add native iOS file dialog
This patch adds native iOS file open and directory picking support for
the QFileDialog using the iOS UIDocumentPickerViewController class.

Change-Id: Ia724a59742650a01c62067aed3477f82ab1fd546
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-14 16:22:17 +01:00
Tor Arne Vestbø 395e2d9bc4 macOS: Modernize QCocoaSystemTrayIcon
The code had not been touched in a very long time and was overgrown
with weeds from pre-QPA times.

We no longer maintain an indirection through QSystemTrayIconSys,
which was a remnant from Qt 4 times.

The Objective-C helper class used for callbacks has been slimmed
down to just a simple delegate, with the actual work done in the
QCocoaSystemTrayIcon implementation, further reducing indirection.

We no longer use a custom NSView for the status bar item, something
that has been deprecated for a long time. Instead we set properties
on the NSStatusItem's button. This gives us automatic support for
drawing the icon with the right highlight, including in dark mode.

Finally, the code has been updated to modern Objective-C syntax.

Change-Id: I59706081f6b179035b8216a7a6ebc08a47cec127
Fixes: QTBUG-77189
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-14 14:21:28 +01:00
Andy Shaw f45d2dc543 WinRT: Open the URLs via the XAML thread to enable them to be opened
UWP expects these functions to be opened via the XAML thread, so we
ensure this is done by running those functions on that thread.

Change-Id: I57ae3a7d9b45d0b1a00ac23b103386bd34b65c6d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-14 11:41:02 +01:00
Edward Welbourne 54f8be6cc0 Update UCD to Revision 26
Include WordBreakTest.html, since a test uses sample strings from it,
albeit without actually reading the file.

Had to comment out more of the new tests, as at Revision 24, pending
an update to harfbuzz and the text boundary detection code.

Task-number: QTBUG-79631
Task-number: QTBUG-79418
Task-number: QTBUG-82747
Change-Id: I0082294b09d67ffdc6a9b5c15acf77ad3b86f65f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-14 11:26:59 +01:00
Lars Knoll e87768a880 Use qsizetype for size related methods in QVarlengthArray
Change-Id: Ib94b9a4e6e17da21f592e71a36fd1b97d42dfe62
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:56 +01:00
Lars Knoll f9a154e07f Use qsizetype for size related methods in QMap
This allows QMap to hold more than 2^31 entries on 64 bit systeems.

Change-Id: Ia6abd3441f9bc0c7e1a01b78726b5c32209542fa
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:51 +01:00
Lars Knoll d013aa16ef Extend QContiguousCache to use qsizetype for size and indices
Allow for more than 2^31 items and large offsets.

Change-Id: I42f7bf20ce0e4af43dbb2e2083abf0e232e68282
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:47 +01:00
Lars Knoll bf7debf658 Add move semantics to QContiguousCache
Provide move semantics for QContiguousCache. Do further cleanup of the
code and avoid special casing for complex typeinfo where it won't
make a difference anyway.

Change-Id: I9bd261aec21be7a050e04f5b3a1f0b8e1d94c064
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-14 10:36:42 +01:00
Lars Knoll f75160774a Cleanup code in QContiguousCache
Remove the union being used to hold the d-pointer, as accessing both
members of the union on the same data is technically undefined behavior.

Change-Id: Ia5a063d97538222575a47e9462c0675acdf32aef
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-14 10:36:37 +01:00
Friedemann Kleint 1d403ef81a Windows QPA: Fix broken frame geometry when moving windows with native menus
QWindowsWindow::updateFullFrameMargins() which is called
from the screen changed handling does not take native menus
into account.

Since the size of the menu is not known when using
EnableNonClientDpiScaling(), obtaining the correct frame
size requires triggering a WM_NCCALCSIZE message. Extract
the helper forceNcCalcSize() from QWindowsMenu and
use that from updateFullFrameMargins() in case menus are present.

Amends d2fd9b1b98.

Fixes: QTBUG-82580
Change-Id: I306f1faf84e26c88608cb22ffd42eccc848905c3
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2020-03-13 15:11:00 +00:00
Lorn Potter 7ddbd179a1 qpa: Return accepted state from mouse, touch and wheel handlers
Return the value from handleWindowSystemEvent so platform plugins can
detect whether it was accepted or not.

Change-Id: I53ffb713afc8e0ec1789107c912433133cfaa11a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 15:56:40 +01:00
Giuseppe D'Angelo 2537d04785 QRegularExpression: inline some compatibility calls
The functions take QStringView now. The ones taking QString can
be implemented inline (BC break). Drive-by change, use
qToStringViewIgnoringNull.

Change-Id: Ia3089c574446418e5ab93e08e21869ef19fbfbfd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-13 15:23:56 +01:00
Giuseppe D'Angelo 75514103e2 Remove an outdated comment
QRandomGenerator is now used to seed QHash, so the comment
is wrong.

Change-Id: Ic50fe95ea4169b55290cc758f5aebfbb0a3ea085
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-13 15:23:56 +01:00
Morten Johan Sørvig 951d490750 High-DPI: Enable AA_UseHighDpiPixmaps by default
The effect of this is that QIcon::pixmap() will/may
return a pixmap larger than the requested size (with
an appropriate devicePixelRatio set), suitable for
high-dpi displays.

Many use cases, such as painting the image with QPainter,
will be unaffected by this change. User code which e.g.
iterate over image pixels may have to be updated.

Change-Id: I63e867cc1e3f2a0b5cad92e1ffab4fe4de33ae19
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 16:23:56 +02:00
Andy Nichols 20f7e18d9c Make it possible to set the EGL_DEFAULT_DISPLAY
Change-Id: I564f1ce72501bc12b960c87c953343fd64ee9011
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-13 22:46:22 +09:00
Tor Arne Vestbø d8ab719c08 Fix double scaling of SVG icons on high DPI screens
On a high-dpi screen and AA_UseHighDpiPixmaps set, QIcon will ask its
engine for a scaled-up pixmap. When the icon has been created from a
theme, the engine is a QIconLoaderEngine. For a SVG icon, that engine
would recursively use QIcon to load the scaled-up pixmap, leading to
double scale-up. Fix by bypassing the QIcon API in the SVG case,
loading the SVG icon directly from the SVG icon engine.

Done-with: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Fixes: QTBUG-73587
Fixes: QTBUG-75039
Change-Id: I7fba02b6454decb5fcbca9c5a092e75954261dfd
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-13 13:12:18 +00:00
Morten Johan Sørvig ef5c747aba Fix range-loop implicit copy warning
Make the copy explicit.

qhighdpiscaling_p.h:282:24: warning: loop variable 'rect' has type
	'const QRectF &' but is initialized with type 'const QRect' resulting
	 in a copy [-Wrange-loop-analysis]
    for (const QRectF &rect : pixelRegion) {
                       ^

Change-Id: I4080ff42c41e464d081ab2b01cb2d010867b041b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-03-13 12:37:38 +00:00
Eskil Abrahamsen Blomfeldt 36325f9d86 Hide default-invisible characters when shaping is disabled
When shaping is disabled we also skipped the step which set
dontPrint to true for soft hyphens, line separators, and
similar characters. This caused boxes to appear in text with
e.g. line separators.

There is a minor modification to the code that is moved:
In the case on unshaped text and only the CMAP able is used,
the font engine for the soft hyphen can be a fallback engine,
so we need to also set the correct engine index when changing
the glyph index.

[ChangeLog][QtGui][Text] Fixed an issue with QFont::PreferNoShaping
where boxes would appear in place of unprintable characters.

Fixes: QTBUG-81994
Change-Id: Ifc9f4f89d928475ca0487a92b4480bd5db5918fd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-13 10:17:54 +01:00
Jean-Michaël Celerier 6dbe03c4d1 Make vulkan-flavored GLSL known to QShaderFormat
Change-Id: I6a3799c35aafa38095b316ee01d14b9db3af5e04
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2020-03-13 09:43:13 +01:00
Topi Reinio 65a7648329 Doc: Remove incorrect see-also link
The link is actually a self-reference; setCurrentSection() is setter
for the currentSection property, and has no dedicated documentation.

Change-Id: I4977650566913c590d46aede92d8678b7b7ea291
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-12 21:44:57 +01:00
Giuseppe D'Angelo 476d296f42 Fix QVarLengthArray documentation
QVLA *does* have iterators and *can* be used with foreach
(... I didn't say it should). Move its description together
with the other containers.

Change-Id: Ib60d1f7b3dc0e8c7004991bd4fdff95b3f23af60
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-12 12:16:14 +00:00
Tor Arne Vestbø 67c3999e02 macOS: Pass on QCursor pixmap with original scale
There's no need to scale the cursor down to 1x, since we're now passing
the correct device pixel ratio on to the NSImage by setting its size.

Letting macOS deal with the scaling produces a higher resolution cursor.

Change-Id: Icdb3d59998f9a32094c2973c3b222cf22b6398ac
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:18 +01:00
Tor Arne Vestbø 059c3ae66a macOS: Pass on QIcon as NSImage if possible, instead of going via QPixmap
The QIcon can be turned into a NSImage directly, with all the supported
representations that the icon contains. This allows macOS to choose the
best representation for whatever context it's rendering the NSImage in,
and will likely do a better job of scaling it if none of the sizes fit
target context.

This fixes e.g. application window icons not taking retina screens into
account.

Change-Id: Idbd97cae4ef50cc0dd3f38c355cfceec007e0d19
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:16 +01:00
Tor Arne Vestbø bee3d0fc13 macOS: Streamline QIcon to NSImage conversion
The conversion uses NSBitmapImageRep and correctly sets the display
pixel ratio and size of the resulting image, reducing the need for
clients to deal with this.

It also propagates the isMask property of the icon to the NSImage.

The function returns an auto-released object, as is customary for
class-functions like these.

Change-Id: If97f3d383959cd0f58a0d1249f5c26e52c1da9cd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:08 +01:00
Tor Arne Vestbø 52e9c8b4be macOS: Streamline QImage to NSImage conversion
The conversion uses NSBitmapImageRep and correctly sets the display
pixel ratio and size of the resulting image, reducing the need for
clients to deal with this.

The function returns an auto-released object, as is customary for
class-functions like these.

Change-Id: I5124d1d8145a7f5266921b22fda1987798771ec1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 11:49:06 +01:00
Alexandru Croitor d2419b0d8c CMake: pro2cmake: Handle LIBS_SUFFIX define correctly
Matches the LIBS_SUFFIX define we use in Android conditions
and replaces it with a sane amount of escaped characters.

Change-Id: I7d870f992c70b105dd80b6fa94f87d3fa5644006
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-12 11:41:29 +01:00
Alexandru Croitor 14546d1816 rcc: Teach rcc the --no-zstd option
It is needed when cross-building Qt using CMake, where the zstd
feature might have different values between the host and target,
in which case the build system tells rcc not to use zstd when
the feature is disabled.

Amends d20c980576

Change-Id: I9dc55b59b1be5272b79aa5f1e2daf2b516a157d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-12 11:41:26 +01:00
Mårten Nordheim 28d3d82a0d QtNetwork deprecations: suppress internal warnings
There're some uses we can't get rid of until the deprecated functions
are deleted, so suppress them for now.

Change-Id: I85b737eefc71f8f3ac939dfa961383220a8244af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-12 11:00:29 +01:00
Mårten Nordheim 6e32de256d Bearer deprecation: centralize and suppress internal warnings
We can't get rid of internal use, so let's work around that by not
marking it deprecated in private code.

Change-Id: If6cbfff4f16c30892335633567326141fbc44092
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-03-12 10:48:22 +01:00
Marc Mutz 179c23efb1 QStringBuilder: make the nested ConvertTo typedef public
It's needed by QStringTokenizer, and it's more generally useful as a
public type (you don't need to match the type of the conversion
operator, but can just access the nested typedef).

Change-Id: I2cf8b22f1ca31c38d51d2143932115da6aefc5a7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-12 09:27:27 +00:00
Tor Arne Vestbø d9580c2beb macOS: Log occlusion state changes
Change-Id: I5a0a3a96a59a1eae42fa94f2f9f406f22807a354
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 10:07:22 +01:00
Marc Mutz 12b4ce7281 QStringView: adapt to C++20 constexpr std::basic_string
Just mark the constructor constexpr. If std::basic_string isn't, then this
will be silently dropped. If std::basic_string is, we can now construct
QStringView from std::basic_strings at compile-time.

[ChangeLog][QtCore][QStringView] Conversion from std::basic_string can now
be constexpr (when std::basic_string is).

Change-Id: Ia608f1a71c9a24f417b3e21e150ff6bd3d2f4fc4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-12 09:44:59 +01:00
Friedemann Kleint 2c390e85cf QFileDialog: Improve default implementation of getOpenFileContent()
Use QFileDialog::ExistingFile and check whether file can be opened,
fixing warnings like:
QIODevice::read (QFile, "/home/.../blub"): device not open

Change-Id: I7ee1d59f01383c581bc09fb44855835aae8c246b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-12 08:23:45 +01:00
Oliver Wolff 6b70c6b866 ANGLE: Fix severe performance regression
The changed buffer usage priority that was introduced in our ANGLE
update caused severe performance regressions for Qt applications.

Fixes: QTBUG-73835
Change-Id: I49839bb272cdeec0027264f2751b88bc149665ad
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
2020-03-12 07:46:38 +01:00
Tor Arne Vestbø 5f940253bf macOS: Merge qcore_mac cpp and mm files
Files ending with .mm are Objective-C++ files, so we don't need
a separate file for the C++ parts.

Change-Id: I3ef52bc98291fd461b889978a538e81630d17c6e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-12 06:07:35 +01:00
Lorn Potter 739382a1bf wasm: fix emsdk 1.39.9 build
Change depreciated and removed preferLowPowerToHighPerformance to the new
powerPreference

Fixes: QTBUG-82730
Change-Id: I53e4e39626fce75897701b0134adadf00dac2dea
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-03-12 12:33:11 +10:00
Allan Sandfeld Jensen ddd0919bcf Do not crash on skipped Xlib visuals
If XLIB_SKIP_ARGB_VISUALS is set, we might fail to find visuals for
supported configurations.

Task-number: QTBUG-81904
Change-Id: Ib0d26faabe430925881b7f2acfc5361df3af416b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-11 16:28:14 +00:00
Allan Sandfeld Jensen 198d8eb5d0 Fix multi-threaded shrinking conversion
The conversion takes place in separate blocks, but may need to be
compressed after converting.

Fixes: QTBUG-82818
Change-Id: I71431af3d41e1bfe1f9b3d8cd7c1e0a2020846cd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-11 15:34:33 +00:00
Qt Forward Merge Bot 3d315860cd Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-11 15:39:56 +01:00
Qt Forward Merge Bot 865afac250 Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: Ibee5acec72a1a1769d4bc5f23f56c7dc8d4cf3cb
2020-03-11 15:34:21 +01:00
Vitaly Fanaskov c977e74afd QtConcurrent::run: accept more then five function's arguments
[ChangeLog][Potentially Source-Incompatible Changes] QtConcurrent::run
has the following signatures: run(Function &&f, Args &&...args) and
run(QThreadPool *pool, Function &&f, Args &&...args). If f is a member
pointer, the first argument of args should be an object for which that
member is defined (or a reference, or a pointer to it). See the
documentation for more details.

Fixes: QTBUG-82383
Change-Id: I18f7fcfb2adbdd9f75b29c346bd3516304e32d31
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-03-11 14:46:25 +01:00
Edward Welbourne 296bbbfa50 Fix minor errors in QDeadlineTimer docs
Change-Id: I0f33094da29300ca8a609cfffd700c2a82d86ad1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-11 12:27:40 +01:00
Qt Forward Merge Bot 12f903b155 Merge "Merge remote-tracking branch 'origin/5.14' into 5.15" 2020-03-11 12:27:40 +01:00
Allan Sandfeld Jensen ee259ff60b Replace initialization of sparse table of converts with setters
This is similar to how the similar table in qblendfunctions.cpp is now
set, and is easier to read and maintain.

Change-Id: I43a885fae7b1a92110bb33f0b22a5b02fddc0115
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-03-11 12:27:40 +01:00
Qt Forward Merge Bot 116d68f105 Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
	src/corelib/plugin/qlibrary.cpp
	src/corelib/plugin/qlibrary_unix.cpp
	src/corelib/plugin/qpluginloader.cpp

Change-Id: I866feaaa2a4936ee5389679724c8471a5b4b583d
2020-03-11 11:27:49 +01:00
Allan Sandfeld Jensen bd3c82f8db Fix non-trivial soft-hyphen line breaks
The effect of the soft-hyphen needs to be updated once the final the
break point has been found.

This change cleans the logic by using two variables keeping track of
soft-hyphen at current evaluated position and at last confirmed break
point. Also adds tests for supression of soft-hyphens in the tight
WrapAnywhere case.

Fixes: QTBUG-35940
Fixes: QTBUG-44257
Change-Id: I7a89a8ef991b87691879bb7ce40cec4a3605fdd5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-10 21:58:21 +01:00
Topi Reinio 52de905d0e Doc: Fix documentation for class qfloat16
This class has documented member functions, but only the related
\headerfile was documented. The class documentation itself was
omitted with the \dontdocument command.

Replace the \headerfile with a \class command, and move the global
functions to be related to the class itself. Keep the title as a
\keyword to avoid breaking any external links. The new class page
will inherit the .html file name of the header page, so we're safe
in that regard as well.

Fixes: QTBUG-82800
Change-Id: Id51539b45e0642d91b304a37f95461ca3d6c9841
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-10 17:51:56 +00:00
Simon Hausmann 01bacdf7ab Fix typo
Change-Id: I4923efb537c1d1b5778bf97955dbf247eaa6220a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-10 18:50:01 +01:00
Laszlo Agocs 67edae9a08 QVulkanWindow: Fix setQueueCreateInfoModifier signature
...per API review.

Change-Id: I4a5a1cc895eac32f21f8a830507b841318509992
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-10 17:06:07 +01:00
Cristian Adam d4207cb1a9 Mimetypes: Build fix for Android builds on Windows
Due to Android's multi-abi the build will fail due to concurrent
access:

cmd /c C:\Projects\Qt\repo\qtbase\src\corelib\mimetypes\mime\generate.bat C:\Projects\Qt\repo\qtbase\src\corelib\mimetypes\mime\packages\freedesktop.org.xml > .rcc\qmimeprovider_database.cpp
The process cannot access the file because it is being used by another process.

Change-Id: I647e0a6d8aa03cf116b08a1dce6e61e8882661f4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 17:05:37 +01:00
Simon Hausmann 4109d6e166 Small typo fix
Change-Id: Ie26dce967af59f140ebf03debe06aba19bd6a8e8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 16:38:23 +01:00
Fabian Kosmale ade4e5265a Remove template leftover
Amends 33cd680ddb, which removed the
Qt5CompatiblityHook class. However, the template line above it was not
removed, and now applied to isBuiltinType. As that function should not
be a template, we remove it now.

Change-Id: If8e276daebce5480b59d9c21b049818f9a46ec98
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 16:37:49 +01:00
Mitch Curtis 45695444ed Fix warning in qmetaobjectbuilder.cpp
src\corelib\kernel\qmetaobjectbuilder.cpp(1489): warning C4267: '+=':
conversion from 'size_t' to 'int', possible loss of data

Change-Id: I9cf9bdcb62b796eb8d3f3c633640b648cb11b39f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2020-03-10 15:17:24 +01:00
Eskil Abrahamsen Blomfeldt 761197e9d2 Fix distribution of font properties in QTextFormat
The area reserved for font properties was too small for
the properties we needed, and as a result font properties
were added outside of the area and special-cased (in the case
of FontLetterSpacingType) or ignored (in the case of
FontStretch) by conditions that check if the property is
within the designated area.

We reorganize the enum values now that we can, and allocate
some more space for the font properties area.

Fixes: QTBUG-65345
Change-Id: I8121ff7f72102d8022c6a6d2f8ed9c35dcdbb321
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-10 10:58:03 +01:00
Laszlo Agocs 3dd13d4075 rhi: d3d11: Honor resource/sampler slot limits
Show a warning but allow applications to survive by not attempting
to call VS/PS/CSSetWhatever() with an invalid number of resources.

Relevant for samplers in particular, where the limit is 16. Qt Quick 3D
exhibits problems with this when using custom materials combined with
shadow mapping, and while this is not a solution to the problem there,
at least the problem is now clearly indicated instead of crashing.

Task-number: QTBUG-82719
Change-Id: I83914b7648001fa421ed1cf07a7b7444e0ef8fc0
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-10 09:38:03 +01:00
Mårten Nordheim 19a76200ea QDataStream: keep brace delimiters inside #if-scopes
Because it looks odd.

Change-Id: Ic272ae7b1b5a3e0a70884caa683ccbdd3a61ff6a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-03-10 09:29:12 +01:00
Mårten Nordheim d340cc1512 Schannel: Fix readBufferMaxSize impl with incomplete data optimization
Following the incomplete data guesstimation optimization the
tst_QSslSocket::readBufferMaxSize test would fail due to it waiting for
16K, but the readBufferMaxSize was 10 bytes.

Amends 559b563d71

Change-Id: I5d17fac24e73c1305161aff744710b4c5b0b457a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-10 09:28:56 +01:00
Mårten Nordheim d52a553754 Bearer management deprecation cleanup
For QNAM:
Deprecate the to-be-unused enum and mark the property deprecated in docs

For bearermanagement:
Add a warning on the bearermanagement documentation page that it is
deprecated.

Change-Id: I2cbe12ddec444d9f704601f07f3a7c9b70dc4f3c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-10 09:07:18 +01:00
Kari Oikarinen d6d902a990 Merge 5.14 into 5.14.2
Change-Id: Ib4b26bad47a850cde6253fb3422aae34b2cf622b
2020-03-10 09:43:16 +02:00
Alexandru Croitor 02f08d5038 CMake: Remove old 3rdparty mechanism for harfbuzz-non-ng
Change-Id: I37c1e561ac83c51a06aae50ccb176094785d52f5
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 07:33:13 +01:00
Alexandru Croitor 729a73a9cf CMake: Remove old 3rdparty mechanism for double conversion
Change-Id: I2b20d4d9d95a1f7f59bc506046a1ebc20eb305f7
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-10 07:33:07 +01:00
Topi Reinio a8ae9718b0 Doc: Mention .qrc compression attributes in resource compiler docs
Fixes: QTBUG-76321
Change-Id: Idf7b4157b46d98392314ccddf6b714f9e620b5f8
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-03-10 06:47:45 +01:00
Allan Sandfeld Jensen 332816779c Multithread some QImage routines
Use QThreadPool to process QImage smooth-scaling, format conversions,
and colorspace transforms multithreaded.

Change-Id: Ic142b1fa899f56e7e5099d36ca713701a47b681b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-09 23:22:43 +01:00
Alexandru Croitor 1253a02dc0 CMake: Regenerate configure.cmake files to get reports
Change-Id: Ifa1646c7e471b3eaba552498ee1dc24f6ab864de
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-09 23:09:02 +01:00
Tor Arne Vestbø cc59f0de55 macOS: Support printing when no printers are installed
Even if there are no printers installed, we can still show the print
dialog, which gives the user feedback about no printers being installed,
allows them to install one, or allows them to print to PDF as a
fallback.

The code for printing to PDF has been re-enabled, and the conditions
of QTBUG-38820 have been removed as the problem is no longer present.
The code also takes into account the possibility that the user chose
to print to PostScript, which we don't yet support, but warn about.

We now also support opening the printed document in Preview. This
requires a minor assumption about the print operation being done
synchronously after the print dialog is accepted, but this is
something we can improve in the future with internal APIs if it
turns out to be a problem.

Printing workflows such as sending the printed document via mail
or messenger are not not supported, and will give a warning.

Fixes: QTBUG-36112
Change-Id: I8ba9e2c5ce31a5a06542c4a7126d005e4b27f2be
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-09 14:53:50 +01:00
Kai Koehne 2097932dc5 Document how to use CMake for Qt Network
Add documentation on how to use a module from CMake, alongside
the existing documentation about qmake.

While at it, also remove the mentioning of the central include;
It is not something we should actively advocate anymore. Instead,
the documentation of every class gives the correct include to use.

Task-number: QTBUG-73058
Change-Id: I71ed5a62f4f0a6d868dd1f84ea39e5ac385a2fb8
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-03-09 14:53:50 +01:00
Andy Shaw 20167a7fe9 WinRT: Use the fallbacks for getting the save file name
To bring it in line with the other platforms, then it needs to check if
the initially selected files are set and use the first one. Otherwise it
can fall back to the initial directory if that happens to include a
filename.

Change-Id: If34ae0e7e10b6a3c25e9422d9b4f2c21e6bfc8d1
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-03-09 14:53:50 +01:00
Leander Beernaert a64f4b4052 Simplify OpenGL and OpenGL ES2 library tests in Gui's configure.json
Change OpenGL and OpenGL ES2 library tests to just include the header
file in the test header code. This mimics what the OpenGL ES3 library
tests does.

Change-Id: Ic63879ea100bc66cf58ffd660e89c5803c6e29e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-09 09:57:58 +01:00
Christian Ehrlicher 3702a4c37e QSortFilterProxyModel doc: do not mention deprecated function reset()
QSFPM::reset() is deprecated and begin/endResetModel() should be used.
Therefore adjust the documentation to reflect this.

Fixes: QTBUG-82470
Change-Id: I786b3f25e5674d97d0ef6a0c91342973d5e952e9
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-03-09 06:29:25 +01:00
David Faure 4bc9e3b847 QDataStream: fix compilation with QT_DISABLE_DEPRECATED_BEFORE=0x0050F00
Fixes: QTBUG-81023
Change-Id: I0d56785d1fed2c4c8e0e87ccefb0b72b0ed3644a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-03-08 15:38:04 +01:00
Christian Ehrlicher 114394702b QtSql/ODBC: allow table names with unicode chars
The ODBC driver did not properly decode table names with unicode chars.
Fix it by explicitly passing the unicode flag to qGetStringData().

Fixes: QTBUG-82401
Change-Id: Id6eb44cc85ce196ea97d0d6aef1cd573fa033970
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-03-07 12:02:22 +01:00
Jarek Kobus 50d2acdc93 Add default arguments to QPainterPath methods using transform
Fixes: QTBUG-82602
Change-Id: Id82f145ffb33e6d4ef9b81282ad14657b1c8fbd0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-06 21:09:48 +01:00
Marc Mutz c1bb628572 Port from deprecated std::is_pod to is_trivial + is_standard_layout
The std::is_pod trait is deprecated in C++20; is_trivial
and is_standard_layout exist since C++11.

Change-Id: I4b901d8edf1a55001764445aee9c338d3dc23b21
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-06 18:06:43 +01:00
Laszlo Agocs ccee938b51 rhi: vulkan: Silence useless desc.set validation warnings
This is deemed more appropriate than having some time consuming tracking
of descriptor types in pools, just to avoid the rare case of attempting
a failing vkAllocateDescriptorSets(), which is then always followed by
another, successful attempt.

Change-Id: I7a3a1d80afe400dc96605a3d6c834e8b2c71143a
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-06 18:06:01 +01:00
Tor Arne Vestbø 94fc977b2b macOS: Disable system provided tabbing by default
macOS 10.12 introduced automatic window tabbing, where the OS provides
tab handling on behalf of the application. The feature defaulted to
being on, and the release notes asked applications that had their own
tab handling to disable the automatic tab handling explicitly.

Qt has its own tab handling, and should therefore disable the automatic
handling. We do this on a per NSWindow basis, using the tabbingMode
property of the window, instead of the global allowsAutomaticWindowTabbing
property on NSWindow, so that individual windows can still opt in to
the automatic tab handling. Doing it via the tabbingMode property
also ensures that we're not affecting the host application's
behavior in a plug-in setting.

Ideally Qt's tab handling should read the userTabbingPreference
property of NSWindow to pick up the system preference choice of
whether to open new windows as standalone windows or tabs, but
this is left for a later change. An alternative would also be to
use the automatic window tabbing instead of our own implementation.

Fixes: QTBUG-61707
Change-Id: Icf2078b63ec16202ff7fd83ea264a48dc61978e1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-06 18:06:01 +01:00
Vitaly Fanaskov 344eb0d29d QFlatMap: explicitly include <vector>
Without this include, it fails to compile the following line on some
systems: "std::vector<bool> done(s)", because only a forward declaration
is available.

Change-Id: I6eac4b7f69dda16e181043eb707f970b21b2dfef
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-03-06 15:29:30 +01:00
Joerg Bornemann 6cca46ee60 Remove trivial overrides from QProcess
Change-Id: I630fc44213fdc380c8b00e159989d5067bb2a185
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-03-06 13:38:39 +01:00
Joerg Bornemann 3dbfded87e Merge QProcess::startDetached(QString, QStringList, ...) overloads
Change-Id: Ic74f78c2bdf9acf0f91df3151e82cf2bf2602c1d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-06 13:38:38 +01:00
Friedemann Kleint 7fcc4e0a57 Windows QPA: Do not play sound for QMessageBox::NoIcon
Amends 2f366a63b2.

Task-number: QTBUG-82682
Task-number: QTBUG-81342
Change-Id: I30f465bf432e27828db460f6dbbb59eee0cca8f2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2020-03-06 13:29:56 +01:00
Leander Beernaert b4f19e4277 CMake: Remove special case handling for OpenSSL
Now that we can generate the library config tests which verify the
OpenSSL version, we no longer need these special cases.

Change-Id: I8ddccf4ae1c698db9fac391976b3b4b670712582
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-06 12:32:58 +01:00
Allan Sandfeld Jensen 08b9e66347 Fix QDeviceDiscoveryUDev on FreeBSD
Include input.h from the right path.

Change-Id: I016027ab5d6372a8584e04043444a355e7e2d539
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-06 10:57:13 +01:00
Joerg Bornemann 2de3bfced3 Fix UB in QProcess deprecation warning fixes
The commits e1e08629 and 66e905b1 introduced undefined behavior. Fix
this by assigning the result of takeFirst to a temporary.

Change-Id: I9e29412cf632d4836b95d47e12d8c07ab0645fbb
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-06 10:00:01 +01:00
Kai Koehne 1a9c29289a Doc: Mark QColorSpace enum as introduced in Qt 5.15
Change-Id: Ibf2da1ebb4eb9520a2a507ed6afb89f7176391bb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-03-06 08:42:00 +01:00
Kai Koehne b80503b377 Doc: Fix \sa link for QResource::uncompressedData()
No point in linking to itself.

Change-Id: Id0bf3fa6878417e541ec0997d34758b0c59e99b3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-06 08:41:32 +01:00
Eskil Abrahamsen Blomfeldt 8bdbb7f226 Enabler: Store more properties of application fonts
The family name of a font is ambiguous and without additional
information there is no way to separate one font from another
inside that family.

In order to make it possible to expose more info about application
fonts from FontLoader in Qt Quick, we need to store them in the font
database.

Task-number: QTBUG-68829
Change-Id: I931e1c2c004437ac0a21d4d88e55d176de676f34
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-06 08:27:36 +01:00
Allan Sandfeld Jensen eb09b7aa75 Initial cleanup of qevent.h for Qt6
Takes care of the first round of todos and deprecations for Qt6 in
qevent.

Not touching anything that might interfere with changing the class
hierarchy as the file also suggest.

Change-Id: If72d63d8932f1af588785bf77b34532358639a63
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-03-05 21:49:18 +01:00
Laszlo Agocs c3ae30085e rhi: Add support for arrays of combined image samplers
Introduces a new QRhiShaderResourceBinding function that takes an array
of texture-sampler pairs. The existing function is also available and is
equivalent to calling the array-based version with array size 1.

It is important to note that for Metal one needs MSL 2.0 for array of
textures, so qsb needs --msl 20 instead of --msl 12 for such shaders.

Comes with an autotest, and also updates all .qsb files for said test
with the latest shadertools.

Task-number: QTBUG-82624
Change-Id: Ibc1973aae826836f16d842c41d6c8403fd7ff876
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-03-05 19:40:41 +01:00
Leander Beernaert 73301b252a CMake: Depend on automoc timestamp for metatypes extraction
When using CMake 3.17 with any of the Ninja generators we can leverage
a dependency on the timestamp file produced by CMake's automoc to avoid
having a custom target run on every build.

Change-Id: Ia70d2730cc8296d0a43642655fe69b555cb393c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 16:14:35 +01:00
Leander Beernaert fda03bfed0 CMake: Convert Core_qobject to a static module
This removes the last add_custom_target when used in conjunction with
the Ninja and CMake >= 3.17.

Change-Id: Ibb9bdff4b5bc00542d2a5ba631cea7e0510ad5e9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 16:14:19 +01:00
Shawn Rutledge af00402d64 Remove QImageIOHandler::name()
It has been marked obsolete for a very long time, and deprecated
in code since f9e6f8efda.

Change-Id: Ib351025369584bf3b8a3a17f980a567d2b9556ca
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-03-05 16:09:40 +01:00
Lars Knoll d1882c79f2 Get rid of some QT_STRICT_ITERATORS leftover
Amends 06456873fc.

Fixes: QTBUG-82611
Change-Id: I8b1e01549f3e910b85a571833237e38a7c2b49a9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-05 16:08:30 +01:00
Alexandru Croitor 4f7cc72298 CMake: Handle conditions in third party find modules correctly
Previously the FindWrap modules checked for hardcoded features
when deciding whether to use a bundled library or not. This proved
not to work correctly because features were not available when
the find modules were processed.

Introduce a new CMake API call that needs to be manually called
after an add_subdirectory call which declares a bundled library.

The call will check for the existence of the bundled target, and will
then set a cache variable QT_USE_BUNDLED_Bundled<TargetName>.

The same variable is written into a FindWrapFooConfigExtra.cmake file
which will be loaded by the appropriate FindWrap module. The module
can that use that variable to decided whether to link against the
bundled library or the system library.

Change-Id: I75e9a4f4e14d88d4490916a79ad12f1ce57891e0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2020-03-05 16:08:14 +01:00
Joerg Bornemann e1e0862990 Fix deprecation warning in QGenericUnixServices
Do not use the deprecated method QProcess::start(QString) anymore.

Change-Id: I09eae2c8a1dbb53fd2de004e5030da9bb3c07b14
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 15:20:07 +01:00
Joerg Bornemann 66e905b1c3 Fix deprecation warning in QProcess::execute(QString)
Implement this method in terms of splitCommand and
QProcess::execute(QString, QStringList).

Change-Id: I1fe78fb53d8b6b34a8796f9fbda380a98a840c99
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 15:20:02 +01:00
Mårten Nordheim a2305f9430 CMake: fix typo
gerate -> generate

Change-Id: I948a3bdb4f56584a9ab02f27760fec5989d528ce
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-03-05 13:25:06 +01:00
Marc Mutz bd84e8d63e QHash/QMap: don't return const from value(), key()
... it breaks move semantics.

We can change these, since they're templates and a short survey shows
that no-one in Qt was crazy enough to inherit an exported class from
QHash or QMap.

Otherwise this would be BiC on MSVC, which encodes the return type.

There's also no safety benefit here, as none of the overloads returns
by reference, so users cannot expect map.value(key).mutate() to have
an effect on the element in the container.

In this, key() and value() differ from op[], which also returns const,
but whose overload returns a reference. op[] is therefore not proposed
here.

[ChangeLog][QtCore][QHash/QMultiHash/QMap/QMultiMap] The value() and
key() member functions now return T (was: const T), enabling move
semantics on their return values.

Change-Id: I0e5f53f9834caad458e3bde27f1daacbb4bac71b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 13:24:32 +01:00
Sona Kurazyan dfaca09e85 Add support for attaching continuations to QFuture
Added QFuture::then() methods to allow chaining multiple asynchronous
computations.

Continuations can use the following execution policies:

* QtFuture::Launch::Sync - the continuation will be launched in the same
thread in which the parent has been executing.

* QtFuture::Launch::Async - the continuation will be launched in a new
thread.

* QtFuture::Launch::Inherit - the continuation will inherit the launch
policy of the parent, or its thread pool (if it was using a custom one).

* Additionally then() also accepts a custom QThreadPool* instance.

Note, that if the parent future gets canceled, its continuation(s) will
be also canceled.

If the parent throws an exception, it will be propagated to the
continuation's future, unless it is caught inside the continuation
(if it has a QFuture arg).

Some example usages:

 QFuture<int> future = ...;
 future.then([](int res1){ ... }).then([](int res2){ ... })...

 QFuture<int> future = ...;
 future.then([](QFuture<int> fut1){ /* do something with fut1 */ })...

In the examples above all continuations will run in the same thread as
future.

 QFuture<int> future = ...;
 future.then(QtFuture::Launch::Async, [](int res1){ ... })
       .then([](int res2){ ... })..

In this example the continuations will run in a new thread (but on the
same one).

 QThreadPool pool;
 QFuture<int> future = ...;
 future.then(&pool, [](int res1){ ... })
       .then([](int res2){ ... })..

In this example the continuations will run in the given thread pool.

[ChangeLog][QtCore] Added support for attaching continuations to QFuture.

Task-number: QTBUG-81587
Change-Id: I5b2e176694f7ae8ce00404aca725e9a170818955
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-05 13:24:32 +01:00
Marc Mutz 16f927a4f1 QLoggingRegistry: use QStringView/QLatin1String more
- QLoggingRule::parse() and the ctor take pattern as QStringView

- parseNextLine takes lines as QStringView and produces the pattern as
  QStringView for QLoggingRule

- (setContent has to wait for QStringTokenizer)

- QLoggingRule::pass()'s first argument is always QLatin1String, so
  take it as one

Use chopped() more, add a std::move().

Change-Id: Ic95ea77464a9922fef452846bc6d5053bd5de56e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-03-05 13:03:13 +02:00
Marc Mutz b2f79cceb1 QLatin1String/QStringView: add (missing) member compare()
[ChangeLog][QtCore][QLatin1String] Added compare().

[ChangeLog][QtCore][QStringView] Added compare() overloads
taking QLatin1String, QChar.

Change-Id: Ie2aa400299cb63495e65ce29b2a32133066de826
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-03-05 07:50:02 +00:00
Marc Mutz 728cc964f3 QString/QByteArray: make all symmetry-checked member-compare() combinations noexcept
In QByteArray, they were just not marked as such.

In QString and QStringRef, the implicit conversion from QChar to
QString would destroy it. Add a QChar overload, delegating to
QStringView.

Added docs for the new overloads, copying from the nearest neighbor so
as to not look out of place. All string classes use different wording
for these functions. A cleanup of this state of affairs is out of the
scope of this patch.

Change-Id: I0b7b1d037aa229bcaf29b793841a18caf977d66b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-03-05 07:49:40 +00:00
Lars Knoll a0ffdf765e Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-03-04 19:10:37 +00:00
Timur Pocheptsov 9e46dd7719 Document TlsV1SslV3 as deprecated
Change-Id: Id127b6d985d0085982e47b4f80886e3831ce07c7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-03-04 19:24:58 +01:00
BogDan Vatra 519ea72108 Android: Bump gradle (plugin) versions
Move min & target sdk from AndroidManifest.xml to build.gradle

Fixes: QTBUG-70817
Change-Id: Id9bb9825a3232587e0255b2d3d6f0273c5f9b66a
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-04 18:02:35 +00:00
Mårten Nordheim 8131116896 QSslCertificate: Turn enum into enum class and expand abbreviation
From API review

Change-Id: Id174ff1a0a123585e41723ef1c1876b2f3bd39c5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 18:36:04 +01:00
Mårten Nordheim d57adfe5f3 QtConcurrent: filter- and map-reduce with initial value
It takes any type which is implictly covertible to the result type
and then converts it in the outer-layers. Then it passes it into the
deeper layers and initiales the result value.

One drive-by fix with a missing letter in the documentation.

[ChangeLog][QtConcurrent] QtConcurrent::mappedReduce and
QtConcurrent::filteredReduced, as well as their blocking variants,
now optionally take an initial value.

Fixes: QTBUG-73240
Change-Id: I7a80d96693cfa3374847c75c75b3167664609c1a
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-03-04 17:40:45 +01:00
Alexandru Croitor d50b22e75d CMake: Remove incorrect hardcoded harfbuzz condition
The non-system harfbuzz feature doesn't actually have a condition
in the json file.

Change-Id: I4b74915f28da97d6ef8f89690e91306d243913ee
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-03-04 16:16:27 +00:00
Fabian Kosmale aa6c560a74 Revert "Remove flagBits from QMatrix4x4"
This reverts commit 5ebb03c476.

Reason for revert: Removing flagBits breaks the batchrenderer in declarative, which accesses them via QMatrix4x4_Accessor. If flagBits are still going to be removed, we need to first find a solution for the renderer.

Change-Id: Ib0a3fc7a327926f2245058c0e2ed30e8789aa75d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-04 15:54:38 +00:00
Friedemann Kleint 09f3272814 QTypeRevision: Fix warnings about max macro from windows.h
Similar to def272750c, put parentheses
around std::numeric_limits<Integer>::max, fixing:

qversionnumber.h(339): warning C4003: not enough arguments for function-like macro invocation 'max'

Change-Id: Id574f3a08973cf1408e015f155c8e658b04bd170
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-03-04 16:31:13 +01:00
Friedemann Kleint 649d7abcd2 Update uic's class lib map to reflect QtOpenGLWidgets
Task-number: QTBUG-74409
Change-Id: I5de957156c3120422f5c8f2e702e198f9f6cc43d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-03-04 15:31:13 +00:00
Lars Schmertmann 5ee1dac8d6 Finally remove splash.xml to fix a lint warning
Unused resources
----------------
src/android/java/res/layout/splash.xml:2:
The resource R.layout.splash appears to be unused

Fixes: QTBUG-72976
Change-Id: I8f23438503d21f3279e0577a9caac745810fffc3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-03-04 16:31:13 +01:00