QPrinter orientation will not effect when PageSetup Orientation selected
Fix this by sync PageSetup orientation property to QPrinter.
Fixes: QTBUG-100261
Pick-to: 5.15 6.2 6.3
Change-Id: I264852ea18317308dfcfb58c880f5e8ad8d299bd
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
That is, allow QtCore to get loaded and print its "missing features"
text without crashing with an undefined instruction. We'll still
abort(), so it's still a "crash", but it'll happen after the message is
printed.
Tested with Intel's Software Development Emulator[1]:
$ sde64 -wsm -- ./libexec/rcc
Incompatible processor. This Qt build requires the following features:
fma movbe avx f16c rdrnd bmi avx2 bmi2 avx512f avx512dq avx512ifma avx512cd sha avx512bw avx512vl avx512vbmi avx512vbmi2 gfni vaes avx512vnni avx512bitalg avx512vpopcntdq
[1] https://www.intel.com/software/sde
Change-Id: I6fcda969a9e9427198bffffd16ce8b86524a566e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Instead of lazily initializing. We usually don't do this in Qt, but in
this case there are two very good reasons for it:
1) the call tp qCpuFeatures() was not trivial, with the need to preserve
a bit of state in the caller function across the call. GCC appeared
to generate better code than Clang in this regard, but it still
implied more cost than we'd like to do runtime detection in
performance-sensitive places in Qt.
2) the early initialization allows us to use the detected state in GNU
indirect functions on platforms that support it.
In order to do this, I had to rewrite the QT_NO_CPU_FEATURE environment
variable parsing without QByteArray and instead rely on string.h's
strtok().
This can't be done for static Qt builds on platforms that don't support
the GNU init_priority variable attribute or the MSVC equivalent[1],
because otherwise we can't guarantee that this bit of code runs before
everything else in Qt. For those platforms, we keep the existing lazy
initialization.
For shared builds in those platforms, we can use the dynamic
initialization. All known linkers will sort the static initialization
code in the order in which the .cpp are linked into the library.
The x86 QSimdInitialized variable will be removed in the next commit.
[1] https://docs.microsoft.com/en-us/cpp/preprocessor/init-seg?view=msvc-170
Change-Id: I6fcda969a9e9427198bffffd16ce885a27f6b9e2
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
On 32-bit systems, the non-sequential device could be pointing to a
device of 2 GB or more in size. If so, we should allow reading up to
the limit (2 GB - overhead), like we do for sequential devices in the
block above.
It could also happen on 64-bit systems, but the chance that you do have
a file bigger than 8 EB is remote.
[ChangeLog][QtCore][QIODevice] Changed readAll() handling of large
non-sequential devices like files that are bigger than the maximum
QByteArray size (on 32-bit systems, just under 2 GB). Previously,
readAll() always returned empty; now it will attempt to read from the
device.
Task-number: QTBUG-100546
Pick-to: 6.3
Change-Id: I74249c52dc02478ba93cfffd16d1a14ac92c77bb
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
The private setColorFromString() function was never called from inline
code in Qt 6 (didn't check Qt 5, which doesn't matter for BC purposes).
This is in preparation of adding a QColor::fromString(QAnyStringView).
Change-Id: I265d7c388370e2e7bb417db1573658346aad4690
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
SIMD_ALWAYS isn't defined and function targets not working during bootstrap
Fixes: QTBUG-100817
Change-Id: I3008db3a32d28f9e4285517a6a23198307e236bc
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Needed to prevent qasciikey.cpp from failing an assertion when
Qt::Key_Select is used in tests.
Change-Id: I56aa517e8f6f332636b3df106d7265677d1b33ee
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Some of the UI elements in the a11y tests are allocated dynamically,
which means that if the test fails, the element is not destroyed
properly. As a result, the "hanging" UI elements affect all the
following tests, which leads to more test failures and even hangs.
This patch wraps all such allocations into smart pointers, which
guarantees correct destruction in case of test failure, so that other
tests are not affected, and also prevents memleaks.
As a drive-by:
- use nullptr instead of 0 in constructors;
- create some objects on stack instead of dynamically allocating
memory for them;
- remove some unneeded 'delete' calls for the objects that belong
to QObject-hierarchy.
Task-number: QTBUG-87674
Pick-to: 6.3 6.2
Change-Id: I0dcc26990955cd7b240a689a7438880b686985b7
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Fix bug where QWindow content would be drawn with an
offset from the QScreen’s topLeft if the page was scrolled.
On Qt for WebAssembly, screen geometry is equivalent
to canvas geometry, where the canvas position is the
position of the canvas on the document body.
getBoundingClientRect() is the correct function to use
here, however it returns a rect relative to the viewport.
Offsetting this rect by offsetLeft/Top can work in some
bases, but this offset is relative to HTMLElement.offsetParent
and not necessarily to the document body.
Determine the correct QScreen position by subtracting
the body position from the canvas position (both relative
to the viewport).
Change-Id: Ifb7fd28adedbf997d63f79f9b626cfcf3664ff54
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
These tests rely on reading output sent to stderr, so make
sure their output does go there.
Pick-to: 6.2 6.3
Change-Id: If62c073101c1d2e3d64f8cb2769d67f3b9fbeefb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The hugeQImage test loads, as its name suggests, a huge image.
At 2.5 GiB it's too big for the hard-coded 1 GiB limit on RAM
that the QNX toolchain hard-codes when it's started in QEMU.
Pick-to: 6.2 6.3
Task-number: QTBUG-100929
Change-Id: I8e8caaff7fd1dd0e648ada5df613c793f72bcf5d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Use _qt_internal_generate_android_qml_deployment_settings from
QtQml module when generating corresponding Android deployment
settings.
Task-number: QTBUG-97795
Change-Id: Ib509160e841fde98e818b0758bdfaff421dbc259
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Fixing documentation and removing tests.
[ChangeLog][Important Behavior Changes] The qNextPowerOfTwo()
functions now have preconditions.
Change-Id: If6d5e8bee66826910e89be7cac388a1f0422ebfd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I3fcb1de9487bfdfab16bae5603fed09ef72e01ba
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
More mindless coding-style conformance. Includes moving & or * to
after the space, not before, in declarations; and spaces after commas.
Change-Id: I221fef1e4de69d6c55d33dfc533aa74e2fd72df0
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
With one exception: in a macro-definition with a backslash-newline
immediately following the open-parenthesis.
Change-Id: I0fc8d7492676402636785d571e4667881334af6a
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Simply if (!condition) QSKIP(...) instead of having a long block
depend on the condition with the QSKIP() in its else block (which
should have had braces, as it was).
While dedenting the code block, tidied up spacing: only include blank
lines where they break up the code into blocks that go together, don't
leave spaces just inside parentheses.
Change-Id: I0196150088be88a7c6073b997a315b8f14d5f392
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Use QVERIFY() rather than comparison to true; QVERIFY() the negation
rather comparing to false; prefer QCOMPARE() otherwise for
comparisons, except for a few special cases involving very long
strings. Fix up the phrasing of a few QSKIP()s in the process.
Also, QCOMPARE() can handle an enum as expected value without
int-casting.
Change-Id: I9a1b82e5f4e10df6427bcc184b7757737df7db4f
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
In some cases by adjusting where the splits happen within concatenated
strings.
Change-Id: I4cffc41cda4582654151ba45d1478285caee7c81
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Prefer pre-decrement over post-decrement, turn a while into a for,
Don't put a while's body on the same line.
Change-Id: I5653a9bcec7901d205a91927c4b08e3dc13e0ca6
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reflowed some over-long ones, fixed some typos, capitalise starts of
sentences (and end them with suitable punctuation). Removed one as
redundant, made another pair redundant by changing the code (use an
overt NaN instead of commenting that it's happening). Prefer C++-style
when single-line. Don't pretend to be QDoc comments, or have other
eccentricities about start-markers.
Change-Id: I5a30e1b22a08866124f09060bb35f5bd27cd443b
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Much of the test code simply had a blank line after each check. Keep
the ones that separate groups of related statements, but remove the
ones that separated members of such groups. In some cases swap a blank
line and a code line to put the code with things it relates to.
Change-Id: Ie33863080d407898b2b2f044599398980ab9793d
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Split some long declarations of two variables in one line into two
separate declarations. Made more things const, made some consts
constexpr. Skip a variable entirely when it's only used once (and not
giving us some other benefit). Moved some declarations closer to their
variables' first uses.
Replace some Capitalised variable names with lower-case ones.
Change-Id: I3b8dac46530ba1c2e6100cb007b5487253304526
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
It saves the conversion to UTF-16 until the formatting. Split up long
lines, purge spaces just inside parentheses, and otherwise tidy
affected lines. Don't use backslash-newline for line continuation
within string literals; juxtaposition is cleaner.
Change-Id: I9c3d3e33f5ecbdb530538679147f7bc32afbeb05
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
It's terser and cleaner to read. Likewise for
QString::fromLatin1(). QCOMPARE() can take a QStringView, hence u"..."
as its expected string; other uses need u"..."_qs.
Change-Id: Iaf96569ff3ce69c890badfb6e40f702a78b100b3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Marc alleges it is more efficient.
Corrected part of a message to be more accurate in the process.
Save some casting by using suitable format specifiers.
Change-Id: Ic31a4e17b8910d35781a494ec860c7a08f08f33b
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
When the format is an ASCII string, there's no point widening it to
UTF-16 before the actual formatting step. Also, don't construct the
format string using string arithmetic, when passing another parameter
to arg() will do just as well. In the process, restructured
generic_data(), split long lines and conform spacing to Qt coding
style on affected lines. Simplified initialization of two string
fragments by using QL1S instead of QString, too.
Change-Id: Ib101dcf9296cc532291518bcef8e0a8de597b8a0
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
In tst_qguiapplication and tst_qcoreapplication,
the application version should be set. On Android, this
is done using QT_ANDROID_VERSION_CODE.
Pick-to: 6.2 6.3
Change-Id: I6b473ad25092fb24df9400e0ab8fbb8ea4edbb6a
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Tests are run for QNX in qemu similar to b2qt currently (using offscreen
plugin and software rendering). So the issue is same.
Pick-to: 6.2 6.3
Task-number: QTBUG-100930
Change-Id: Ie973c6c611ac48703fd7cce53925940b80858bc8
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
That only Windows and macOS are supported is mentioned, but deep down in
the description. Let's make it more prominent.
Pick-to: 6.3
Change-Id: Ia34a10f2fcbe0b2f86b5a0c5585277e169b11fa6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
The group is not used anymore. It also prevents qdoc to properly put
the variables in the breadcrumb menu (under "CMake Variables in Qt6 Core")
Pick-to: 6.3
Change-Id: I1afe3b1cb7be8dcdda9a6c6e1235e4457800179d
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
GTK buttons can be pressed with Space, Return and Enter, so this should
be considered native behavior for GTK based desktop environments.
Qt::Key_Select is also included here because QAbstractButton has been
pressable with Qt::Key_Select for a long time.
Change-Id: I2c279ad05d1a10e5968a18996b8b40a83d2251fa
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
on Wayland
Task-number: QTBUG-100891
Pick-to: 6.3 6.2
Change-Id: Iadf12364ded4549988ad75a9487c7e96e963a956
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Clang uses arch names directly, and not the "arch=xxx" format of GCC.
Appears we do not use this target though.
Pick-to: 6.3 6.2
Change-Id: I1d295f25fe2278c5c6bc0f617496555e28427bea
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Scroll tests relied on having a small window. On Android, the
window can not be smaller than the screen.
This patch changes the tests so that the windows have large
enough content so scrolling can happen.
Fixes: QTBUG-87408
Pick-to: 6.2 6.3
Change-Id: I26a444518fd934527089297c594673937f0ecf88
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
The required canvas configuration is an implementation
detail; move it out of the .html file (which we expect
that users will replace), and into the QWasmScreen
constructor.
This also enables using a div element as the container
element (instead of a canvas), since Qt then can create
and configure the canvas during QWasmScreen construction.
Change-Id: Ia849517d00fa3e8ec307065a524c0c91296dd490
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Platforms should allow more than just Qt::Key_Space and Qt::Key_Select
to press buttons. KDE Plasma developers want to be able to press buttons
with Return/Enter. GTK allows buttons to be pressed with Return/Enter,
so this should be considered the native behavior for GNOME as well.
Adding this ThemeHint allows customizing the keys that can press a
button via a QPlatformTheme subclass.
Change-Id: I73284e9b73590fbdd0b94a0cb4557e94b3722af9
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
tst_qabstractitemview requires a movable cursor.
This patch skips the test if there is no movable cursor.
Pick-to: 6.2 6.3
Fixes: QTBUG-87400
Change-Id: I4e917b2ad062ce068f23603410aa9209edb9828d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Adapt QToolButton texts to descriptive versions.
Add dummy stylesheet that will be used for all test functions, and a
specific style sheet to test rendering of QToolButton with a menu button.
Task-number: QTBUG-100401
Pick-to: 6.3 6.2
Change-Id: I5440407ddb3ea5b45124e77a6f0d1013362b4398
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
The argument to file(GENERATE...) is called CONTENT, not CONTENTS.
Pick-to: 6.3
Change-Id: I22fb9eb966223e034b2606cf24315d3cf6a03df1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Use qOffsetStringArray instead of array-of-const-char* to hold
strings. Saves 174 relocations, as well as over 4KiB in combined TEXT
and DATA size on optimized Linux GCC 11.2 C++20 AMD64 builds.
Pick-to: 6.3
Task-number: QTBUG-100536
Change-Id: I5849168d0340f78664e566920f92ad136f9dc435
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>