Found by UBSan:
src/gui/text/qrawfont.cpp:647:55: runtime error: load of misaligned address 0x000001eeed26 for type 'quint32', which requires 4 byte alignment
src/gui/text/qrawfont.cpp:648:50: runtime error: load of misaligned address 0x000001eeed02 for type 'quint32', which requires 4 byte alignment
Fix by using the qFromBigEndian() overload that can read from
unaligned memory.
While touching the code, also disentangle the two loops so that
operations are now performed in memory order instead of inter-
leaved, use less magic numbers, and avoid a QByteArray detach.
Change-Id: I26fa39726f6fa2e957b60863fa160280cf1dc9ac
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
While the implementation of the QByteArray::operatorX(const QString &s2)
for X \in { ==, !=, <, <=, >, >=} was already inavailable when
QT_RESTRICTED_CAST_FROM_ASCII was defined, the declaration was
still visible, leading effectively to a linking error.
This change hides the declaration, too, creating a compiler error as
intended, and as present with the QString::operatorX(const QByteArray &s2)
functions.
Change-Id: Ifdb0b85b7423b3b9c69212639b1512b0808a7983
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
...instead of overwriting when building qmake for windows.
Change-Id: I89eb33439b03a0ad33d006d12c9896c87d271c4f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Using Visual Studio a user very seldom wants to disable the automatic
invocation of windeployqt. Hence switch from opt-in behavior to opt-out.
This also fixes first user experience to invoke qmake –tp vc and then
hit run on examples.
[ChangeLog][Platform Specific Changes][qmake] qmake-generated Visual
Studio projects now automatically invoke windeployqt by default.
Task-number: QTBUG-52008
Change-Id: Iee1607269c38c7f6c726f554978ac05477bebe5e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Set input method attribute to be aligned with read-only
value in QTextBrowser initialization
Task-number: QTBUG-52071
Change-Id: If0e64bf09e2a2d505ed66fcbfb8cd12ae39844d3
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Some Qt users include non-system OpenGL headers, resulting
in a possible mismatched redefinition of GLhandleARB.
Ideally, we'd like to skip the whole glext.h inlined portion
and rely on qopenglext.h. However, some issues remain such
as GLDEBUGPROC not being defined on OS X.
Change-Id: Ie551cf0be309234b22cd615cc3703980f48298b9
Task-number: QTBUG-46149
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
The spawn code was only used to make QProcess work on QNX 6.5.0. Fork
works on QNX 6.6.0. The QNX spawn implementation has a flaw that causes
a deadlock in certain situations. When a working directory is specified
for the process, the QNX spawn implementation stops all threads except
the one doing the spawn so that it can temporarily change the process'
working directory. This can lead to a deadlock if the thread does
anything that conficts with something being done in a stopped thread.
QNX 6.5.0 is no longer supported in Qt 5.6.0 so we can just switch QNX
to the fork implementation and get rid of the spawn implementation.
Made a QNX specific adjustment to the hardExit test. There's a bug
in the OS that the test can run into because it does something that
normal applications wouldn't.
Task-number: QTBUG-47250
Change-Id: Ib32567d2c15ce651815858000035ac5aa6f35224
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Remove parameter from QWidgetPrivate::createWinId(), add a warning and fixme
comments. Update the documentation to point the users to QWindow::fromWinId()
and QWidget::createWindowContainer().
Task-number: QTBUG-33079
Task-number: QTBUG-51853
Change-Id: I03ae922b31bb46a411889cc0260ea14a4d933492
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This fix repairs the mechanism to deploy Qt dlls as well as C++ runtime
to a wince target in Visual Studio.
Do this by adding a deploy section in the Visual Studio solution and
adding the C++ runtime from the mkspec to the files deployed to the target.
Deploy target path is set to what the wizard of Visual Studio defaults to.
Before, the c++ runtime was only deployed for executables which were built
as part of Qt.
Task-number: QTBUG-50924
Change-Id: I478010dc16e35c68578281895aa3ae14b5c96bb4
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Adapt the mkspec which was forgotten in change
b0ec05f27b.
Task-number: QTBUG-48431
Task-number: QTBUG-51686
Change-Id: Ie95e650de8b7a7027979ec637fb77c7f0357a598
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Add a 32x32-pixmap to the style and factor out a function from
QStyle::standardIcon() to assemble the icon. The 32x32 pixmap may also be used
for the 16x16 case with devicePixelRatio=2.
Change QLineEditIconButton to use QStyle::standardIcon() instead of
QStyle::standardPixmap passing the QWindow to obtain the correct pixmap
from the icon.
Task-number: QTBUG-49374
Change-Id: I9895230f66911752cc13b7212609141610df0977
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
To solve menu item roles from their text, we need to find
its depth in the menubar hierarchy. Unfortunately, there's
no trivial way to access that hierarchy from the QPA side,
so we need to come with an ad-hoc solution.
Previously, we were using a dynamic proprety to keep track
of the 'parent' object. However, as the life span of the
different objects has changed since 09acf326db,
we need a way to keep track of the parent's existence.
This is what we do in this patch by having both QCocoaMenu
and QCocoaMenuItem also inherit QCocoaMenuObject. This class'
sole role is to store the menu hierarchy's parent object and
wrap it in a QPointer.
Change-Id: Ia18d95171af76d26f6325eef04c77b40d99c4285
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
The documentation of qSetMessagePattern was missing links to qInfo() and
the category logging siblings: qCDebug, qCInfo, qCWarning, and
qCCritical.
This patch adds the links and adds a link to QLoggingCatergory class.
Task-number: QTBUG-51943
Change-Id: I85c1a205bfcd555cb0516f8cbdd157d8f20185b4
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
When EnableHighDpiScaling is enabled, qGuiApp->inputMethod()-
>inputItemRectangle() returns the position divided by pixel density,
therefore all the controls positions must by multiplied by pixel density
to translate them into screen coordinates.
Task-number: QTBUG-52001
Change-Id: Iea92a912cfbab03a9497fc8cddc24bebd0db2192
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Remove outdated configure defaults to support features that get
autodetected.
Change-Id: Ia802ccd3fe9defa97e2667e81dff6e815a7b45b3
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
This issue has been solved some time between 5.6 and 5.6.0.
We just make sure to protect against further regressions.
Change-Id: Ic3fdad901ed5f36792ae04b3d65047da95eea668
Task-number: QTBUG-50561
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Whenever a message spy was installed, we failed to actually process
looped-back messages by queueing them for processing by the spy. That
had as a consequence that the caller got an error reply. Worse, since
the message had been queued, QtDBus would attempt to deliver it later.
Since that message had isLocal==true, bad things happened inside the
manager thread.
The correct solution is not to queue the message for the filter. If the
message is local, then simply deliver directly, as we're still in the
user's thread. This used to be the behavior in Qt 5.5.
Task-number: QTBUG-51676
Change-Id: I1dc112894cde7121e8ce302ae51b438ade1ff612
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Jan Kundrát <jkt@kde.org>
The Qt CI does not have ninja, but the autotest can be used for manual
regression finding.
cd qtbase/tests/auto/cmake
qmake
make check
cd build
cmake . -DHAVE_NINJA=ON
ctest -R FINDTESTDATA
Change-Id: Ic3f3748f6ab04e37fa5287c59486e5cd46dcabb4
Reviewed-by: Stephen Kelly <steveire@gmail.com>
None of QWidgetWindow's API is used in the code.
Task-number: QTBUG-33079
Change-Id: Iecb1e174645eff687ee0d8b29417c30a2c508311
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Because it's the right thing to do.
Needed to introduce qbuttongroup_p.h because QAbstractButton
likes to poke around in QButtonGroup's private parts.
Fixed includes of qabstractbutton_p.h so it compiles on it's
own.
Change-Id: Ic7725277d2419754de273b2abd4790476edd0eb4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
A very simple way to save ~3KiB in test size and 440b in
data size on GCC 5.3 Linux AMD64 release builds.
Change-Id: I6619148cc497116b9772a00e1bc30d573a2b2534
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This makes possible to set custom _NET_WM_STATE hints before
showing the window.
Change-Id: I86ad3863f7a8b3bb610a31b9af4b02c9d38eb111
Task-number: QTBUG-26978
Reviewed-by: Ilya Kotov
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
The orientation is implicitly stored by which icon is used.
Found by Clang:
qtoolbarextension_p.h:57:21: error: private field 'orientation' is not used [-Werror,-Wunused-private-field]
Change-Id: I82f8b8009b48d41fd2beb95d6107e505f9d4e835
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Clang doesn't like the unused member variable:
qwindowsstyle_p.h💯11: error: private field 'reserved' is not used [-Werror,-Wunused-private-field]
Remove. It's private API.
Triggered by Clang seeing all methods of the classes in
one TU by the following includemocs commit.
Change-Id: I84e92d63af573c090ef89c1d8ee19af30f90b171
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
By rendering the focus ring directly on the backing NSView, we
would ignore the painter's clipping information. It would also
require creating a custom CGContext and attached NSGraphicsContext
every time.
The first step is to render the focus ring on a pixmap and then
use the painter to render that pixamp. This ensures the clipping
is done properly. The second step is to cache said pixmap and
render it as a nine-patch image.
Change-Id: I1df1baf7dc490023319f025a16306d4f04e5264c
Task-number: QTBUG-50645
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Re-work QWindowsPipeWriter to not use a thread anymore but the
WriteFileEx API, similar to QWindowsPipeReader. This saves us a lot of
thread synchronization code and enables us to directly write data
without yet another buffering layer.
Also, this fixes the dreaded deadlocks in the QWindowsPipeWriter
destructor that could occur when the reading end was closed before
the write was finished.
Task-number: QTBUG-23378
Task-number: QTBUG-38185
Change-Id: If0ae96dcd756f716ddf6fa38016080095bf3bd4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The use of QWinOverlappedIoNotifier in QWindowsPipeReader restricts us
in the following ways:
- The handle that gets assigned to QWinOverlappedIoNotifier is forever
tied to an I/O completion port.
- Other notification mechanisms like I/O completion routines of
WriteFileEx do not work with such a handle.
- No other QWinOverlappedIoNotifier can be registered for this handle.
To achieve the ultimate goal of making QWindowsPipeWriter thread-free
(to fix QTBUG-23378 and QTBUG-38185) we remove the usage of
QWinOverlappedIoNotifier from QWindowsPipeReader and use the
ReadFileEx API instead.
This has the additional advantage of removing the need for any thread
synchronization, as the I/O completion routine runs in the thread that
ReadFileEx was called on, leading to simpler and faster code.
Change-Id: I05c983e1f1e49d7dd27e3b77a47f87cae9c3f4c6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
When an item is rendered into a QPixmap sent to the QDrag
implementation, make sure it's size is scaled with the current window's
devicePixelRatio, so it does not appear blurry on high-dpi screens.
Change-Id: Idf38c0993e8529aff7107ff1ac412de9cf10f311
Task-number: QTBUG-46068
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
CSIDL_APPDATA should be used instead of CSIDL_LOCAL_APPDATA
on Windows CE. Amends 910f719bd1 .
Task-number: QTBUG-50570
Change-Id: I0cc310ef5fe3fbaefae9c84dd9db8cf48ff48499
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
While Cocoa requires an NSMenu to be coupled to an NSMenuItem
(just as Qt requires a QMenu to be coupled to a QAction), making
that a hard coupling comes with some limitations. This is because
Cocoa won't allow the NSMenu object to be simultaneously coupled
to more than one NSMenuItem and, similarly, an NSMenuItem can
only be added to a single parent NSMenu. Therefore, it becomes
difficult to share one QMenu between two different QMenuBars in
different windows, or to use a QMenu as context menu while being
accessible from the menu bar.
Previous solutions to circumvent those limitations were less than
ideal (see 119882714f for the
QMenuBar shared QMenu issue). Other workarounds that relied on
that hard coupling, like 996054f5e6,
also added gratuitous complexity.
In this patch, we break that hard NSMenuItem-NSMenu coupling, and
we replace it with a temporary, looser coupling. As a consequence,
* QCocoaMenu only contains and manages a NSMenu instance,
removing the previously used NSMenuItem. It gets a temporarily
attached NSMenuItem instead.
* QCocoaMenuItem gains a safe pointer to its QCocoaMenu property
removing the necessity containingMenuItem() in QCocoaMenu.
* QCocoaMenuBar manages its own NSMenuItems.
With this setup, we bind the NSMenu to its parent NSMenuItem at the
last moment. In QCocoaMenuBar, when we call updateMenuBarImmediately().
In QCocoaMenu, we use the delegate's -[QCocoaMenuDelegate menu:
updateItem:atIndex:shouldCancel:] method which is called when Cocoa
is about to display the NSMenu.
Note: There's still one use case we don't support, which is sharing
a toplevel QMenuBar menu. This is because Cocoa's menu bar requires
each of its menu items to have a submenu assigned, and therefore we
can't rely on that last moment assignment.
Task-number: QTBUG-34160
Task-number: QTBUG-31342
Task-number: QTBUG-41587
Change-Id: I92bdb444c680789c78e43fe0b585dc6661770281
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
The current implementation makes the window too big when
a QPixmap with a DPR != 1 is set. Circumvent the problem
by using a QRasterWindow.
Task-number: QTBUG-46068
Task-number: QTBUG-50938
Change-Id: I0fca91f571937250c740f1400bd60286330fb595
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
we can rely on the super class to get it right.
as a "side effect", we won't try to install .pdb files for aux projects
anymore - the duplicated conditional was incomplete.
Change-Id: I9b66f32ab50ed2a1d4e6e03a9d205686a4b4a981
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it's likely that these will be wrong, and the bootstrapped tools usually
don't need them anyway. should they turn out necessary after all, we
need to add -H* variants of the flags.
Change-Id: I15c54c5e25d20ebd474073a530f00254842f515d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
it is important that the flags coming from the current qt build appear
first, as otherwise a pre-existing qt installation may interfere with
the build.
the windows configure does not have any of this magic to start with.
Task-number: QTBUG-6351
Change-Id: Iacc1d9b5aa9eed9a5f0513baef9f6c6ffcef0735
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
now that we rely on consistently sane runpath semantics everywhere
(--enable-new-dtags on linux; the default elsewhere), there is no use
in forcing our runpath downstream: our libraries will find their
dependencies due to their embedded runpath.
this does not affect qt.prf adding qt's own library path to the user
projects' runpath.
this effectively reverts 42a7eb8df6, and some more.
Change-Id: If7af7be7b7a894bebb9b146ccb0035452223c7ac
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
unlike speculated in 2fe363514, this is not a workaround at all: it
causes that libraries' public link interfaces (LIBS) are exported in the
first place. unlike with staticlib, this does not export LIBS_PRIVATE,
so it wouldn't even be a particularly effective workaround for rpath
brokenness anyway.
the problem was pretty well hidden by the qt module system, which at the
level of libraries is pretty redundant with the .prl file handling,
which shows just how stupid the whole "design" is.
unlike before, we now enable explicitlib for all libraries, not just qt
modules - we enable create_prl for all of them as well, after all.
an immediate effect of this change is that it fixes linking on RaspPI:
the qtcore headers make the user code require linking libatomic, so we
must add it to our public link interface.
Task-number: QTBUG-51621
Change-Id: I5742c88694db8e8a9b79d17222dc6df2b38e5ab2
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>