The function takes a UTC time, which it converts to local time when
needed, but its (two) calls to refresh a local time instance were
doing the (more expensive) reverse conversion, which we don't need
(because we knew UTC to start with) and, in this case, it can't land
on an invalid time, so we don't need to cope with that.
Change-Id: I49b42bfa9f6a5fde12810f5a0da9ff4466ca86a4
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Add 'Private' suffix to the internal module names in the mappings of
the qmake files for modules of the qtdeclarative repo.
Change-Id: I1592ebad0f0db553322ea766561b1b8c3fd38aea
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Before Unicode 4.1.0 there was an error in the example code for Hangul
normalization that used <= on the ends of some ranges of values, where
they should have used < tests. This was faithfully copied but the need
for correction has only lately come to light.
Thanks to Ma Lin for pointing this out and providing the fix and
test-cases.
Fixes: QTBUG-71894
Pick-to: 6.2 6.1 5.15
Change-Id: I5c7fec1f9fac1f7a25b2d5e9c3109a90a7ff49e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Handle the case were a format was applied that does not align with
the fragments.
Pick-to: 6.2 6.1 5.15
Change-Id: I27593a50c587a5ec0290ff9d0a7a9767a3981cac
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Dock widgets enable the QTabBar::drawBase property, but the clip region
left a gap of 3 pixels on each side between the base line and the tabs.
Correct the size of the hole cut into the clip region accordingly.
Visually tested on macOS 10.15.7 and macOS 11.2.1 using the dockwidgets
and tabdialog example.
As a drive-by, fix a spelling mistake in related documentation.
Fixes: QTBUG-86362
Pick-to: 6.2 6.1
Change-Id: Iada027999467741d0590576ee4508e6f41fb056d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
QToolButton can show an arrow instead of an icon, and that arrow can, as
per the documentation, styled via the ::down/up/left/right-arrow pseudo
element. This was not working at all, as the implementation confused the
down-arrow with the menu arrow. Implement this correctly for all arrow
types.
A QToolButton can also have different ways to show a menu, either by
using a separate section of the button that can be clicked; this section
can be styled via ::menu-button and ::menu-arrow.
Or by instant or delayed menu popup when clicking the button itself, in
which case the button shows an indicator in the button itelf; that
indicator can be styled via the ::menu-indicator pseudo element.
The old implementation confused the various options, and the name of the
PseudeoElement_ToolButonDownArrow didn't help with that. So rename that
element to PseudoElement_ToolButtonMenuIndicator, and render it when
there is no separate drop down.
Fixes: QTBUG-27640
Pick-to: 6.1 6.2
Change-Id: Ia142a5d7498fa717e70f4e5382305e305b29effa
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
A style sheet that styles only the header arrow, but not the header
section or label, resulted in an overlapped text and header if the text
was also right aligned.
To prevent this, add the space required by the arrow to the size
calculation, and shorten the space accordingly before rendering the
right-aligned label.
Make corresponding adjustments to vertical headers with bottom-aligned
labels.
Fixes: QTBUG-84117
Pick-to: 6.2
Change-Id: I782d9538b695ad55d2d70b6d230f66059598768f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
We currently only support full gamma corrected painting by using linear
color space images, the text logic however did its own gamma correction
on top of that.
Change-Id: I4ef41745f4bc1c3a5815426abbcee6968987e70d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
The lack of an unsigned pack 32bit->16bit without SSE4, meant
the premultiplied path would saturate color values over 32735.
Pick-to: 6.2
Change-Id: Ia76e0369fd11a6767e8db78bf9a10eea30d91d2c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QT_NO_INTERNAL_COMPATIBILITY_FUNCTIONS has been removed
Change-Id: Ic77cdae4e5151e3b0fe05cc6dd5b43bffc24768c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Add 'Private' suffix to the internal module names in the mappings of
the qmake files.
Change-Id: Iacc487aa5e463a522341e526bf8580be2868cf37
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
When the listview setWordWrap is true and ScrollBarPolicy is
ScrollBarAsNeeded, if QStyle::PM_ScrollView_ScrollBarOverlap
returns true, the text displayed an empty line.
Fix this by not reserving the width of the vertical scrollbar
if the flow is TopToBottom and the vertical scrollbar, and QStyle
returns true for PM_ScrollView_ScrollBarOverlap. Amends
aeef92c3c3
Pick-to: 6.1 6.2
Fixes: QTBUG-94248
Done-with: Volker Hilsheimer <volker.hilsheimer@qt.io>
Change-Id: I4d47c7e86bbb86474cb1a99bb26d8b67f0e8a7e2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
'ld' only capable to resolve circular dependencies by wrapping the
suspected static libraries and objects using --start/end-group
arguments. We want to detect if linker is 'ld' at configure time to
decide how to link the resource objects if finalizers are not enabled.
The qt_config_compile_test function is extended with an extra argument
since it's required to pass custom cmake flags to the ld-related test.
Pick-to: 6.2
Change-Id: I484fcc99e2886952d8b0232f37e4e6a35d072931
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Fix docs to state that findClass() returns a global ref from the
cached classes list.
Pick-to: 6.2
Change-Id: I7c45cc4c9e1c6e109db7cf7d926a250592798972
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
For auto-tests that were temporarily disabled. Similar to
network-settings.h, header-only stuff.
Fixes: QTBUG-92866
Fixes: QTBUG-92877
Change-Id: I15b5c0b41f0d8bfe59b09c844884ff6d99e6d41a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
As QWindowsPipeWriter now maintains a chunk queue, there is no need to
use the internal QIODevice buffer and wait for the previous operation
to complete.
Change-Id: Id4d54edfe920aeb4a534980cb0cc85a56c067a70
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
In a13e8d6660 which provided the move
and decoupling of OpenGL code the !makeCurrent-succeeded &&
!context-is-valid condition got changed to !makeCurrent-succeeded &&
context-is-valid which makes no sense because what we test for is
context lost situations, in which case makeCurrent fails and isValid()
reports false.
Restore the ! that went missing in the above mentioned patch.
Pick-to: 6.2 6.1
Change-Id: I94f84d2853bcbd2965f76ecd665d3614b1f0e746
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
On styles where the tab bar's scroll buttons are rendered semi-
transparently, or where the buttons don't fill their entire rect (for
example have rounded edges), the tab that's covered by the buttons
should not shine through the gaps, or even shine through the button.
Clip the painter so that the area of each button is not painted by the
tabs.
Fixes: QTBUG-50866
Pick-to: 6.1 6.2
Change-Id: Ie81f6d260f36d5a17868822e683745844a6a6b2f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
When pressing an index in order to start a flick gesture, QAIV sets
the current index. When QScroller changes state to Dragging, then
QAIV restores the current index to what it was before the press, as
the user is clearly scrolling the view. With autoScroll enabled, this
will produce an ugly jump if the old current index is no longer in
the viewport.
To prevent this, disable autoScroll before restoring the currentIndex.
Fixes: QTBUG-64543
Pick-to: 6.2 6.1 5.15
Change-Id: I3e0a18a6a179d80b9d810fce5aa658f0cfff9a29
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
When finding the index we need to scroll to, use the one where both start
and end of the tab rect are outside the currently visible section.
Otherwise we wouldn't scroll when the left-most index ends outside the
visible section.
Add test, which requires that the scroll buttons have object names.
Fixes: QTBUG-70498
Pick-to: 6.2 6.1 5.15
Change-Id: Id153c77dd5fca146612375e0ff39bd1f3e0536b1
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
The reply needs to be parented or it's not guaranteed to be deleted
Pick-to: 6.2 6.1 5.15
Change-Id: I7cbc31682f80dbbd9fb240fff9e6781cb6ca7b36
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
NSWindowStyleMaskMiniaturizable also controls programatic
minimize, in addition to the window decoration button.
Fixes: QTBUG-65637
Pick-to: 6.2 6.1 5.15 5.12
Change-Id: Iac5fb483433441173d770f4fcfb9e93440b9fe6a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Update documentation to not reference API that is obsolete in Qt 6.
Also fix documentation for changed behavior (isNull()), and
fix snippets.
Pick-to: 6.1 6.2
Change-Id: I526efeff63d907bbadd5e8a539ccf237cb992125
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Option-clicking the close-button on a window in macOS is a request to
batch-close all the windows. When this happens we get an event in through
the window that was clicked, which in turn results in AppKit calling
windowShouldClose: for each window. We respond to that by explicitly
closing each window (instead of just responding YES or NO), which
results in the window being released and deallocated. This causes
a crash when AppKit then follows up by closing each window after we
responded YES to windowShouldClose.
We work around this by keeping the window alive in the closest auto
release pool, which is typically at the level of the runloop. This
ensures that the window is alive for the duration of the logic that
AppKit has for batch-closing windows.
Fixes: QTBUG-92232
Pick-to: 6.2 6.1 5.15
Change-Id: I68b6138eb8325af0576b438ffa011137fec27926
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This reverts commit f6fa4b39ee.
Reason for revert: c76a2d7c9c was
not enough to catch all cases.
Pick-to: 6.2
Change-Id: I5830ab20b1f4d26a0a201c3dd5aaee6b10aa12ac
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This matches the behavior of other implementations, such as
QEGLPlatformContext: doing a qWarning with the relevant error
from eglGetError() or equivalent is helpful when something
goes wrong and should be common among QOpenGLPlatformContext
implementations.
Pick-to: 6.1
Task-number: QTBUG-85714
Change-Id: Ifa5d22b83808c92ae92efcbcddc8d8c3d3ba34b1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
The loop that initializes the item should execute at least once, so the pointer
should be pointing to something valid. The static analyzer doesn't see that,
and warns about unguarded access to the item pointer in report with hash
d008dbef4573afca54be0139e2971a4a. Add asserts for both the condition that makes
the loop run at least once, and for the item pointer not being nullptr.
Pick-to: 6.1
Change-Id: I94b9f3db3b3ce3d82445cf66788c05854b441aaf
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
QIntValidator::validate documents correctly that any input with "at most
as many digits as the top of the range" returns Intermediate. This is
needed to avoid input deadlocks where one can't go from 9 to 15 if the
range is 8 to 16.
Fixes: QTBUG-94269
Pick-to: 6.1 5.15
Change-Id: I6776e09fc231249fe78f9e6106492f8454b70a03
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Add a noexcept from a doc signature that was missing it.
Change-Id: I30b429a6ec4d182551ca68767d1c8aa61c9e4c09
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
refT()/derefT() can be marked noexcept; we don't care about not
overflowing the refcounter as a precondition. (This is BC, as no
compiler mangles noexcept.) This in turn allows to mark a constructor
calling refT() as noexcept.
Driveby: mark also the same functions to not be `const` in Qt 7.
They clearly are meant to modify *this, and constness only works
because of the unmanaged (raw) d-pointer.
Change-Id: I8d7d365640ff2e1cedc0a234c9abccdfc95ba6e3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
std::exception_ptr is a reference-counted "smart pointer", so we
shouldn't copy it around freely. Unfortunately QFutureInterface
has exported functions taking it by value, so we can't just change
the signatures and keep BC. Simply prepare the code for Qt 7.
Change-Id: Ic5aae6a095c8c842872a40db440c99d2dfe371f1
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
This means calling 'ninja apk' in a Qt build with examples configured
will build all example apks, regardless of whether the examples are
built as external projects or in-tree.
Fixes: QTBUG-94264
Change-Id: I5c7af0354858898a2e154a6d54fb025e4d81ff80
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This means calling 'ninja apk' in a user project with multiple android
applications will build all their respective apks.
For user projects, make the 'apk' target part of the global 'ALL'
target, so that a regular 'ninja' call implies the 'apk' target.
We don't do it currently for Qt builds, because certain test
executable apks fail to build.
Add a QT_NO_GLOBAL_APK_TARGET_PART_OF_ALL variable to allow removing
the global apk target from the 'all' target.
Pick-to: 6.1
Task-number: QTBUG-94264
Change-Id: I171b9da50eb7d670176704bd26dc1c492118b434
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Mainly to avoid leaking memory again. A possible reduction of memory
allocations would be a welcome side effect.
This reverts parts of 89f7389494.
Change-Id: I65a7529f532175967a4e408450aa55549b77d7e4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This should have happened when changing the code in
f493d41722
Fixes oss-fuzz issue 31633.
Pick-to: 5.15 6.1
Change-Id: I7945c3f90651f8fa04df20fbaf0b0c7f68619407
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Now that inputs (81152194) and outputs (3f0858ed) are explicitly set for
the preprocess stage we can enable the new build system.
Using the legacy build system will produce a build error in Xcode 13,
but the build will succeed:
error: The Legacy Build System will be removed in a future release.
You can configure the selected build system and this deprecation
message in File > Project Settings.
Fixes: QTBUG-71035
Pick-to: 6.1 5.15 5.12
Change-Id: I108d2103872255d10de2ff5161eef892065da1c4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
The error that the actual runtime will encounter, and not the one that compile-time
ifdefs will (potentially) erroneously select.
Change-Id: I8ef4c34bcb8b3e568bc39f8c8ea6bfb7732f9e27
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
The name stored in a QMetaTypeInterface should already be normalized, as
a static metatype uses typenameHelper, which takes care of
normalization via QTypeNormalizer.
For dynamic metatypes, we don't have that guarantee, but those can only
be created by Qt, as there is no public API for it. We can thus ensure
that we only create normalized typenames (which we currently do anyway),
and skip the normalization in registerCustomType.
Change-Id: I18728031825cd39fdbe17cad0fbc6e3b5fd03c93
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Do a quick check whether the type name contains an anonymous type. If
so, do not try to use optimized version. The simple check should still
be faster than calling normalizeType unconditionally.
Also only apply the faster version for clang and gcc, instead of all
non-MSVC compilers. Applying it to other compilers would require further
testing to handle anonymous structs.
Moreover, remove space before '(', which is necessary for function
pointers.
Fixes: QTBUG-94213
Change-Id: I795d1964f7a68daa6f9a5f262816d51ee7728788
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Make it return bool since the TriState was really only used signify that
the property was unsupported but there is already a separate way to
check if it's supported. More importantly there is no different set of
actions available to a user if they're in the Unknown or False state.
Because of the change to bool, we also rename the property to have an
'is'-prefix.
Change-Id: Iaaaad5ac31e663c36e00223bf5b0e719f412fc69
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Change-Id: I7e0fce63883019278ceb9dc757bf10ee9d77097c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Since icon, checkmark, text, and shortcut are each rendered aligned
within their own column, we need to take the widest of each element
into account when calculating the size requirement of each item. Otherwise
an item with very long text but no icon will get enough space for the
text, but no space for the icon, resulting in the text running over the
shortcut or edge of the menu.
Fortunately, QStyleOptionMenuItem provides us with the necessary
information.
Fixes: QTBUG-86754
Pick-to: 5.15 6.1
Change-Id: I0cf0e9adfe480d1004106e7475e498e718bf027b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>