Child widgets should get the show/hide event when the TLW changes its
state, because child widgets are also visible or invisible. This
restores the Qt4 behavior (fixes the Qt4->Qt5 regression).
Restoring/minimizing the TLW now sends the spontaneous show/hide event.
Show events are now handled also in the expose event handler in the
QWidgetWindow class, because the show event must occur before the
expose event to avoid possible flicker e.g. the OpenGL content. This
can happen e.g. on XCB platform. If the "WindowStateChange" event occur
before the expose event (e.g. Windows platform) then the code in expose
event handler will be ignored to prevent event duplications.
Added autotest.
Task-number: QTBUG-50589
Change-Id: Ie9a9329b1f29bff876de28d5948d0d5fb6bc1f05
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
When you would start to drag a tab, and then drag it in the other
direction along the point where you started the drag, the tab would fail
to follow the mouse for a distance twice the "startDragDistance", before
jumping to the mouse again.
Fixed this by only taking into account the "startDragDistance" when
checking whether a drag is started, and to rely on the "dragInProgress"
variable otherwise.
Change-Id: I5dd4ebd8340fef7e870f087be68c5097b49728cb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The iOS 10 SDK have introduced a protocol CAAnimationDelegate, which is
required for CAAnimation delegates. So we let our delegate implement it.
Since the SDK is not out yet, we need to support both version 9 and 10
for now.
Change-Id: I2624d8150c39439540a6554cba4921e3b9a2f0cf
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
XcbConnection::TabletData only exist if XCB_USE_XINPUT2 is defined and
QT_NO_TABLETEVENT is not.
Change-Id: I94f4558714b105f2ce98b9b4a7462e7a8eb628e3
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
dc3e7e45eb introduced locales from a
packaging perspective, providing the information available from the
package manifest. However, developers are rather interested in the
available and preferred system languages to update user interfaces.
Task-number: QTBUG-55672
Change-Id: I740d4f9c9ca21a8cbd437d3b232470897c569d34
Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This touches multiple areas. First adding a tooltip to the window list
should not automatically invoke focussing and hence
handleWindowActivated should not be invoked. This is the same approach
as on the windows qpa.
The winrt qpa supports multiple (non-fullscreen) windows since a while.
However, pointerUpdated still acted on the top level window, which
caused problems resolving the real target of a mouse event. In this case
the tooltip received all events, while the application window should get
them. Hence identify the target window via the system coordinates.
Task-number: QTBUG-50733
Change-Id: Iea1f4cd7406e6cde85ab3fc83f018b871fc30824
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
A recent ANGLE update added GL_GLEXT_PROTOTYPES for gl2.h. That was
a good first step, but we need this for gl3.h and gl31.h as well,
because once one upgrades to a newer EGL/GLES capable build of Mesa,
the same problem will surface.
Change-Id: I138ae32e3461dc87bf789aa641359ae46c0ec170
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This change implements the required infrastructure to modularize the new
configuration system.
This requires a hierarchy of configuration files, both for handling
multiple repositories and for individual modules inside the same
repository.
When configuring, they all need to get loaded first, as command line
processing needs to know about all possible command line options.
When the command line has been processed, the individual configuration
files need to get processed one after the other and independently from
each other.
Configure is now automatically invoked when building the a project
tree's "root" project; this works with both modular and top-level builds
of Qt (the latter with an according change in the super repo). As an
immediate consequence, the -skip option moves to the super repo with a
different implementation, as configuration is now done after the repo
list is determined. The option belongs there anyway.
This commit also adds an optional testDir entry to the json file. Like
this, we can still have all configure tests in qtbase/config.tests and
the configuration file in, e.g., corelib can reference those.
The files section can now be left out as long as a 'module' entry is
present, specifying the module name. The names of the files to generate
can then be deduced from that name. We still need to be able to specify
names directly for the global configuration files.
qtConfig() now also queries features which are module-specific. As it is
sometimes necessary to query the configuration of modules which should
not be actually linked (and cannot in the case of subdirs projects), the
new variable QT_FOR_CONFIG which allows specifying configuration-only
dependencies is introduced.
Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: Id1b518a3aa34044748b87fb8fac14d79653f6b18
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This is required to do the modularization of those
features properly.
Change-Id: I384aff20274e795aa70483980f0ef25309328800
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
don't bother opening headers.pri files, as they won't match anyway.
Change-Id: I4d923266dabf1c9684fba4086f55bc24d76d23c5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Ignore everything that after the initial period separated numbers.
Change-Id: I376b154ff0ab6e3877223ec1383ed4708ecd2164
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Add an rvalue overload of the QForeachContainer ctor to allow moving
rvalues into the internal container copy.
This does not change the semantics of Q_FOREACH. It is just an
optimization.
Port to NSDMI to minimize code duplication.
Costs ~1.3KiB across all libraries and plugins in a QtBase Linux
build (optimized GCC 6.1 AMD64).
Change-Id: I180e35ecab68aa1d37773b3546787481bb5515a2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Moves the blendPixel function from the SSSE3 file and use it more
generally, also adds a const_alpha version.
Change-Id: Ia29d1ab3879a845d5b65e0610b7836507e33c7ed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Duplicates the improved bounds check for rotated sampling in RGB64, and
improves two prologs by using that x1 == x2 during the prolog.
Change-Id: I562c5bee12e314c36d3b304f2f72d7635d22d7d4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Modern platforms such as macOS and Windows support large fancy icons
in the system balloon notification. We just need to pass the icon into
platform plugin.
[ChangeLog][QtWidgets][QSystemTrayIcon] Support custom icons in showMessage()
Task-number: QTBUG-49283
Change-Id: Iaeca36fe1bf350eae34d105549010ecbedf9c0a1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
qUncompress has code to deal with OOM situations without crashing. This
code is highly convoluted. It achieves that by realloc()ing QByteArray's
buffer. Instead, let's operate on QByteArray::Data and use RAII to
manage the lifetime of the buffer.
Change-Id: I1cc7601489634e96833cfffd145688433b76f447
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This function reallocates a QArrayData block with realloc() but, as
the name says, it's only valid for types that do not increase the
alignment requirements. I don't think it's worth doing this for types
that do increase the alignment requirements, since we don't know the
alignment of the pointer returned by realloc(). If the new pointer
modulo the alignment is different from the old pointer modulo the
alignment, we'd have to memmove data around, which would be quite
inefficient (realloc might have memcpy'ed already and this memmove
would copy data to nearby).
This function is intended to be used especially in QString and
QByteArray, which were already using realloc() on pointers created by
QArrayData::allocate.
Change-Id: I45b61247db2e84797ad794c1049c47a09c1fb29a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
We have to check whether the cursor is covered by the virtual keyboard
when it is shown. If that is the case and the keyboard is snapped to the
bottom of the screen the whole content is moved up to ensure the
cursors's visibility.
WinRT's input context had to be moved from the XAML to the GUI thread
as the signal/slot connection does not work otherwise. Signals from
QInputMethod were emitted but not handled in QWinRTInputContext as it
ran on another thread which did not spin an event loop.
Task-number: QTBUG-50291
Change-Id: Id89e970dc194c25ad07ceab14d9fea51bd7388b2
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
By doing so we no longer leak the input pane inside the destructor.
Additionally the coding style is closer to the rest of the WinRT port.
Change-Id: I0d56086719c98585cec8bc3c4bcb2d86c3ea2e79
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
While there are similarities, we want to keep control over those tests
which affect only one platform.
Change-Id: Id1f6eb9954169148d70cea14969f34f21d1e6690
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
For platforms which require packaging the testdata into the application
resources, the BLACKLIST file needs to be added. Otherwise it will not
be found during runtime.
Change-Id: I2d5c3b3040b3b268bc73254459b8b902b7fae4e2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Source (.cpp and .h) files should not be executable.
Change-Id: I021d8733185d73d071fcaf3df7e529862a490b63
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Regression introduced in c32ef0a725
The expansion vector can be empty, in that case it is not allowed to
call constLast()
Task-number: QTBUG-55853
Change-Id: I47aa8eb7507ee91662215df42b4a66eebaa32bb5
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
If no filename is stored in the faceId() of the
font engine, then the PDF engine will bail out and embed
each glyph separately instead of embedding the font. This
would cause PDFs to be huge and unsearchable when high-dpi
was active, since we will automatically default to the
DirectWrite engine in this case.
[ChangeLog][QtGui][Windows] Fixed embedding fonts in PDF when
dpi scaling is active or when the hinting preference was
none or vertical hinting.
Task-number: QTBUG-54740
Change-Id: I20630595f51660109c5a12c52076738a04036520
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Partially revert 7fc2864dc5.
Entries should be kept until Qt 6 for source compatibility.
Task-number: QTBUG-55973
Change-Id: I09346fcd9227224f878f5ee064152e85f075ae09
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Instead of duplicating what QElapsedTimer & QDeadlineTimer already do.
Well, technically speaking, we aren't getting ticks, but nanoseconds
now, but the times are only used in comparisons with each other, to
measure the control overhead, so the unit in which they are measured
doesn't matter.
This also makes all OSes use the same type of timers. There's no
exception for per-thread timing.
Change-Id: I115db302eb114bed8cd1fffd14557b228284f2c0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Change-Id: I9093948278414644a416fffd147400f99fc9f844
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
Inserting things into the middle of an enum breaks backwards
compatibility, so don't do that.
Change-Id: Ie8e2768e8681f0237e7f233f4461f884b4b1b4f9
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
QString::fromLatin1 always allocates memory, but there are
cases where we can avoid/reduce allocations or/and reduce
text size, e.g.:
QStringBuilder expressions
Fix: replace QString::fromLatin1 with QL1S
QString::fromLatin1().arg(String) pattern
Fix: replace with QStringBuilder
Overloaded functions with QL1S arg
Fix: replace QString::fromLatin1 with QL1S
In rare cases if there is no overloaded function
with QL1S and we have deal with string literal,
replace QString::fromLatin1 with QStringLiteral.
Change-Id: Iabe1a3cc0830f40ef78a0548afa4368583c31def
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Apparently syncqt considers anything like "<blah.h>" to be an include
statement, even if it's in a comment. Yet, in fact, the comment was not
entirely correct here.
Change-Id: I7a661007ee86bb20242d54eb128c6b646cac15e7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
f104e43a72 moved QWinRTInputContext to the
gui thread. However, IInputPane needs to be queried from Xaml itself.
Otherwise it might cause unhandled exceptions.
Change-Id: I43848c796e7ff163e6befa7c58f0ad68445b9865
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Instead of creating files relative to the application binary, use a
temporary directory. This also cleans up the test data after execution.
Change-Id: I5d680fd01c60b0d33df06f9cb9aaef7c86279710
Reviewed-by: Jesus Fernandez <jesus.fernandez@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
We must ensure that QDBusServer's newConnection() signal has been
processed by the application, before starting processing messages on it.
Task-number: QTBUG-55087
Change-Id: I595329b2f98788dbf9f40558b8c230c0c0817ef8
Reviewed-by: Timo Jyrinki <timo.jyrinki@iki.fi>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It makes very little sense that one needs to have a debug build
of Qt to debug QObject issues in application code. At this date
we don't even offer debug builds for Linux systems, and anyhow
one might want to debug an application running against a
release build of Qt.
[ChangeLog][QtCore][QObject] QObject::dumpObjectInfo and
QObject::dumpObjectTree are now fully functional even in a non-debug
build of Qt.
Change-Id: Ifddd3023ffc82f3dc3928a7a94d4970e2fb1b44a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
We are removing the Content-Length header from our QNetworkReply
headers from a compressed HTTP reply.
A new attribute is added to have access to the original length.
Task-number: QTBUG-41840
Change-Id: I4e885e422d4203d63460d49c0eb5f11022003578
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Shows a descriptive warning when the application is not
initialized or it's not a GUI application.
Change-Id: I0fbb1c30fb603f444b6ef2a5adbe4f27a15f1daf
Reviewed-by: David Faure <david.faure@kdab.com>
Windows Phone needs to use activation targets to properly handle the
return value of a file dialog. 0f9ca217d0
introduced launching an app via different modes, but broke above use-
case for Windows Phone.
Hence, we first check if a dispatcher exists and use this one to forward
the activation.
Task-number: QTBUG-54342
Change-Id: If9dd2df9a45e9aa104775530c695325fe6f684f2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Initially it was planned to introduce it in 5.8, but actually
it was introduced in 5.9.
Change-Id: I9101a78fa4c17572982571bac37a8fce00e86d01
Reviewed-by: David Faure <david.faure@kdab.com>
Parsing the other files will (re)generate the same metaobject info in two places
Change-Id: I8984ed30751a7587de870f55dd427f067d1b2495
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Calling style() can trigger a call into user code which can read
the tool button's members before they are initialized
==3566== Conditional jump or move depends on uninitialised value(s)
==3566== at 0x421C39: MyProxyStyle::pixelMetric(QStyle::PixelMetric, QStyleOption const*, QWidget const*) const (MyProxyStyle.cpp:635)
==3566== by 0x504B8B1: QRenderRule::QRenderRule(QVector<QCss::Declaration> const&, QObject const*) (qstylesheetstyle.cpp:1004)
==3566== by 0x504D084: QStyleSheetStyle::renderRule(QObject const*, int, unsigned long long) const (qstylesheetstyle.cpp:1747)
==3566== by 0x504D4A5: QStyleSheetStyle::renderRule(QObject const*, QStyleOption const*, int) const (qstylesheetstyle.cpp:2023)
==3566== by 0x504FF02: QStyleSheetStyle::styleHint(QStyle::StyleHint, QStyleOption const*, QWidget const*, QStyleHintReturn*) const (qstylesheetstyle.cpp:5146)
==3566== by 0x517B2D0: QToolButtonPrivate::init() (qtoolbutton.cpp:193)
Change-Id: I56bca15d3ec7cd7b255a83dca786532a2f9b9b48
Reviewed-by: David Faure <david.faure@kdab.com>
This reduces unnecessary OS conditions in qmake since these platforms
are mutually exclusive, and also opens up their potential for use on
future devices (like carOS(?), which is device idiom '5').
This is also more similar to what Xcode does, as the
TARGETED_DEVICE_FAMILY variable is not platform specific.
Change-Id: I29d209cd8e0779f492bda829008264773e13c75c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>