Makes operations like minimizing a window happen "behind the scenes"
because the window is hidden during the state change.
Change-Id: I01a00661e57f2dcfa6aef78ee0cfa36fbed1bb03
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Qt::ForeignWindow implies Qt::Window, which QtWidgets interprets as a top
level window, but this is not the case on a QtGui level. A foreign window
can be a child window as well, so we have to make sure the QWindow state
is not propagated to QWidget, which would result in the QWidget becoming
top level.
Change-Id: Ie0c2d769ce92e6988a4d62da46f5fc2da74bdf08
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Calling QWindow::destroy() is documented to "release the native platform
resources associated with this window.", but in the case of foreign windows
we do not control the native platform resource, so we shouldn't destroy
the platform window until the QWindow is destroyed.
This also allows code paths to defer to the platform window to answer
questions like winId() instead of having to duplicate the ID on the
QWindow side in _q_foreignWinId.
Change-Id: Ie00ee570bdddde958d97d49edcba2bc1bf519a99
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Simplifies code at call sites and allows for refactoring how to decide
if a window is foreign or not at a later point.
Change-Id: Icc51a83bac187f4975535366b53b4990832b6c82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Previously, when clearing the pattern by clicking the clear
button, the result match list would display a list of empty
matches since apparently an empty pattern matches as many
times as the subject is long. This is confusing when using the
tool.
Restructure RegularExpressionDialog::refresh() so that it bails
out if the pattern is empty or invalid.
Change-Id: I8119a75db50cead3f64394016e3390a9bf7d0bf7
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
The minimum version of Xcode that we support is 5.1 (based on Clang 3.4)
Change-Id: I536c32a88bff44dab37afffd14a11f709fb25169
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Seems to be a write-only variable and QThread::currentThreadId has no
side-effects.
Change-Id: Ifaee7464122d402991b6fffd14a0c8666968dfe4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Give QCollator access to QLocalePrivate::bcp47Name(), to avoid
both the latin-1 -> UTF-16 conversion in QLocale::bcp47Name(),
as well all as
- the replace('-', '_').toLatin1() call in ICU
- the toLocal8Bit() call in macOS
- the toUtf8() call in Windows
implementations of QCollatorPrivate::init().
This is safe, since, according to https://tools.ietf.org/html/bcp47,
a BCP47 name only contains US-ASCII (ALPHA used, which is defined by
https://tools.ietf.org/html/rfc5234 to be [a-zA-Z] only).
Change-Id: Id56befb1b5a7983494d848cdabf7ebeda377cf9f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
When a non-QString-backed mode (via the (QChar*, int) ctor) was added
for Qt 4.5, the author forgot to adjust the setCaseSensitivity()
function. It still uses q_pattern instead of (p.uc, p.len) as the
pattern for which to create the skip-table. Since there is no
setPattern() overload for this mode, the correctness of the matcher is
not harmed by this, but its performance degrades to that of a linear
scan: the skip-table, being filled from an empty pattern, will be
all-zeros, sending bm_find() into the 'possible match' case at every
character.
Since matching is still correct, but slow, it's not possible to write
a test for this. I did, however, leave my attempts in the auto-test,
for when we add QStringView overloads of setPattern() which will then
be able to expose the bug.
Change-Id: I7b803e8624b0352a0a974900affbbfc0c260d93b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
The intention when using an overload that takes (const QChar*, int)
instead of a QString is probably to avoid creating a QString in the
first place. If the implementation stabbs the user in the back by
internally creating a QString just so it can call QString::compare()
on it, then that is rather unacceptable.
QCollator is already a friend of QString, so, absent QStringView,
resolve to calling compare_helper().
Change-Id: Ia7de1a095e3e310bd1b9957ed67291cc9cc95b32
Reviewed-by: David Faure <david.faure@kdab.com>
In fafdb171e0 a potential nullptr deref
was fixed, but it changed the hierarchy of accessible objects.
The new hierarchy would prefer to send a parent object that represents
the application, but macOS needs the window to be in the hierarchy for
VoiceOver to behave as expected.
Tweak it so that we give the window as parent again, not the app.
Change-Id: I5f7f59b07d0966c8bcf96968e4ed65eba9e05be6
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
This looks like an underlying issue in the model/view implementation
which relies on accessible interfaces that are not representing a qobject.
We know it's not perfect and needs fixing, but for now at least don't crash.
[ChangeLog][macOS][Accessibility] A common crash in accessibility on macOS was fixed.
See QTBUG-39008
Task-number: QTBUG-39008
Task-number: QTBUG-54776
Task-number: QTBUG-56043
Task-number: QTBUG-57146
Change-Id: I16b161914d4bc3cbc0beee37d468243bf7788d1e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
- No such parameter 'image' in QImage::toCGImage()
- Can't link to 'toNSImage()
Change-Id: Ida559fb1211d1e196d9a9a50d97566124e82eb2f
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
The key is immutable except for assignment and swap,
so don't run the risk of auto-detaching and use the
explicit-detach version of QSharedDataPointer.
Change-Id: Ib2cfe5981e6dfe375d6208289ff58247ef9d4870
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
... by not creating three temporary QVectors just to concatenate them.
There's no QVectorBuilder, so what works well with QStrings doesn't
work well at all with QVectors. The chaining of op+ causes three
temporary QVectors to be created and thrown away.
Instead, use clear() (which preserves the vector's capacity these days),
followed by four op+=.
Change-Id: I300bd35544ea41037d28db0f48f210c33c826b85
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
The setData method of an item view would get an incorrect value of a
QDialog's result. This patch changes the order of functions called to
fix that.
[ChangeLog][QtWidgets][QDialog] Fixed a bug where accessing the result
of QDialog's result could yield an incorrect value in some situation
like using it as a delegate for item views.
Task-number: QTBUG-6018
Task-number: QTBUG-12156
Task-number: QTBUG-14430
Change-Id: I6ee4b6e8cacf6a806631c05c6c5dbcff925df65e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
QDoc reports warnings for every QML code snippet that's not a
complete QML type declaration - ignore these warnings because
in majority of the cases, they're not indicative of any actual
problems in the code.
Change-Id: I53d13e2ae683ca8c5473f68eda17c61199de1ff8
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Clang 3.8's undefined-behavior sanitizer checks that the
declared type of the object is a base class of the
dynamic type of the object on each access to a member
of a class type.
It therefore requires the typeinfo for these types,
which for polymorphic types is emitted in the TU where
the vtable is emitted, too.
QDBusConnectionPrivate is a polymorphic non-exported class,
so this failed at link-time. Ditto for the other case.
Fix by autotest-exporting the classes.
Also, where applicable, de-inline the dtors, so the
vtable (and typeinfo) are pinned to one TU, and the
ctor, just because it's the correct thing to do.
Change-Id: I991f81f88d2a48e85d94d9f3ac61473c0b7056d3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Use the default dpi of 100 to calculate physical size of the display,
if KMS output returns 0 as the size and the size was not set via
environment variable.
Change-Id: If310592b2694a46d2fab464b21ec1765a5033933
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Fix warnings:
src/network/access/qhstspolicy.cpp:158: warning: Undocumented parameter 'expiry' in QHstsPolicy::setExpiry()
src/network/access/qhstspolicy.cpp:178: warning: Undocumented parameter 'include' in QHstsPolicy::setIncludesSubDomains()
src/network/access/qhstspolicy.cpp:178: warning: Can't link to 'includeSubdomains()'
src/widgets/kernel/qsizepolicy.cpp:402: warning: Cannot find 'transposed(...)' in '\fn' QSizePolicy QSizePolicy::transposed()
src/widgets/kernel/qsizepolicy.h:165: warning: No documentation for 'QSizePolicy::transposed()'
src/widgets/util/qundostack.cpp:164: warning: Undocumented parameter 'obsolete' in QUndoCommand::setObsolete()
Fix the signature of the QStaticByteArrayMatcher member functions. The warnings
src/corelib/tools/qbytearraymatcher.cpp:372: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from)
src/corelib/tools/qbytearraymatcher.cpp:382: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from)
remain, though since apparently qdoc is thrown off by the constructor.
Change-Id: I157359a881ff3fbc80d2eeb52dd5c27249d009c4
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Remove the line setting the DPR from the source; the image
is moved.
Task-number: QTBUG-58653
Task-number: QTBUG-58645
Change-Id: I2de94681459dba1d69dee06da44617fb9fa35bcc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
don't fail to set up cross_compile early enough. otherwise, we'd
populate the cache for target builds with data for the host.
amends 6b8666c7 and 5060740f.
conversely, pass on extra flags to configure tests when not cross
building.
amends d8be8110 (and 2c5eb3e6).
Task-number: QTBUG-58556
Change-Id: I531d71e06204a0b17ae6dabf017a52e0f2efd9a7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
in particular, -before (just for symmetry, as it's the default), -early
(the actual objective), and -late (for symmetry again).
Change-Id: I274303582a348b052c3e5106ff360ab4fd7d4ee2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
these are not referenced anywhere, and neither should they, as they are
not relevant to _using_ these modules in any way.
notably, QT.*.bins remains exported - this is because dlls reside there,
so it is necessary for setting up a launch environment.
Change-Id: I7a33c72be6e4789ea29a2fbbcac9588213900b6e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
the only users of module versions in the first place are found within
qt's own prfs; even qbs' qt module importer ignores them. but arguably,
the information makes sense.
however, exporting the same barely useful information redundantly is
plain over the top, so remove the pre-split representation.
Change-Id: Iaee69c86d8b7c8b8ef4f3580b8da333aeb8ade2c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
It's better to save icons in $XDG_RUNTIME_DIR or
$XDG_CACHE_HOME paths than in $TMPDIR as these
places are readable from the desktop environment
when an app is ran confined in a sandbox (as in
snap packages)
Change-Id: I1a3e4c5714f8ea51034d18fb87cead87ed21d6be
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
As explained in
https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0
creating dialogs on the stack is a bad idea if the
application or the dialog's parent window can be closed
by means other than user interaction (such as a timer or
an IPC call). Since we cannot know whether Qt is used to
build such an application, we must assume it is, create
the dialog on the heap, and monitor its lifetime with a
QPointer.
Instead of using manual resource management, add a
minimal implementation of QAutoPointer, and use that in
all static get*() functions.
Task-number: QTBUG-54693
Change-Id: I6157dca18608e02be1ea2c2defbc31641defc9d1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Clang complained about a missing override:
qgtk3menu.h:58:14: error: 'tag' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
Change-Id: I681cdeb93d35848ae39c1af289973b436e8ea60e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This is private API, and used nowhere else except in qcollator*,
so don't export these classes.
Change-Id: I217fde97c60ab0a3e19774ed5a6eed8b156fff1d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When a QFile object is reused, the atEnd() method may return incorrect
values. The reason for this is that QFileDevicePrivate::cachedSize is
not cleared. Setting cachedSize = 0 in the close() method fixes this issue.
Task-number: QTBUG-57698
Change-Id: I828a2cf844e98d581098f2c781fa47d2cd3275ce
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
QDateTimeEdit (QtWidgets) inherits its Private class from
QDateTimeParser.
By making the destructor (usually the first non-inline, non-pure,
virtual function, and therefore the trigger for most compilers to
emit the vtable and type_info structures for the class in that TU)
out-of-line, vtables and, more importantly, type_info structures for
the class are pinned to a single TU. This prevents false negative
dynamic_cast and catch evaluation.
Since the class is already exported, users of these classes are
unaffected by the change, and since it's private API, we don't need
to avoid adding code to the out-of-line destructor until Qt 6.
Task-number: QTBUG-45582
Change-Id: Id57289a7eff13564dddeca0af1c45a6180c36c48
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
At 200 ms, the error on first firing could be 10 ms.
Task-number: QTBUG-58519
Change-Id: Ifaee7464122d402991b6fffd14a02a4ce782f11f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Update the QtConcurrent code snippets to use the new QRegularExpression
class in place of the deprecated QRegExp.
Change-Id: I1366f902fc46bbeccc4013dd8adcf5fbfda13aed
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
... to make user code buildable with gcc [-Werror=zero-as-null-pointer-constant].
Change-Id: Ifef52e406c1f7d5a260612ec27922d1805aea6e2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Document version updated in commit
f4ac14944d as 1.4.1.
Change-Id: Ia890158d2e9b5d5dccea9a56342d0261dd0210cb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Implements a generic version of alphamapblit and alphargbblit so we can have
gamma-corrected blending of text outside of only RGB32 formats.
Change-Id: Ide960276357546558dd713aab66d2af0f2a09a2a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
On macOS, the code that read the plist is using
QByteArray::fromRawCFData. When we return the data directly
we need to detach the QByteArray so that it does not point
CFData's data that will get deallocated just after the call.
Task-number: QTBUG-58531
Change-Id: If829a304b986c99c8fc2aeeb992f2d539a4eef3a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
When a black font is used, such as Arial Black, it would cause
the font to appear to be rendered twice, particularly at large
point sizes. This is down to the synthesizing of the bold
aspect, however since the font is actually weighted as black
this is not required.
Change-Id: Ie32e0da8bc67c94123631253854312ed5c25ad9f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Fail to take into account vertical tabs led to that vertical tabs were
displayed wrong in some cases (for example, QMovableTabWidget was
one pixel shorter than it should be).
Task-number: QTBUG-58266
Change-Id: I90411eeaa6055538634b62b5d5bd5fa5013b0015
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
in a framework build, the headers are inside the "library", so it's
obviously not very wise to suppress its installation on the basis of
it not being there.
Task-number: QTBUG-57656
Change-Id: I026a3e486a2aad6ee0b8e0d264af4385af945e42
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Harald Fernengel <harryf@gmx.com>
Adds handling of clipping in qt_alphamapblit_quint16, this
is also preparing for a generic implementation of alphamapblit.
Change-Id: I706f08179abefa74f8de138369a0dc8ce19510fc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
"/usr/include/mysql/.." would slip by the removal of default include
directories. so clean up the returned paths first.
Task-number: QTBUG-58532
Change-Id: I445bb15619f6401494e8fffd149ea41a50ef188e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When calculating the width of a text for drawing decorations on top,
we use the effective advance of the whole text after it has been
through the shaper.
However, in the case of QStaticText and QGlyphRun, there is shortcut:
Since we only have the glyph indexes and position of each glyph,
we use the position + advance of the right-most glyph to find the
right-most edge of the decoration. For this, however, we use the
advance of the glyph *out of context* of the rest of the string,
because the whole idea is to avoid doing the shaping of the string
with every draw call. In some rare cases, the advance of the
right-most character, in the context of the string, is different
from the advance of the standalone glyph.
Now, one way of fixing this would be to store the width of the
text in QStaticText and QGlyphRun, but since it is a very rare
artifact which is barely visible, I have opted to just work around
it in the test instead, the workaround being to force integer
metrics so that we don't get the small 0.2 pixel error.
Task-number: QTBUG-55217
Change-Id: I8d16d52f2ef27275cabb7d3865aeeaa31617ba3d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>