Horizontal scrollbars scroll in the wrong direction when the app
has a stylesheet and the LayoutDirection is RightToLeft.
Change-Id: I860cb733709e8d59a7b844f2b6ed1ee63410956e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Err: Undocumented parameter 'enable' in QNetworkProxyFactory::setUseSystemConfiguration()
Err: no such parameter 'editable' in QComboBox::setCompleter()
Change-Id: Ib27b93cf74e97efd656eda1265003f33c6802005
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reinterpret_cast()ing a pointer to a suitably sized integer is not guaranteed
to always give the same result for the same pointer (!). Therefore the
resulting integers are not comparable in a meaningful way. std::less is
supposed to be used to compare arbitrary pointers, so use it.
(Hopefully and reasonably, under the hood std::less does exactly what we
were doing, so this isn't BiC.)
Change-Id: I9960b3d6e35657fe7a25b842054f5d338280e850
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Q_UNUSED(cursor) was failing to compile when configured with
-no-pch.
Change-Id: I1da3c95c1636ca06f38a97052ee4360232520a8b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Private Use Area characters are quite valid input characters when used
in combination with a custom font. Joiners also serve an important language
purpose in semitic writing systems.
Note that there is a hack where we disregard any character produced
using CTRL or CTRL+SHIFT specifically because of German keyboards. I have chosen to
keep the hack in this patch to limit the change (though I have made an exception
for ZWJ and ZWNJ since both are produced using Ctrl+Shift on Windows), but it
will probably have to be reverted.
[ChangeLog][QtWidgets][Input] Accept characters in Private Use Area, as well as
zero-width joiners and zero-width non-joiners in input in QLineEdit and QTextEdit.
Task-number: QTBUG-42074
Task-number: QTBUG-57003
Change-Id: I73f3b7d587a8670de24e902dc52a51f7721dba5a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Add a bool *ok out parameter to qt_normalizePathSegments() and return false
when ".." are left over for an absolute path, indicating an attempt to
change above root.
Factor out static helper qt_cleanPath() to be able to pass the return value
to QDir::cd() and return on failure from there.
Amends change 63f634322b, which did
not handle UNC paths.
Task-number: QTBUG-53712
Change-Id: I3e63a5dd0259306a0b99145348d815899582f78e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Calling QDir::cleanPath() on "//server/path/.." resulted in "/".
Factor out a function to determine the root path part of an absolute
path for later use, and handle some special cases:
- Consider server name of "//server/path/.." as part of the prefix.
- Check on the root path for WinRT.
Task-number: QTBUG-53712
Change-Id: Ibddacf06212b6fc86fa74a5e4078df6cfd5b66f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The C++ standard says in [support.initlist.access]/1:
constexpr const E* begin() const noexcept;
Returns: A pointer to the beginning of the array. If size() == 0 the
values of begin() and end() are unspecified but they shall be
identical.
So we can't assume it's non-null. I didn't want to remove the Q_ASSERT,
so passing a non-null pointer to append() remains required. This patch
simply won't call append() if the initializer list is empty.
This was already tested, but the failure is with a compiler that is not
part of the Qt CI.
Task-number: QTBUG-57277
Change-Id: Iaeecaffe26af4535b416fffd1489806872b412ee
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Previously, we would activate the application during
QCocoaIntegration construction, which means at QApplication
creation time. This now seems to interfere with application
startup on macOS Sierra, where the application window
ends up in an unfocused state.
Move application activation to applicationDidFinishLaunching,
at which point the Cocoa runtime should be completely
initialized. Do this for 10.12+ only to avoid regressions/
test failures on previous versions.
Change-Id: Ic5f150d53f06a302b53a3ba86a4a9b18bb2a1783
Task-number: QTBUG-57044
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Commit 2bc7a40048 taught the CoreText font database to populate the
families lazily, and in the process added a guard to ensure that we
didn't populate internal fonts (prefixed with a '.'), as these fonts
would then show up in font selection dialogs.
Commit 909d3f5c7 then added support for private fonts, by making it
possible to filter out any private fonts from font selection daialogs.
But the guard was not removed, so we were still not populating these
fonts. This guard has been removed, and the filtering function has
been updated to include the conditions of the guard.
Next, commit e5e93345c5 used [UIFont fontNamesForFamilyName:] to verify
that each family that we registered with the font database would also
have matching fonts when finally populated. This is not the right approach,
as [UIFont fontNamesForFamilyName:] does not handle internal fonts.
Instead we trust what CTFontDescriptorCreateMatchingFontDescriptors()
gives us, but make sure to register the resulting font descriptors
with the original/originating font family, instead of the one we pull
out of the font descriptor.
Finally, as of iOS 10, we can use CTFontManagerCopyAvailableFontFamilyNames
instead of [UIFont familyNames], which gives us all of the internal font
families like on macOS, instead of just the user-visible families. For
earlier iOS versions we manually add '.PhoneFallback', as we know it
will be available even if not listed in [UIFont familyNames].
The end result is that we register and populate families like '.PhoneFallback',
which is critical to supporting more esoteric writing systems.
The check in tst_QFont that styles for a given family is not empty has
been removed, as we can't guarantee that on all platforms, which is
also documented for QFontDatabase::styles().
Task-number: QTBUG-45746
Task-number: QTBUG-50624
Change-Id: I04674dcb2bb36b4cdf5646d540c35727ff3daaad
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Window managers typically grab the pointer after receiving
the _NET_WM_MOVERESIZE event. But they fail to do it for
touch sequences which have a receiver. So we should reject
the touch sequence before sending _NET_WM_MOVERESIZE event.
QSizeGrip calls startSystemResize() on MouseButtonPress event
which is synthesized by Qt on TouchBegin. We can find the id
of the touch point by comparing coordinates of the synthesized
MouseButtonPress event with coordinates of all TouchBegin events.
Then we use this id to reject the touch sequence (it's possible
only after receiving XI_TouchUpdate).
Change-Id: I26519840cd221e28b0be7854e4617c9aba4b0817
Task-number: QTBUG-51385
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The prolog and epilog did not force RGB32 to be converted to RGB64 with
alpha fully defined like the middle optimized part.
Change-Id: If7c4829f2239f9a3c524f78b9ce269e2b0b5b150
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
this also removes the need for passing pre-processed options via
configure.cfg, so get rid of that.
a somewhat unfortunate side effect is that the android-style-assets
feature had to move back to the top level, as the licensing options
depend on it.
Started-by: Lars Knoll <lars.knoll@qt.io>
Change-Id: Id4d1e0ba18b3e3104400293b8f0c7f2f65e68dea
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The function was incorrectly handling green and blue color channels
causing them to be dropped. This affects drawing non 32-bit images onto
10-bit per color channels formats such as RGB30.
Change-Id: I9211e253b1a9da0dada5c418d592a8f531265989
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Changes it to follow standard SIMD patterns so it can use
ALIGNMENT_PROLOGUE_16BYTES and SIMD_EPILOGUE helpers.
Should also improve performance by using aligned memory access.
Change-Id: I14a48b82e3f3de83bd7572aa82bed07f28ad944c
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
The alpha channel of an RGB32 image was not properly ignored when doing
blending with partial opacity.
Now the alpha value is properly ignored, which is both more correct
and faster. This also makes SSE2 and AVX2 implementations match NEON
which was already doing the right thing (though had dead code for
doing it wrong).
Change-Id: I4613b8d70ed8c2e36ced10baaa7a4a55bd36a940
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Add a QT_QPA_EGLFS_KMS_PLANE_INDEX environment variable that applies
both to the GBM and EGLDevice backends. When set to a value between 0 and
the number of planes on the connector - 1, the chosen overlay plane will
be used for output, meaning there will be a drmModeSetPlane to configure,
and, in case of EGLDevice, the plane's corresponding EGL layer will get
chosen instead of the CRTC's.
Task-number: QTBUG-57386
Change-Id: I12c89472ea5730987052f39211fadc597d1302ef
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
Add a QT_QPA_EGLFS_KMS_CONNECTOR_INDEX environment variable that applies
both to the GBM and EGLDevice backends. Instead of specifying all
uninteresting outputs as "off" in the config file in QT_QPA_EGLFS_KMS_CONFIG,
this variable provides a shortcut to force one single connector and ignore
all others in embedded systems with a fixed connector configuration. The index
must be between 0 and DRM connector count - 1.
Task-number: QTBUG-57386
Change-Id: I3f9562f48bf6b2ffaf9a0cc232e09a7e0c15645b
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
Make it possible to identify from the logs that QT_QPA_EGLFS_LAYER_INDEX
was set, in order to help troubleshooting.
Change-Id: Ic22825e5df9f0eeb31f817f398b9f6c000c3a00f
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
Parent patch introducing usage of this attribute did not add it to
the EGLStream support header. This is likely not fatal, but follow
the practice of defining the constants ourselves, in case they are
not present.
Change-Id: Ib16f9809f9c6a212570c49472bb840183232e68a
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
If the StatusNotifierWatcher disappears and then appears again, we need
to register our tray icon again with it.
To do this, split the “register with watcher” part into a separate
method, and call it when m_dbusWatcher emits its serviceRegistered()
signal.
Change-Id: Id5fc8ac81b5038a61b678514dabd3eb9c8f1c106
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Setting QT_QPA_EGLFS_STREAM_FIFO_LENGTH to a >= 1 value changes from
mailbox to FIFO mode, with the specified length.
[ChangeLog][Platform Specific Changes][Linux] Added an option to switch
from mailbox to FIFO mode in eglfs' EGLStream backend. This is done by
setting the environment variable QT_QPA_EGLFS_STREAM_FIFO_LENGTH to a
>= 1 value, the desired length of the FIFO queue.
Change-Id: Ib98e2ff805f8c00ca2e224d1db5b9c1b2c9a04f0
Done-with: Pasi Petajajarvi <pasi.petajajarvi@theqtcompany.com>
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
Do not create QByteArray from const char* to compare with other
QByteArray, because there is an overloaded operator==.
So avoid needless allocations.
Reorder condition, because isEmpty() method is cheaper than
string compare.
Change-Id: I8d2c8a0fb247528d9ce485007431167372d62bff
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This static method was introduced in
8758f532ae
and was unused even then.
Change-Id: Id0d409b7fade977bbbabfcdee0c432b7058f8ace
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
We can use 'override' directly since Qt 5.7.
Also remove redundant 'virtual' keywords.
Change-Id: Ia40be0e1e60e51f9d043ab575fd6b9305ea620b0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Fixes: warning: implicit conversion from 'float' to 'double' to match
other operand of binary expression [-Wdouble-promotion]
Task-number: QTBUG-57068
Change-Id: I897a341aca83873bc6abd256a82a3b9f09409833
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Don't block the event that Qt depends on to close popups.
Task-number: QTBUG-57292
Change-Id: Ida1f928b81868f68a7b1e19cd0b83485d2a7232e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
We can use 'override' keyword directly since Qt 5.7.
Change-Id: I31127478a0a96798a4e018d9996842204e307552
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
And get rid of related DEFINES in the pri file
Change-Id: I54cf25b7cb447af22b410213759044e8018939a6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
After all the check makes sense here. If a timer was removed as a result
of sendEvent and it was not at the end of the list the list is not
shrunk but the timer info's id is just set to INVALID_TIMER_ID.
Additionally the timer's object should be fetched before we unlock the
locker as timerIdToObject is changed in removeTimer and we might access
a nullptr if the timer has been removed.
Reverts c83ba01f7b
Task-number: QTBUG-56756
Change-Id: Ib1a04c02fbfcf4c939b4891d42f954dc9e87149e
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
This class is just a record with a bit of functionality on it.
To prevent pessimizing it compared to a C struct with the same
contents, mark all operations constexpr and remove the point-
less copy ctor (the generated one is just fine).
Converge on passing QRect, QSize, QPoint by value. Was mixed
cref and value passing before.
Saves ~1KiB each in text and data size on an UBSan build,
somewhat less, of course, on a normal one.
Change-Id: Ibae16792d822ff183a0c542380501978f2108d93
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Bound x and y to the clipping rect instead of the texture rect.
This has minor effects on lancelot, but all within the 5% fuzz.
Change-Id: Ia6141e4f7649dad53211bd959af1bce48372e26d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Change-Id: Idb6216a645f7c9791674d16665331a63da46b132
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
Turn styles into proper features and test for them
using qtConfig/QT_CONFIG.
Change-Id: I7e28785a46723364b90d8aa286f4d6e5ab085651
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>