QDoc now handles \keyword slightly differently - it no longer
generates a unique html anchor at the location it appears in.
Instead, it'll inherit the anchor of the documentation item
it appears in.
Therefore, switch the \keyword commands that are used for
linking to a subsection within a page to be \targets instead,
so they'll get an anchor and not link to the top of the page.
Change-Id: Iec6d3f0edbcfb0aec95e222615eca9de2b0e153e
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDoc was searching for nodes using empty target string in some
cases (when the string contained no '::' but genus was set to
either QML or CPP).
This resulted in random nodes being returned from
findUnambiguousTarget(), causing mislinking without any
warnings.
Change-Id: I1bd434ec7470580cf5cb8083c2b74c37ef562473
Reviewed-by: Martin Smith <martin.smith@digia.com>
In order to provide acceptable results for styling the documentation
for rendering using QTextBrowser (instead of a full browser engine),
QDoc needs flexibility in adjusting the generated HTML.
This commit introduces and documents codeprefix and codesuffix
variables for qdocconf, and re-introduces the once-removed
support for codeindent.
The default codeindent value is reset to 0. These changes have no
effect to the generated output unless the above variables are
defined.
Change-Id: I6eb40dc0700725622e5a525ef19b5626b3b2b6a5
Reviewed-by: Martin Smith <martin.smith@digia.com>
If QDoc fails to find a function node for a link target that ends
in parentheses, it must retry to find another type of node, as
page/section titles can sometimes resemble function signatures.
This fixes a regression introduced by commit 8c5ce68f.
Change-Id: I675fe5b93ecc8a1823c0a5f817fb4b80b4e63320
Task-number: QTBUG-47919
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Set screen geometry only for top level window.
For other window types (dialog, popup and etc.) use
their own geometry.
Change-Id: I47e45a9fc6f08587ea284d89d56e419907471572
Task-Id: QTBUG-48089
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Support picking file(s), folder and save file via native component on
Windows Phone.
Task-Id: QTBUG-44833
Change-Id: Ibffc1cf3c133c9fbf9c92e0a4f874c4e197c50ee
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
These QStringLiterals are passed to QtDBus, which records them. They
will be used even after the libQt5XcbQpa.so library is unloaded, which
causes a crash on exit, one that even valgrind gets lost on.
Change-Id: I7de033f80b0e4431b7f1ffff13fc4888e45a346a
Reviewed-by: Albert Astals Cid <aacid@kde.org>
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Make it easier to capture information about crashing tests in log files,
since it is not possible to do something like
foo > log.txt 2> errlog.txt
on Windows.
Adapt selftest.
[ChangeLog][QtTest][Important Behavior Changes] Crash/exception
information is now logged to standard output on Windows.
Task-number: QTBUG-47370
Change-Id: I3e6a2d25855ed0f20516418a031990b562f5f757
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
The logic used in the FreeType font engine can be generalized
and move to the QFontEngine baseclass. This allows the CoreText
font engine to correctly report the minimum left/right bearings,
which decreases the chance that an optimization in QTextLayout's
line breaking algorithm will produce wrong results.
The calculation of left and right bearing has been moved to the
glyph_metrics_t type to reduce code duplication. This allows us
to use the with and height of the bounding box to determine if
the glyph has any contours.
Change-Id: I864697d3f31ed56f22f04666199b6c5023c5e585
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Make the fallback to creating an unshared context
actually work by using correct [initWithFormat: ]
code.
Warn and return early on context creation failure
instead of continuing and crashing.
Change-Id: Ic88f419eaa717436aefc9c1da36c47e0ccb3e956
Task-number: QTBUG-47825
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Otherwise errorString() might not match error() in a
statusChanged handler.
Change-Id: If1250b4552412eabe88457dee031e4ef3f533838
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Introduce convenience function for obtaining the format
name and use that.
Add debug operator for struct FORMATETC including format name.
Replace all code enclosed in #ifdef QMIME_DEBUG by qCDebug().
Task-number: QTBUG-47656
Change-Id: Ibb3c860c57edee4a31e8f5f37e3245feebed52a1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
- Minimized and Hidden: hide the status bar and collapse winrt native ui element.
- Windowed and Maximized: show the status bar and re-size the window.
- FullScreen and AutomaticVisibility: hide the status bar and re-size the window.
Showing & hiding the status bar and re-sizing the window affect only the
windows phone build.
Change-Id: Iaa412382bffc14e470720f2213bb3f6851f57a6b
Task-Id: QTBUG-47811
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
On windows phone native dialog interaction is handled from
XMAL thread. Declare and register dialog helpers StandardButton
and ButtonRole for cross-thread usage.
Change-Id: Ic1842a5af8a1122fdffb766b4f723d272bdbcac2
Task-Id: QTBUG-47941
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Expose on orientation change clears bad frames caused by race between
Qt and ANGLE.
Change-Id: I8970c6be36133d861c718a946d9e9b7a5e88cc2c
Task-Id: QTBUG-44333
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Make handleWindowSystemEvent() support being called
from secondary threads in synchronousWindowSystemEvent
mode.
This is implemented by posting the event to the Gui
event queue (which will wake the Qt Gui thread), and
then calling flushWindowSystemEvents which will block
the calling thread until the event has been processed.
Change-Id: I7e8e68c1e0290c17105563268e316b0f8205b3ce
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
flushWindowSystemEvents() now returns whether the
most recent event added to the queue was accepted
by Qt or not.
Use QAtomicInt to store the accepted state in order
to avoid a data race on it between the Gui thread
and the event poster thread.
Change-Id: I6c111fdaecda5c514307ca0749a54075fe8e872f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
After the removal of direct access through type punning,
the direct color setters can be better optimized.
Change-Id: Icaa5b1f8c8fe90863dd42fa4dfb5a2998c273465
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
qtbase/src/widgets/kernel/qaction.cpp:1257: warning: Can't link to 'QApplication::setAttribute()'
qtbase/src/widgets/kernel/qapplication.cpp:519: warning: Can't link to 'arguments()'
qtbase/src/widgets/kernel/qapplication.cpp:1939: warning: Can't link to 'quit()'
qtbase/src/widgets/kernel/qapplication.cpp:2946: warning: Can't link to 'quit()'
qtbase/src/widgets/kernel/qapplication.cpp:2946: warning: Can't link to 'exit()'
qtbase/src/widgets/kernel/qapplication.cpp:2946: warning: Can't link to 'processEvents()'
qtbase/src/widgets/widgets/qmenu.cpp:1354: warning: Can't link to 'Recent Files Example'
qtbase/examples/widgets/doc/src/tetrix.qdoc:28: warning: Can't link to 'QApplication::quit()'
qtbase/src/testlib/qtestcase.cpp:268: warning: Undocumented parameter 'timeout' in QTRY_VERIFY2_WITH_TIMEOUT()
qtbase/src/corelib/global/qnamespace.qdoc:2427: warning: Can't link to 'QApplication::setLayoutDirection()'
qtbase/src/corelib/global/qnamespace.qdoc:751: warning: Can't link to 'QApplication::setDesktopSettingsAware()'
Change-Id: Ic8170a40fb1cd84e3fb4dd75d9429f4b485f8bd9
Reviewed-by: Martin Smith <martin.smith@digia.com>
RCS files (text/plain) have the glob pattern "*,v", which caused
the regular expression match to fail.
Task-number: QTBUG-47923
Change-Id: I7d8682ef51306cb4da58a2b3880842bd99892ea3
Reviewed-by: David Faure <david.faure@kdab.com>
Run native dialog show on XAML thread.
Change-Id: I6273340e87d70aae21c838d9d7646a233c1f48be
Task-Id: QTBUG-47938
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Plasma 5 uses the same config files structure, but follows XDG spec
instead of storing them in custom locations.
Added '5' to supported KDE session version, and passing it to other
methods because 'kdeglobals' is located directly under XDG config
dirs and not deeper inside.
[ChangeLog][QtPlatformSupport][QKdeTheme] adding plasma5 support
Change-Id: I5f1d8d8f8d02449328db3ffc391ad23506cd67c7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
There are a few functions using a C-style function declaration:
void foo(void);
meaning that foo() takes no parameters. This change allows this
for QDoc, making it successfully match documented \fn blocks
with the correct declaration, and not print out warnings.
Change-Id: I8191c55094371431b0e9c2ad22d19cadcb7facfb
Reviewed-by: Martin Smith <martin.smith@digia.com>
The module names are used as keys in the map that defines the
forest of module trees. A physical module name (lowercase) is
used as the primary tree name, but modules read from index
were using a name written to the index file (project name,
typically CamelCase) as-is.
This caused issues for resolving link commands that have a
module name in the square bracket parameters. To ensure that
such links work, convert module names read from index to
lowercase, too.
Change-Id: I698e01fd1df888e4a78c06a76ad72b5eb1a70892
Reviewed-by: Martin Smith <martin.smith@digia.com>
- Use \a commands when listing the arguments for OpenGL methods
- Document functions taking a single argument of type 'void'
verbatim. Otherwise, QDoc refuses to generate their docs
- Add constructor docs for QOpenGLExtraFunctions (copied from
QOpenGLFunctions).
Change-Id: I64a436365572a80319ba0a8eaba2f5d9b751e84d
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
There is a qFatal in qmetatype.cpp that checks that the flags are the same.
There is a binary compatibility break because if any cause build with Qt 5.5
is loaded, this qFatal will quit the application, due to the change in
commit 54a09a41885e65fea4ca20d0e3d90d8f4e9e80c5:
Type flags for type 'QtMetaTypePrivate::QPairVariantInterfaceImpl' [1034]
don't match. Previously registered TypeFlags(0x103), now registering
TypeFlags(0x107). This is an ODR break, which means that your application
depends on a C++ undefined behavior.
This is a false positive since it is an internal type, the MovableType in
QMetaType is only being used for performance reason, it is perfectly fine
to change it.
This commit changes the qFatal to complain only about flags that could
only be caused by a binary incompatible change.
Change-Id: I87b9bf8cf54b6c7f4b1277d411ce5107642435ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
ibus keycode is qt scancode - 8 and needs to be returned to app windows
as the right value.
Use QWindowSystemInterface::handleExtendedKeyEvent() instead of
QCoreApplication::sendEvent() in qtbase 5.6 to follow
QXcbKeyboard::handleKeyEvent().
Also qApp->focusObject() returns QMdiChild which is a QWidget and
that is not a QWindow.
Task-number: QTBUG-47833
Change-Id: Ie634a86d7790d8093cfca2dc8666f726844ae654
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Commit 916dfcb8 introduced a regression where QNSView
would hold a copy if the backing store QImage, which
would cause a detach and deep copy if/when the image
was painted on while the copy was held.
Revert back to the previous share-by-pointer scheme.
Make sure the following bugs stays fixed:
QTBUG-38377
QTBUG-42206
QTBUG-44313
Change-Id: Ib8049051d51947113f23b66ee61dc34c22388914
Task-number: QTBUG-46959
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Get a couple of fixes for important bugs (1667, 1672).
The WinCE build patch has also been merged upstream,
so remove it from our tree.
Change-Id: I933c2d824612a70d7bc52648df5f5c481ae066d7
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Release drop target after CoLockObjectExternal() to prevent
a potential access violation.
Change-Id: I2c3bde9f8008b1d567544596f56ebfd61fe6ad86
Task-number: QTBUG-47737
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Amend change b55f88caba by splitting
out the enabling into a separate function and call that when
QWindowsInputContext::update() is triggered to reflect updates
of the microfocus in QGraphicsView or item view widgets.
Task-number: QTBUG-47679
Task-number: QTBUG-47705
Task-number: QTBUG-40691
Change-Id: I84a6647944f1aaedcd72d7060cc90e29a177f577
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Depending on the orientation, UIKit might shrink either the width or the height
of the view to fit the status bar. Since we anyway want the view to fill the whole
window, we simply ignore this, and use the bounds of the whole window directly.
Task-number: QTBUG-47506
Change-Id: I73294e5792f8d98fb0c0b0a42198207baca08e3c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Caught being detached a few thousand times per second.
Change-Id: I6dd5fd69d7d4f32048cdb7e4ac707f24df6c15f8
(cherry picked from commit 2a81516835)
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
The limitation is already mentioned in the class documentation, but
IMO is severe enough to be highlighted in the documentation of the
respective methods, too.
Change-Id: I16c68eb41ab9d3a7698d7ef06f747cfd98a8aaff
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Effectively revert 9150563940 for
QTBUG-11463 (offering only CF_DIB5 for images of format ARGB32) and
4018cd3529 for QTBUG-46848 adding support
for "PNG".
The changes broke pasting images into MS Office since it can only handle
plain CF_DIB and gets confused if "PNG" is returned as available format.
Task-number: QTBUG-47656
Task-number: QTBUG-11463
Task-number: QTBUG-46848
Change-Id: I9b641b4b912b7b16a2f58bc84fa09c28a64e91c8
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
Input context selection works differently across platforms. On some
platforms it is not possible to request a specific context at all
(e.g. Wayland). This will be unified, depending on the environment
variable "QT_IM_MODULE", you will get:
- null: default (platform) context, if defined (otherwise no context)
- empty: no context
- set: set one, if it exists and is valid (otherwise no context)
[ChangeLog][Platform Specific Changes] Haromnized input context selection.
QT_IM_MODULE environment variable will be taken into account.
Change-Id: Ic8f826fbc6ace25941cd19b9b086943e848fbe01
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Nedim Hadzic <nedim.hadzic@pelagicore.com>
The old kms plugin has been replaced by EGLFS's KMS backend. The EGLFS
backend is smaller and has more features.
The kms plugin cannot be built automatically since Qt 5.5 and is
therefore also not tested for changes in QPA API by the CI. Therefore
removing the plugin from the tree should not be a regression from the
previous release.
Change-Id: Icb9ea8c4a5d6421397a2e3f2e2195fb6bfad2293
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This fixes a number of qdoc warnings due to e.g. missing documentation
for setter argument.
Change-Id: If9ae43f70f0e42fe8b8a4f04f49d522cd7d69099
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Moving the documentation to one spot reduces repetition, is more
canonical, and avoids a warning due to undocumented function argument in
the setter.
Also document the default setting.
Change-Id: Idcedacf4bf101909689025d044e96801255a3332
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Commit 046f325483 accidentally made it
executable.
Change-Id: I7de033f80b0e4431b7f1ffff13fc9872fa64ae9d
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Unlike MSVC, ICC *does* support constexpr, but on Windows it will not
define __GNUC__, so we ended up in the multi-line alternative. That is
not permitted in C++11, only in C++14.
qalgorithms.h(659): error: statement may not appear in a constexpr function
Change-Id: I7de033f80b0e4431b7f1ffff13fc96245ee9a846
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Wrapping a QVariantList in a QVariant to pass it to QML would
trigger a deep copy each time QML would try to access elements
in the list (specifically in QQmlListAccessor::at).
This reverts a part of 8c4deff51c
by specifying the associative array conversions explicitly without
including the current type in the list of types to convert through
an iteration.
Task-number: QTBUG-41403
Change-Id: If9fddfe6d36f789ac4aa61a7c32677cd1dd077d8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Use constructors with C++11/C++14 where it is allowed to avoid hack
that caused double initialization and thereby performance regression
with C++14.
Change-Id: I7ae86df8aa34000b2c186e22bd9917303354b794
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The intention is for it not to include any delays that Qt's event
processing has introduced. And we are already doing it this way
for touch and scroll events.
Task-number: QTBUG-39459
Change-Id: Ie01cc2f8c6290ab66ef1b9180471afaa3da2e9da
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Distributions like Fedora would like to disable logging globally, without
having to patch Qt. Fedora right now therefore adds a
/etc/xdg/qtlogging.ini file, which unfortunately though also messes with
Qt versions compiled by the user.
This patch lets QLoggingRegistry look up logging configurations also
in QLibraryInfo::DataPath, which would allow to tweak the values per
Qt installation.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1227295
Change-Id: I0fca304a47f45739d0c08a9e4e715673bf10aa80
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
These need to occur on the XAML thread.
Change-Id: Id42a37df95b09e6d3c0a1b6e593bbf8cbfe5a129
Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
We weren't using qt_sockaddr_storage, so it's not a problem. But since
we're not using it anyway, we don't really need it. The storage is only
needed if we needed to get a bigger socket address and that only happens
with Unix sockets (paths).
sockaddr_in6, however, was just wrong. Some systems derived from BSD,
like OS X, have a sXX_len field containing the length of the socket
address structure and our qt_sockaddr_in6 was missing sin6_len. As a
result, setting sin6_family was just plain wrong on little-endian
systems. Like all modern systems running BSDs and OS X...
Change-Id: I7de033f80b0e4431b7f1ffff13f900f004c55443
Reviewed-by: Richard J. Moore <rich@kde.org>
The IPv4+IPv6 dual stack code that has been in Qt since 5.0 has been
giving test failures for tst_qudpsocket: some binds that shouldn't
succeed do succeed. Instead, copy the core code from the Unix version so
the two OSes will behave the same way.
The one difference in behavior between Windows and Unix is that on Unix
you can bind an IPv4 address to a multicast IP and on Windows you can't.
So I left the "correction" that was in the original code, but I'm unsure
if it is the right thing to do. Are people expecting to join the
multicast group this way?
Change-Id: Iee8cbc07c4434ce9b560ffff13caa1c3d5a7e8fd
Reviewed-by: Richard J. Moore <rich@kde.org>
We have qt_sockaddr, which has enough storage for our needs and is a
union of all the types. We don't need them to be separate like that.
Change-Id: Iee8cbc07c4434ce9b560ffff13ca9cb960ccf1d7
Reviewed-by: Richard J. Moore <rich@kde.org>
Change-Id: Iee8cbc07c4434ce9b560ffff13ca466263abcb1b
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
We'll need to use these functions instead of the ones we're currently
using in order to access the ancillary data.
Note that on Windows the two functions aren't globals, but must be
obtained via ioctl, which means they can fail. If they do, we fall back
to using WSARecvFrom/WSASendTo
Change-Id: Iee8cbc07c4434ce9b560ffff13ca4284acd24132
Reviewed-by: Richard J. Moore <rich@kde.org>
This commit changes the readDatagram() and writeDatagram() virtual
functions to take a QIpPacketHeader as meta data, instead of a
QHostAddress/quint16 pair. As previously, the header is an "out"
parameter for readDatagram() and an "in" parameter for writeDatagram().
The header pointer in readDatagram() is allowed to be null if the
PacketHeaderOptions indicates WantNone. Otherwise, it must not be null.
The extra options parameter is introduced because we may not always want
all the metadata upon reception. For sending, we know what to include or
not based on what's set in the incoming header parameter.
QIpPacketHeader splits sender and destination because we'll be able to
return both on datagram reception.
Change-Id: Iee8cbc07c4434ce9b560ffff13ca4213255008c7
Reviewed-by: Richard J. Moore <rich@kde.org>
Prevent the actions from being shuffled around in OS X
menus since the default is QAction::TextHeuristicRole.
Task-number: QTBUG-47739
Change-Id: Ib68bb7c51eb9278a99d277473f9d4cfcf740431c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
ICC doesn't like it
qdbusintrospection_p.h(162): error: explicit specialization of class "QTypeInfo<QDBusIntrospection::Argument>" must precede its first use
It's used by the QVector in the same class
Change-Id: I7de033f80b0e4431b7f1ffff13f958971617b657
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It supports the same feature that GCC does
Change-Id: Ib306f8f647014b399b87ffff13f1f3159898741b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Prevent generating 2 character long 'text' strings with some garbage as
second char.
This matches how xcb works.
Change-Id: I88a248a89c80b0e100c1c4871cfab4f2c287535e
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
The _q_readyRead can also be called from readMoreLater() because we implemented
it so that bandwidth limited reading can be implemented.
This can lead to a race condition if the socket is closing at the specific moment
and then deadlock the channel: It will stay unusable with a zombie request.
The fix in QHttpProtocolaHandler checks if there is actually bytes available to read
from the socket and only then continue.
The fix in the HTTP channel needs to be done to properly finish the reply in
cases of a server replying with HTTP/1.0 or "Connection: close".
The delayed incovation of _q_receiveReply will properly finish up the reply.
Change-Id: I19ce2ae595f91d56386cc7406ccacc9935672b6b
Reviewed-by: Richard J. Moore <rich@kde.org>
For BITFIELDS compressed images, the image data may be preceded by
bitmask fields. The file positioning code that should make sure those
were read correctly was erroneously included in the block of code that
was moved in 6f1b82fccd.
Task-number: QTBUG-45559
Task-number: QTBUG-40890
Done-with: Eirik Aavitsland
Change-Id: Id2b3ce078f67ac6ebf75ab0cc463dc719af83393
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
QDateTime::addSecs needs to do something similar, but not identical
because it needs the number of days too. And then there are daylight
savings transitions...
Task-number: QTBUG-47717
Change-Id: I7de033f80b0e4431b7f1ffff13f976f4f5e5a059
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Found by Clang 3.7:
qcommandlineoption.cpp:287:12: error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move]
Change-Id: I7de033f80b0e4431b7f1ffff13f97fb480001d36
Reviewed-by: David Faure <david.faure@kdab.com>
It was a regression: drawing applications which can handle both mouse
and tablet events should not need to wait to see whether a mouse event
will be followed by a corresponding tablet event. The tablet event is
preferred because it has all the tablet parameters (pressure etc.)
Also, show the timestamp of each mouse event in the log message,
which helps to verify the correspondence.
Task-number: QTBUG-47702
Change-Id: I9e832c19de935ec1243138eb4c1484284f61cbfc
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
A function cannot be both a member and a non-member of the same class.
Change-Id: I07d1e04c09fea2ba1171b3692e716660044cd37a
Reviewed-by: Martin Smith <martin.smith@digia.com>
There are instances in the documentation where a member function
tries to set itself also a related non-member of its parent. This
should be treated as invalid behavior, as it likely causes also
problems during deletion of the node tree.
QDoc now checks for and warns about these instances.
Change-Id: I951e0de6be4d48618c60b8a0382e2c70700cc402
Task-number: QTBUG-47751
Reviewed-by: Martin Smith <martin.smith@digia.com>
There were several problems related to resolving related non-member
(RNM) functions for classes. This commit does the following changes:
- Overload numbers for RNMs are now calculated at the time the
\relates command is processed, instead of a separate step.
- If a \relates refers to an entity outside the module boundary,
write the argument passed to it as-is into the index file.
- Delay the destruction of QDocIndexFiles singleton, to resolve
the RNMs read from the index files prior to generating docs.
- Remove the redundant call to normalizeOverloads() for single-
exec mode as unnecessary.
These changes ensure that all RNMs are listed in the documentation
for the node that they belong to.
A remaining issue is that if a function relates to a class outside
the module boundary, that function documentation will be empty
because the doc content is not stored into the index file (for
obvious reasons). Single-exec mode does not have this problem.
Change-Id: I33f038120728932cd9fd70da28d9090023068bd6
Task-number: QTBUG-47589
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Mostly related to IPv6, because Q_IPV6ADDR is an array of char, so the
compilers were generating byte access to each value. Instead, force
access as 32- and 64-bit in most places that make sense (64-bit access
decays to 32-bit on 32-bit machines). In one isLoopback(), this is now a
128-bit access for best improvement.
Some smaller improvements relating to SpecialAddress by combining the
three IPv4 special addresses.
Change-Id: I7de033f80b0e4431b7f1ffff13f932b1cd7b5d21
Reviewed-by: Richard J. Moore <rich@kde.org>
Currently this is only implemented on Linux and Windows. But it's an
improvement nevertheless when debugging Qt unit tests :)
Change-Id: Iea307dad0e12c24f305c16f0a1805e7c246ee372
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
thread\qthread_win.cpp(121): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size
thread\qthread_win.cpp(343): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size
thread\qthread_win.cpp(416): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size
Change-Id: I5e60e4bb91a32491562748755d34a2c5a1e264b4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Playing with the offset argument of pcre_exec is not equivalent to
adjusting the pointer to the subject string. In particular, PCRE
can go behind the offset to check for lookbehinds or "transition"
metacharacters (\b, \B, etc.).
This made the code that deals with QStringRefs not matching in behavior
with the corresponding code dealing with QStrings. For instance,
QString subject("Miss");
QRegularExpression re("(?<=M)iss");
re.match(subject.mid(1)); // doesn't match
re.match(subject.midRef(1)); // matches!!!
Instead, actually adjust the pointer to the subject string so that
the behavior is identical. A broken test that relied on the
equivalence is also removed.
Change-Id: If96333241ef59621d7f5a6a170ebd0a186844874
Reviewed-by: Volker Krause <volker.krause@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Ensure QAction::setVisible() is
handled and reposition if visibility changes.
Task-number: QTBUG-39660
Change-Id: I14f0659aedc8dc89ddef3159d3a500b40b1563ff
Reviewed-by: David Faure <david.faure@kdab.com>
Can be overridden by setting QT_QPA_FB_NO_LIBINPUT.
On systems where libinput is present it is usually a better choice
to rely on it instead of evdev*.
Change-Id: I8532c923bacd605434cfca1c7e314cb95d41b372
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Can be overridden by setting QT_QPA_EGLFS_NO_LIBINPUT.
On systems where libinput is present it is usually a better choice
to rely on it instead of evdev*.
Change-Id: I78857ff91c837f58fdc7d1e119260bd6819fbf4e
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Anything linking to platformsupport may use the same name so use
something less generic.
Change-Id: I657dd5dfcad9cf22585fcb17eda62deaf26ea6c4
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
The way of searching a shortcut match for a key without the keypad
modifier introduced in 547a1bea49 is
not correct. QKeyEvent::setModifiers() doesn't change native scan code
so we get the incorrect QKeyEvent object which is eventually passed to
the implementation of QPlatformIntegration::possibleKeys().
And then QPlatformIntegration::possibleKeys() returns the same result
as for the original QKeyEvent object.
So to fix it we have to remove Qt::KeypadModifier from keys after
calling the implementation of QPlatformIntegration::possibleKeys(),
as it was before 547a1bea49.
Task-number: QTBUG-33093
Task-number: QTBUG-44577
Change-Id: I5b33c9b6cf2c06b133166a31eba9aff9181c9483
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Older VMware virtual machines do not like the #line statements. These
were introduced in 5.5.0, meaning that when upgrading from 5.4 in such
a VM, shader compilation via QOpenGLShaderProgram stops working. This
should be avoided.
Task-number: QTBUG-47598
Change-Id: I8cccd76119350e7ce40da96d24a7a6e9eb399052
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
We don't replay mouse events after closing popups on X11.
This leads to the bug when the menu doesn't show after
clicking three times on the menu bar. It can be fixed by
reverting 78d7192338, but
then we need an alternative fix for QTBUG-32807 on Windows.
So don't replay mouse events for the menu bar on all
platforms.
Change-Id: I3db8e24a6de6f35b0a17dffac6a131f1cad42e6d
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Do not call bytesAvailableInChannel if the source pipe end is
invalid. This is the case when redirecting channels on Windows.
The assertions in bytesAvailableInChannel were triggered whenever
an output process or output file was set and waitForBytesWritten
was called.
Task-number: QTBUG-45548
Change-Id: I225dfea2c5e27e122f75008a3a06d425554e00fe
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Instead of constructing a temporary QByteArray, which could conceivably
fail, to hash those bits.
Change-Id: I7de033f80b0e4431b7f1ffff13fa376302d9720f
Reviewed-by: Richard J. Moore <rich@kde.org>
All versions we support have support for the WinXP-style functions we
need, so we don't need the Win2k fallback.
Change-Id: I7de033f80b0e4431b7f1ffff13f99175a507a2ed
Reviewed-by: Richard J. Moore <rich@kde.org>
That's how QHostAddress::scopeId() stores them, so we ought to look them
up the same way.
Change-Id: I7de033f80b0e4431b7f1ffff13f98cf87d45ebc6
Reviewed-by: Richard J. Moore <rich@kde.org>
The separation was accidental due to refactoring. It does not need to
exist.
Change-Id: I7de033f80b0e4431b7f1ffff13f988adc47d57d5
Reviewed-by: Richard J. Moore <rich@kde.org>
On Linux (on a bad system without getifaddrs), the ioctl for
SIOCGIFINDEX should be faster than if_nametoindex. The ioctl on the
already open socket will require one syscall, while if_nametoindex will
require at least one more (to open the socket), probably more.
Change-Id: I7de033f80b0e4431b7f1ffff13f9888bf2044105
Reviewed-by: Richard J. Moore <rich@kde.org>
This adds "const" to a few \fn commands for new operators
in QHash and QMap.
Change-Id: I93cf7aaf88fcb4db17de5810b555b978e8119e20
Task-number: QTBUG-47669
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
There was a bug in bool CppCodeParser::splitQmlMethodArg(),
which has now been fixed. The bug occurred when there was a
"::" in the return type.
Change-Id: Id31ed0d4a03d84e76fb69403441a3491ec884ddc
Task-number: QTBUG-47438
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
This update allows qdoc to handle \l commands for linking
to functions, where the formal parameters are included in
the link target.
For example, \l {QWidget::find(QString name)} will only match
a member function of QWidget that has a single parameter of type
QString. The parameter name is not used in the search.
Change-Id: I8a31c9a7ed632f12a0e6d8a33cbb5cd361098317
Task-number: QTBUG-47286
Reviewed-by: Martin Smith <martin.smith@digia.com>
Drop process output to nullDevice(), if an application does not request
forwarding, redirecting or reading from the device channel. This
prevents from accumulation of unnecessary data which can not be read.
Change-Id: Ia311a8c658a46cf580ffa9484c5369f3fc5f98a7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The generated xml file is now lowercase.
This was changed in shared-mime-info 3805d0bcf2.
It led to runtime warnings "No file found for ...", which helped notice the bug.
Change-Id: I31f0fc7f0fe8a098c3f79c0bcbeeb1909d2cc05a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The buffer may have been left dirty if we were unable to write all the
data to the child process in the previous run. So ensure we clear it
before starting a new one. We already did that for stdout and stderr,
for some reason.
Task-number: QTBUG-44517
Change-Id: I1a800c709d3543699131ffff13c419da3bbffacf
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This complements QHostAddress::isLoopback. The only missing check now is
for the "Any" address types, though operator== is quite fast nowadays.
Change-Id: Iee8cbc07c4434ce9b560ffff13cc2691e15014b6
Reviewed-by: Richard J. Moore <rich@kde.org>
Only happens on systems without getifaddrs, which we aren't usually
testing.
Change-Id: I7de033f80b0e4431b7f1ffff13f9889f5cfdea5b
Reviewed-by: Richard J. Moore <rich@kde.org>
It's called everywhere due to QT_ENSURE_PARSED and it's big. There's no
need to duplicate it everywhere.
Change-Id: I7de033f80b0e4431b7f1ffff13fa383f29114712
Reviewed-by: Richard J. Moore <rich@kde.org>
Preparation for also using it from QCoreTextFontDatabase.
Change-Id: I9cbef59c21f343a88a5cb3fdbee1ed4791d7a36e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reverts the wrongly added \internal and adds a warning for users that
the constructors will not be available if QT_NO_CAST_FROM_ASCII is
defined
Task-number: QTBUG-39862
Change-Id: I038eea3f4eef0b914b470309a2f515741eec35a9
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Calling it directly is less confusing than calling
it indirectly via the "else" branch in
flushWindowSystemEvents.
Change-Id: I085deff09162137606922a5af7ead23e21497b11
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Set the accepted bit on the QWindowsystemInterface
keyboard event after processing the key event.
Change-Id: I2d8c9382f14840e464153870dff909000e64ddcd
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Add en "eventAccepted" field to WindowSystemEvent,
where the event subclasses can record the event
acceptance status. Make handleWindowSystemEvent()
return the accepted status.
This works for synchronous event processing only. If
the event is placed on the QPA event queue then there
is no way to return the accepted state immediately.
In the latter case handleWindowSystemEvent() always
returns "true".
Change-Id: I081aecc54f43588d42d3aaeec7f8458f06937601
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Convenience accessor for use by the Wayland
platform plugin.
Change-Id: I420209138cfc285f8396913548b9e158a35ee9c1
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Propagate the line stride when creating the high-dpi
backing store image.
Change-Id: I15f41965d8eaf1d01ddac0a1a012b71148f757e3
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
The native OS X color dialog wrapper is now implemented
in qcocoadialoghelper.mm in the Cocoa platform plugin.
Change-Id: Idc4088df93960dd68507d11a9895277e34a18b96
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
This way we can remove some life cycle management code.
Change-Id: I8e0c9db0a8c5f0941bbd834380d3e3b3a9d2f306
Reviewed-by: Adam Majer <adamm@zombino.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Contents of the QIODevice's buffer is handled in the base
implementation.
Change-Id: I5a3d68e4e8dcb16d7f5ad695ac43127b8047a061
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Instead, we use the binary MySQL encoding and copy the data directly
into the QVariant of the desired type. This gets rid of the temporary
string allocations and greatly improves the performance of the added
benchmark. On my machine, the results are:
Before:
0.562 msecs per iteration (total: 563, iterations: 1000)
1,922,479.330 instructions per iteration (total: 1,922,479,330, iterations: 1000)
After:
0.381 msecs per iteration (total: 381, iterations: 1000)
774,132.957 instructions per iteration (total: 774,132,958, iterations: 1000)
Note that the same could be applied to floating point data types in
the future. Additionally, special support for MYSQL_TIME structure
coult be added to get rid of the string conversions there.
To ensure everything keeps working, a new auto test is added as well
that verifies the select statements and insertions of integral data
into a MySql table works as intended.
[ChangeLog][QtSql] Improve performance when reading integer values
from MySQL databases via prepared statements.
Change-Id: I21dd9277661971ded934546f09535014b63f8eb8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Site-local addresses were deprecated in RFC 3879 (September 2004) and
RFC 4193 (October 2005) replaced them with Unique Local Address. ULAs
are part of the global range but supposedly unique to an organization.
Change-Id: I7de033f80b0e4431b7f1ffff13f98d2124c5cffc
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
qwidget.cpp:12864:70: error: cast from type ‘const QWidget*’ to type ‘void*’ casts away qualifiers [-Werror=cast-qual]
Change-Id: I7de033f80b0e4431b7f1ffff13f956cb26108af7
Reviewed-by: Martin Smith <martin.smith@digia.com>
This commit moves the functionality from QtNetwork's QHostInfo to
QtCore. Note that due to Windows ws2_32.dll's quirky behavior of
requiring WSAStartup before calling gethostname, this change required
moving the initialization to QtCore too.
On Linux systems, gethostname() gets the name from uname(), so we bypass
the middle man and save one memcpy.
Change-Id: I27eaacb532114dd188c4ffff13d32655a6301346
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
By using XAML as the platform compositor, many benefits are possible:
- Better input context handling for tablets
- Better multiple window support (including non-fullscreen windows)
- Support for transparent windows and window opacity
- Integration with native platform controls
- Simpler orientation handling on Windows Phone with built-in transitions
This patch applies only the minimal parts to make XAML mode work just as
the raw D3D mode. It does this by:
- Moving all OpenGL parts into QWinRTEGLContext. This will allow us to
have non-OpenGL windows later (e.g. Direct2D raster surfaces).
- Moving more window-specific parts into QWinRTWindow. Each window creates
a SwapChainPanel which can then be used for ANGLE (or Direct2D) content.
- Moving non screen-specific parts into QWinRTIntegration.
- Having QWinRTScreen create the base XAML element Canvas.
- Running certain calls on the UI thread where necessary.
The following code parts were removed:
- The UIAutomationCore code in QWinRTInputContext, as this is incompatible
with XAML automation.
- The D3D Trim and device blacklist, as these have been fixed in ANGLE.
- Core dispatcher processing in QEventDispatcherWinRT. Now there is only
one native event dispatcher; it is always running and never needs to be
pumped.
Future commits should address:
- Maintaining the window stack list and visibility using the XAML Canvas.
- Allowing for windows (e.g. popups) to be sized and positioned instead
of fullscreen.
- Using the XAML automation API to improve the platform input context.
[ChangeLog][QPA][winrt] Windows Store apps are now composited inside a
XAML container, allowing for tighter integration with the native UI layer.
Change-Id: I285c6dea657c5dab2fda2b1bd8e8e5dd15882c72
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
This allows the platform plugin to start using XAML interfaces in the
windowing system.
Change-Id: Ifcd29b8b8d83b138af69786dfc6a1adec21be37e
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
This is necessary for Qt applications, as they render to GL in physical
pixels. This is consistent with the CoreWindow swap chain behavior.
This includes a partial revert of "ANGLE: Improve Windows Phone Support"
as the modifications to SwapChain11 are incompatible with the XAML swap
chain.
This change only affects Windows Runtime targets.
Change-Id: I401ae81028a9dfdb9da37f51c60844467c476f76
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
This allows the XAML swap chain to work properly, as otherwise it never
got a resize after it was passed into ANGLE with an empty size. This is
fixed by upstream commit 3799c3014a9e4ba4a3853c014a7127254ec19d50, so no
patch is necessary for Qt's local copy.
Change-Id: I43b030fa74f6b30c2aa42a36db2031a84eedf60b
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
This allows multiple applications installed into the same directory,
to share data files without polluting a more global directory
like C:/ProgramData.
Change-Id: Id5f4f9bc9d2ccb7ec677babcc08c1c5a641178f6
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
qt5.git now contains the winflexbison tools as flex/bison.
Task-number: QTBUG-46852
Change-Id: I8b86cd4211ae8fb120f955be1f423f94b10b318e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
This happens when the cwd got deleted meanwhile; this warning is printed out:
QFileSystemEngine::currentPath: getcwd() failed
and currentPath() is empty. Not a problem in itself, but qprintdialog
should not assume it's not empty, then.
Change-Id: I5c89992b36ca58b6325ced399cff33aca9efb7ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Since Q_GLOBAL_STATIC might use QMutex and cause a stack overflow.
Task-number: QTBUG-47554
Change-Id: I4853c5e9b9168d4a417200e2a45a1bf9cb103a30
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This reduces the number of syscalls greatly, by avoiding the timezone
conversion every time.
Change-Id: I39a54def4b45f25c6e037ced6943b05ddc749c9d
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
qopenglengineshadermanager.cpp(430): warning #177: variable "none" was declared but never referenced
qopenglengineshadermanager.cpp(431): warning #177: variable "br" was declared but never referenced
Change-Id: I7de033f80b0e4431b7f1ffff13f958e4a4cca16e
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
pdfork(2) has semantics very close to what we want in forkfd, but not
quite. Differences:
- we still get SIGCHLD and need to do a wait4
- no support for atomic FD_CLOEXEC and O_NONBLOCK
On the SIGCHLD case: this commit is an improvement over the generic Unix
case, since we no longer need to install a SIGCHLD handler and do not
need to keep the arrays for matching PIDs and file descriptors. That
matching is done entirely inside the kernel.
However, since SIGCHLD is still sent to the process, an uncooperative
SIGCHLD handler can still "steal" our response. At least Glib is
documented not to reap children it wasn't explicitly asked to watch for
(source code matches), but other libraries are known to do waitpid(-1)
(e.g., EFL's Ecore). At least now the behavior is consistent: we will
never install a handler, so the behavior won't depend on the order in
which the handlers are installed.
Change-Id: Iee8cbc07c4434ce9b560ffff13cb4c63306e43ef
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Currently, when one compiles a Qt plugin that is also installed
system wide to a local path added to QT_PLUGIN_PATH, you have no
way to ever load it as the global plugin will always be preferred.
This is due to the order in which the QCoreApplications::libraryPaths
are constructed, which always appended the QT_PLUGIN_PATH contents
to the end.
Now, the QT_PLUGIN_PATH contents are put first, such that the plugins
in there are preferred and loaded.
[ChangeLog][QtCore][QPluginLoader] Fixed the search order of Qt plugins
so that paths specified by the QT_PLUGIN_PATH environment variable
are searched before built-in paths.
Change-Id: Iad8ca2cd34e7a622c191a416c01c1c5cc1812fc9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>