Under the 'Dark' theme as a system one, in an application forcing
'Aqua' (and thus 'Light') appearance, disclose button (drawn as
a triangle) can suddenly become transparent (apparently selecting
a 'Dark' codepath internally). Different ways to fix this (attaching
NSButton to a view, setting appearance on this button manually, etc.)
- all seems to have no effect. We resort to manually drawing this
button on macOS > 10.14 if 'effectiveAppearance' is 'Aqua'.
Change-Id: I6f54c0c4cf8fdd1ba53263ba9535e3055be46d42
Fixes: QTBUG-74515
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
We may get calls to the MessageTypes-overload of addMessage via e.g.
qSkip, or other functions in QTestLog, so we have to implement the
function.
Change-Id: I9d58c73e93ca918c42448c246c37cc9ae6aa04de
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Fix styling and positioning of QTabWidget tabs on macOS Mojave while
using dark mode
Change-Id: Ibe0c90b7625c4f4ff895083fefaade74305ba0ea
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Fixes the text color displayed in the QToolBar on macOS Mojave dark
mode
Change-Id: Ic4415295e314a8fc1c4fbb58964386e0563b8d44
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
If the stretch is set to AnyStretch, then this is taken to mean
we should accept the font as it is. But on mac, there is a special
code path to scale the advances since the shaper doesn't do it
for us, and this neglected to check the stretch, thus it would
scale the advances by 0%.
This happened when loading a file directly in QRawFont and using
this in a QTextLayout, since no part of the code path will attempt
to calculate the stretch in that case. Reproducible in q3dsviewer
in Qt 3D Runtime 2.3.
Task-number: QT3DS-3132
Change-Id: I8f934f3fac41bf7a93c01cca0416d44003119907
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
The --sysroot flag is added to QMAKE_CXXFLAGS by the gcc-sysroot
feature. However, when the makespec is reloaded, it can overwrite
QMAKE_CXXFLAGS.
Save QMAKE_CXXFLAGS before re-loading the mkspec and add it to the
value from the makespec, like we do for CONFIG.
Fixes: QTBUG-74326
Change-Id: Ie1fb713e2ffc9641d6db8c682bc5175581cd5b5f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
In the QNetworkAccessManager machinery we would treat "no-cache" as if
it meant "don't cache" while in reality it means "don't return these
cached elements without making sure they're up-to-date"
At the same time as this change is made let's add test data for
"no-store", which replaces the "no-cache" test data.
Fixes: QTBUG-71896
Change-Id: Ieda98f3982884ccc839cac2420c777968c786f6e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
It can happen that QDataStream is fed a QVariant that contains a QPixmap
representation, that will make the application crash when trying to
restore it
This is specially important for cases in which applications expose dbus
interfaces with QVariantMaps
Change-Id: Ife4feaef30f30e7e27d88464bd6b2a247f743123
Reported-by: Fabian Vogt <fabian@ritter-vogt.de>
Reviewed-by: Fabian Vogt <fabian@ritter-vogt.de>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Recurse down the sibling at column 0 of the index instead down the
index.
Change-Id: Ie78d8b28eab7438ca3f83ee0df177115ca82806e
Fixes: QTBUG-73864
Reviewed-by: David Faure <david.faure@kdab.com>
While an invalid time-zone shall have no transitions, so may various
constant zones, like UTC. The TZ data may include only the POSIX rule
for such a zone, in which case we should use it, even if there are no
transitions.
Broke out a piece of repeated code as a common method, in the process,
since I was complicating it further.
Added test for the case that revealed this; and made sure we see a
warning if any of the checkOffset() tests gets skipped because its
zone is unsupported.
Fixes: QTBUG-74614
Change-Id: Ic8e039a2a9b3f4e0f567585682a94f4b494b558d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Without ICU, the TZ-DB backend for time-zones tripped over an
assertion when running tst_QTimeZone::stressTest(), which happened to
probe a zone between its last transition and the first transition of a
POSIX rule that followed it. The code assumed there was no interval
between these two; apparently, there can be.
Change-Id: I3d0ad41fec0a255db2f9bfac54d33aa9b83938e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Set object names on the widgets in restoreState(), fixing:
QWARN : tst_QMainWindow::restoreState() QMainWindow::saveState(): 'objectName' not set for QDockWidget 0x7ffcb45e5e00 ';
QWARN : tst_QMainWindow::restoreState() QMainWindow::saveState(): 'objectName' not set for QToolBar 0x7ffcb45e5dd0 ''
QWARN : tst_QMainWindow::restoreState() QMainWindow::saveState(): 'objectName' not set for QDockWidget 0x7ffcb45e5e00 ';
QWARN : tst_QMainWindow::restoreState() QMainWindow::saveState(): 'objectName' not set for QToolBar 0x7ffcb45e5dd0 ''
Task-number: QTBUG-74242
Change-Id: I19f19e93de9df00d001b820a31836ce0b3cd2877
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
But only for the 'Light' theme. For "Dark" the system
color fits well (without our rather strange and random
0.5 we set for some reason).
Change-Id: Ic5c8372913515611a567090f82852ffc7ca14eb7
Fixes: QTBUG-74095
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: I46363e5b8944459e8c48fffd158c03bca4b7394e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
So we don't need to have a high kernel requirement on its account.
I needed to introduce a configure-time check because we need to include
a header to get the __GLIBC__ macro, but we can't include any header in
assembler until we know it's glibc (we need to know that the header is
assembler-safe). glibc, uClibc and MUSL do provide an assembler-safe
features.h, but Bionic does not.
And we need to know that it's glibc's implementation, since the fallback
was not required. The other three libraries may not implement such a
thing when they get around to adding the system call.
Fixes: QTBUG-74526
Change-Id: I1004b4b819774c4c9296fffd158d14da98bf571c
Reviewed-by: Fabian Vogt <fabian@ritter-vogt.de>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
The shortcut needs to be cleared if the native menu entry is being
hidden due to the fact it was changed. Otherwise it will not show the
shortcut anymore as it sees it as in-use.
Change-Id: Ifb10db855766e4de71db06ea006f6d63497f3193
Fixes: QTBUG-74113
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
QPlatformWindow::initialGeometry() would assign a default height to
the initial geometry of the QRollEffectClassWindow since it has height
of 0. This causes the obtained geometry to not match and subsequently
a geometry change being sent synchronously.
Introduce a new flag QWindowPrivate::resizeAutomatic similar to the
existing QWindowPrivate::positionAutomatic to prevent assigning a
default size and pass through the geometry as is where required.
Fixes: QTBUG-74176
Change-Id: I70c66490838a2c4dfe200ec86094d28bd984dd03
Reviewed-by: Kati Kankaanpaa <kati.kankaanpaa@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Introduce a logging category for the qDebug()-output.
Add a meta type registration for QList<QPersistentModelIndex>, fixing
numerous warnings like:
WARN : tst_QItemModel::remove(QStandardItemModel:invalid start, valid count 5) QSignalSpy: Unable to handle parameter 'parents' of type 'QList<QPersistentModelIndex>' of method 'layoutChanged', use qRegisterMetaType to register it.
Fix a Clang warning about potential misuse of operator ,
Task-number: QTBUG-73864
Change-Id: I60998403a44f5df8767926951ee13d1ed1e93c37
Reviewed-by: David Faure <david.faure@kdab.com>
To get appropriate aspect ratios for the splash screen, you usually
need separate drawables for the portrait and landscape versions.
We support this by adding two new meta data entries that can be used.
If they are not available, we will fall back to the generic one,
so we are still compatible with existing AndroidManifest.xmls.
[ChangeLog][Android] Added entries in the AndroidManifest.xml for
specific portrait and landscape splash screens. If one is present
for the current orientation, it will be preferred over the generic
one.
Task-number: QTBUG-74029
Change-Id: I5ffea56320aef85f62f21a59df4d077b4163a65a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
When painting into a pixmap, we would apply the system clip,
which is a rectangle that starts at the position of the current
widget relative to the window. If the widget was not positioned
at (0,0), we would therefore clip the top left part of the drawing
when drawing into a pixmap, which is obviously not intentional.
The solution is in accordance with how it is done in e.g. the OpenGL
paint engine, where useSystemClip is set to true only if we are
drawing to a widget. The system clip should otherwise be ignored,
so we do that in the X11 paint engine as well.
Task-number: QTBUG-70387
Change-Id: I9cad26019970280a8a452dc6f1015d229120cac5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
QIcon::paint() paints blurry icons on HighDPI screens.
In particular, it is called by QCommonStyle to paint
icons for CE_ItemViewItem's.
Change-Id: Iffe6bd01a8756e617656195ef63fe13c968e0832
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
The patch causes an Assert on close and thus cannot be used as is. I do
not have ICC available to try to come up with an alternative solution so
the patch is reverted for the time being.
This reverts commit 93a78799c3.
Fixes: QTBUG-74467
Change-Id: Ic572dfa667a479686675eb3f9066d133657b4499
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Yuhang Zhao <2546789017@qq.com>
Copy the test data into a temporary directory and do all the work there
without tainting the source directory. More importantly, do not pull in
any settings from the Qt build to test what actual users will encounter.
Change-Id: I793b86bfadb7597efb47c8f2d3fc863384c78a79
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This will enable modules like QtWebView which needs to generate its
qmldir at qmake time since it changes depending on whether QtWebEngine
is available or not. This ensures that it is not created in the sources
directory and in the build directory and correctly picked up.
Task-number: QTBUG-65092
Change-Id: Iac628b97145d29778f554510e8e07102d588df64
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Fonts look ugly when they are drawn scaled without
antialiasing.
Change-Id: I64268db5b37d4bc763ffa23632aca2eaac5d8eae
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
INTEGRITY compiler searches for exact filename if the -l argument already
contains .a suffix. GNU linker uses exact filename if -l argument begins
with a colon.
Change-Id: I62be8f1e6b9c7dc7eaa5ab3d4bfc55460d729737
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Destroying windows happens independently of closing them, e.g. when
a window is moved from one screen to another non-sibling screen.
The logic for quitting the application should apply to the actual
closing of a window, as documented.
Change-Id: I2226aff29278aa6fbf054a0994a320eb53196e9e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
As - cannot be used in a function name but can still be used as part of
the TARGET, then we need to make sure that it is replaced to avoid a
compile problem.
Change-Id: I0b2e465310206e2522ce59235b1592517817d3e2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
QWindowSystemInterface is the de facto API for any plumbing going from
the platform plugin to QtGui. Having the functions as protected members
of QPlatformIntegration was idiosyncratic, and resulted in awkward
workarounds to be able to call the functions from outside of the
QPlatformIntegration subclass.
The functions in QPlatformIntegration have been left in, but deprecated
so that platform plugins outside of qtbase have a chance to move over to
the new QWSI API before they are removed.
Change-Id: I327fec460db6b0faaf0ae2a151c20aa30dbe7182
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
When the window moves to a new screen then we should ensure the screen
is updated at that point with the new size so it can account for any
scaling changes.
This reverts f1ec81b543.
Change-Id: I2be3aab677c4677841a07beaaf373f498483b320
Fixes: QTBUG-72504
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
When a gesture was unrecognized, then it would add itself to the
obsolete gestures hash. This was cleaned up only on application exit,
but as the unregister call happens whenever a widget that had registered
gestures was deleted then the hash could grow quite considerably.
In order to ensure the original intention of the code here, we only
call unregisterGestureRecognizer() when there is a QGestureManager in
place to call it on. Otherwise it would create a memory leak in itself.
Change-Id: I2342f3f737b28be4af7ed531d83f02197eb66c0e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
The current state produces uncompilable code.
Change-Id: I9a68b61866a4a416335ed4d7204c58122803fb1c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This work around was added directly to the generated files
at some point, and never to the generator it seems. So to avoid
removing the workaround again when we regenerate the next time,
we need to add it.
Task-number: QTBUG-74511
Change-Id: Ided1bd949234ba82df61c55891646823e7f72e80
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Fixes the warning:
‘QString::QString(const char*)’ is deprecated: Use fromUtf8, QStringLiteral, or QLatin1String [-Wdeprecated-declarations]
return new QEglFSKmsEglDevice(this, screenConfig(), deviceName);
^
Change-Id: I36654f40219bf0f487e70cf2900d3f30335d4fc1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This adds four new logging categories:
qt.text.drawing, qt.text.hittest, qt.text.layout and qt.text.layout.table
Task-number: QTBUG-72457
Change-Id: Ifbfd6d16231c7f4ba664bc521699e44f98310f77
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This also fixes the documentation for QStyle::SH_Splitter_OpaqueResize
Change-Id: If8afb52ae300e9735a8bc6b065327f17d67f4323
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Add std::nothrow param to avoid exception and
to check pointer against nullptr.
Change-Id: I505abb1ca15b8c10a80b0cd3784a6b0c4c6bcc1c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Set AA_UseHighDpiPixmaps.
Task-number: QTBUG-52622
Change-Id: Ic4373a9c94952f50bc1ad36bcc0dec850efc124a
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
The naïve approach used for layer-backing in the past caused a detach
of the backingstore QImage on each beginPaint, since the image was
assigned to the layer via a CGImageRef that participated in the
QImage implicit sharing (and had to, so we couldn't get around that).
We now use IOSurfaces, wrapped in a QPlatformGraphicsBuffer abstraction.
The surfaces can be assigned to the layer's content the same way images
could, but allows us to reason more closely about whether or a buffer
is in use, and increases the chance that we will have a zero-copy path
to the screen.
Unless the window has requested a surface format with single buffering
we use a dynamic swap chain of buffers. In most situations there will
be two buffers in play, one assigned to the layer and one ready to
paint to, but during resize and some other situations the buffers
will grow temporarily to accommodate the increased back-pressure.
Since QBackingStore is documented as having single-buffer behavior,
we take care to persist content between the buffers before every
swap. By doing this before swapping, instead of before each paint,
we can avoid preserving areas that will be painted to anyways, and
will in many situations (such as blinking cursors e.g.) end up not
persisting anything.
The RasterGL surface case is handled by reading out the buffer data
and doing a manual texture upload. In the future we can support
direct texture access via CGLTexImageIOSurface2D, but this requires
QPlatformBackingStore::composeAndFlush to learn how to support other
targets than GL_TEXTURE_2D, as CGLTexImageIOSurface2D only works with
GL_TEXTURE_RECTANGLE_ARB targets.
Fixes: QTBUG-48763
Fixes: QTBUG-72360
Fixes: QTBUG-71162
Change-Id: Ica12f69b244e54d0fd31c929730d15657c286af8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>