Commit Graph

27142 Commits

Author SHA1 Message Date
Andre de la Rocha
92666ff521 Fix minor stuff in Windows UI Automation support
Adding missing "override" keywords in overridden interfaces, using
"#if QT_CONFIG(accessibility)" instead of "#ifndef QT_NO_ACCESSIBILITY",
and other minor bits. No change in behavior expected.

Change-Id: Ief0e23cb7b577dd3e4af21750b6beccc80d6a2f8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-27 23:31:26 +00:00
Timur Pocheptsov
b78342f553 QAbstractSocket - protect against the broken invariant
It's possible to use QAbstractSocket (more precisely QUdpSocket) in
a quite unusual way: connect to its stateChanged() signal and call
close() in the slot (thus invalidating socketEngine pointer). For
QAbstractSocket::bind() this results in a null-pointer
dereference.

Task-number: QTBUG-69063
Change-Id: Ife2c778ff59ccc7b99a96caa5ba67f877aaefe42
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-06-27 17:40:25 +00:00
Thiago Macieira
10e5ec2557 QByteArray: implement qstricmp with SSE 4.1
Using SSE 4.1 because of the need for PMINUB.

Change-Id: Ib48364abee9f464c96c6fffd152ebd3f8ea7fe94
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-27 16:29:14 +00:00
Simon Hausmann
cd64a96b31 Fix QString::localeAwareCompare with composed/decomposed strings on Windows
With ICU and on macOS it appears that the comparison is done on a
canonical form, while CompareString(Ex) does not do that, as the added
test verifies. Explicit normalization fixes that.

As a bonus, this also unifies the code path between regular Windows
and UWP by unconditionally using CompareStringEx (which requires
Vista or later).

This issue surfaced while running the ECMASCript 6 Conformance Test
Suite in QtQml.

This re-uses the existing test for localeAwareCompare, which was
disabled on Windows, macOS and Linux with ICU (the common case).

Change-Id: I52440fce60b54745ead1eff005ec51e98e2a79ec
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2018-06-27 16:21:22 +00:00
Tor Arne Vestbø
465098088e Harden logic for converting from CSS gradients to QGradient
Some of the gradients from https://webgradients.com/ are not minified
completely, so we need to be a bit more lenient when converting them
to the internal format used by QGradient.

Change-Id: I47466b6a77abd6d2fefc1326fbf6ba5713dd74cb
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-06-27 15:40:03 +00:00
Tor Arne Vestbø
fc926985a1 doc: Mark QGradient::Preset enum as internal until we can ignore its values
Change-Id: I0637ee765053a30ac3666f33c4d8f59c5ae9aa84
Reviewed-by: Martin Smith <martin.smith@qt.io>
2018-06-27 15:40:03 +00:00
Gatis Paeglis
4050ee6ac7 xcb: rely on WM_SIZE_HINTS gravity to handle x,y positioning
The original code was added by b316c3ac5e
(in 2012). This patch changes two things:

1) We now rely on WM to position a window based on the set gravity. It
should not be necessary to calculate coordinates manually as was done
in windowToWmGeometry(). We don't even know the decoration size before
the window is mapped.

2) We now update gravity whenever needed instead of hardcoding based
on what Qt APIs (setGeometry vs setFramePosition) where used to set
the initial window position.

The patch from b316c3a says:

"Determine gravity from initial position. Do not change later as
it will cause the window to move uncontrollably"

Since it did not elaborate on the situation, we can only assume
that it was caused by another bug in Qt at the time or perhaps
a broken WM. From [1]:

"Applications are free to change their win_gravity setting at any
time. If an Application changes its win_gravity then the Window Manager
should adjust the reference point, so that the client window will
not move as the result."

Tested on Ubuntu/Unity, KDE/KWin, Gnome-shell/Mutter, Lubuntu/OpenBox.
Works as expected everywhere expect Unity. Unity seems to ignore
XCB_GRAVITY_STATIC and treats it as XCB_GRAVITY_NORTH_WEST, which means
that setGeometry/setFramePosition produce the same placement on this WM
(the behavior was the same also before this patch).

P.S. Also renamed xRect -> rect, which was a leftover from
ae5f2a6672

With this change we can un-blacklist QWidget save/restore geometry
auto tests.

[1] https://specifications.freedesktop.org/wm-spec/latest/ar01s09.html

Task-number: QTBUG-66708
Change-Id: I381eef5d34dddb04de16a897ce5540b9c430b216
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-06-26 07:11:34 +00:00
Christian Ehrlicher
0e2dae902b QTreeView: speedup expanding items via keyPressEvent/asterisk
Expanding items with asterisk is done with expand(QModelIndex) which in
the end calls layout() which is very slow and useless until all items
are expanded. Therefore delay the relayouting until all items are
expanded.

[ChangeLog][QtWidgets][QTreeView] Speedup expanding items when
pressing asterisk

Task-number: QTBUG-39486
Change-Id: Ieb798fc22e9fa0dcac4bb92de7e3ed3ebb9d1c38
Reviewed-by: David Faure <david.faure@kdab.com>
2018-06-25 18:58:10 +00:00
Christian Ehrlicher
5712c62d1c QCommonStyle: properly elide last visible line
Rewrite QCommonStylePrivate::viewItemDrawText() to be able to elide
lines which are too long and the last visible line. The painting is now
done in one pass instead of two and lines which are not visible due to
a size constraint are not painted at all.

[ChangeLog][QtWidgets][Itemviews] Fixed eliding of multi-line items

Task-number: QTBUG-12129
Task-number: QTBUG-14949
Task-number: QTBUG-57891
Change-Id: I3a41938e442663ecd7e5ca56bf6bbd857edafb7d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-06-25 18:58:07 +00:00
Thiago Macieira
f6d9cc5b79 SIMD: Refactor the constants to be actual bit values
... instead of being the bit numbers. This allows us to test more than
one feature at a time with qCpuHasFeature (see commit about the Haswell
architecture features). The drawback is that we won't be able to handle
more than 63 different CPU features, though we're likely quite far from
it (x86 currently has only 36 features).

Change-Id: Iff4151c519c144d580c4fffd153a0acbfd74c2c6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-25 18:49:28 +00:00
Thiago Macieira
74ce4ffff6 SIMD: Move the #include for qsimd_x86_p.h a bit lower in qsimd_p.h
It needs to be after our extra #defines for CPU features, otherwise the
qCompilerCpuFeatures variable won't be set correctly.

Change-Id: Iff4151c519c144d580c4fffd153a0a93ca01bbe6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-06-25 18:49:18 +00:00
Thiago Macieira
f05d1b0856 QMetaType: remove compatibility code for MSVC 2013
We use the constexpr code for MSVC 2015.

Change-Id: I91f63171877743978cb3fffd153ad52a3ee293d0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-25 18:49:07 +00:00
Gatis Paeglis
2f2bfc4e59 widgets: fix QWidget::save/restoreGeometry()
QWidget::restoreGeometry() is calling QWidget::move() with restoredFrameGeometry,
which internally calls setGeometry() and sets positionPolicy = QWindowPrivate::WindowFrameExclusive,
which is invalid: restoredFrameGeometry is WindowFrameInclusive geometry.
QPA plugins rely on correctly set policies when interpreting x,y. QWidget::move()
was not designed for this AFAICT, so making it to accept frame geometry is
no-op. It is widely used legacy code, changing it could cause regressions.

Save/restore API was introduced in Qt 4.2, at that time we did not have APIs
like QWindow::setFramePosition(), so its unclear why geometry() was not stored
instead. The documentation also is somewhat unclear:

"[..] save the geometry when the window closes [..]"

Frame or client geometry? It does not specify. And from the code we see
that frame geometry was passed as client geometry, not making the original
intention clearer. Besides that, restoreGeometry() is full of other undocumented
assumptions where to place windows and when to fail (fortunately its easy
to write your own save/restore logic). Added a Qt 6 note in the source code.

What this patch changes:

Now we store geometry() in saveGeometry() and use that value in restoreGeometry()
by setGeometry(). This does not cause any behavior difference in window
positioning (tst_QWidget::saveRestoreGeometry still works). Geometry restored
from data saved with earlier versions of saveGeometry() might be positioned at:
x + leftMargin, y + topMargin.

This patch makes tst_QWidget::saveRestoreGeometry to always fail instead
of being flaky. Blacklisting for XCB instead of selected distros.

Also enabled excluded code paths for XCB on tst_QDockWidget::restoreDockWidget().
It does not seem to be flaky, maybe it was in 2015, but lot of things have changed
since then.

Task-number: QTBUG-66708
Change-Id: Ic86a6fd091e2c71b7550b2f476386da704253cd4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-06-25 13:41:06 +00:00
Eirik Aavitsland
0877ced980 Fix: crash when painting with high-dpr image brush
The recently merged f5fe9fc5a4 (Add ObjectMode to QGradient) changed
combineXForm() to check the brush's gradient's
coordinatemode. However, combineXForm() is now also used when painting
with high-dpr image brush. In the latter case, the gradient is 0 so
this would crash. Testcase: tst_lancelot, image_dpr.qps.

Change-Id: I5e2785ef708768c3fa3eac0999c9c24fd25108f4
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-25 13:04:35 +00:00
Gatis Paeglis
f8944a7f07 widgetwindow: send DragMove for every DragEnter
... as specified in the documentation. This was a regression from Qt4
and can cause mouse cursor flickering durig dragging on e.g. custom
widget where some areas of the widget do not accept drag-and-drop.

Task-number: QTBUG-67155
Change-Id: Iaa6f9407181931ed8e3d6a8fec13fd59d3c8625d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-25 12:45:54 +00:00
Gatis Paeglis
7a7c722782 dnd: send DragEnter and DragMove on DnD start
This was a regression from Qt4 and also is the documented behavior.
In addition this patch fixes various issues with cursor shape updating
that were discovered along the way and that are necessary for testing
the new changes.

The code in QGuiApplicationPrivate::processDrag() also needed a fixup,
particularly the resetting of QGuiApplicationPrivate::currentDragWindow.
Without this fix we would get DragMove (the one that immediately follows
the DragEnter) only for the first DragEnter event. For example when dnd
starts on mouse press then for mouse click we would get:

<click> DragEnter->DragMove->DragLeave <click> DragEnter->DragLeave

but the expected is:

<click> DragEnter->DragMove->DragLeave <click> DragEnter->DragMove->DragLeave

Task-number: QTBUG-34331
Change-Id: I3cc96c87d1fd5d1342c7f6c9438802ab30076e9e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-25 12:45:47 +00:00
Kai Koehne
ca3460775c Fix incorrect JSON in qt_attribution.json
Fix spurious comma added in commit c4a21708ed.

Change-Id: I6d62378dfdda7a0da611eed1064cff707b9c6bf6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-06-25 12:39:27 +00:00
Giuseppe D'Angelo
42b9b7b5d0 QRegularExpression: minor code tidies
Use nullptr, clarify comments.

Change-Id: Ib5f5879d8281cc455635513f82ff8c4bdb951ea8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-23 09:37:46 +00:00
Thiago Macieira
cad7100fda QByteArray: add compare() with case sensitivity options
Need to do the same for startsWith() and endsWith(). indexOf() is a lot
harder.

[ChangeLog][QtCore][QByteArray] Added compare(), which takes
Qt::CaseSensitivity as one of the parameters. This function is more
efficient than using toLower() or toUpper() and then comparing.

Change-Id: Ib48364abee9f464c96c6fffd152e69bde4194df7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-06-22 20:12:41 +00:00
Christian Ehrlicher
c699daeceb QListView: do not delete item on internal move
When an internal DnD occoures in IconMode, the item is moved to it's new
place but the logic in filterStartDrag() has no clue about the fact that
an internal move happend. Therefore the item gets deleted. Fix it by
changing the event's drop action to Qt::CopyAction to avoid the deletion
as it is done within QListWidget DnD code.

[ChangeLog][QtWidgets][QListView] Do not delete item on internal move.

Task-number: QTBUG-67440
Change-Id: I873d3c9fa76e107e108d9af0dcf8cecd1e18a18f
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2018-06-22 20:05:11 +00:00
Gatis Paeglis
1acdcdaa4d xcb: add static overload for setting window name
Change-Id: Ib581a582059e196567514f40b1964696ceaf3a88
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-22 19:50:42 +00:00
Giuseppe D'Angelo
06af9a1e38 QRegularExpression: refactor pattern optimization
After the move to PCRE2, optimizing patterns has been a thorn in the
side due to the fact that PCRE2's JIT compiler modifies the pattern
object itself (instead of returning a new set of data, like PCRE1
did). To make this fit with the existing behavior, a read/write
lock was introduced, with the read part locking when matching and
the write when compiling (or JIT-compiling) the pattern.

This locking strategy however introduced a performance issue,
as we needed:

* to acquire a write lock to compile/optimize the pattern (incl. the
common case where the pattern was already compiled, so bailing out
immediately);

* to acquire a read lock during the actual match, to prevent
some other thread from optimizing the pattern under our nose.

This was due to the "lazy" optimization policy of QRegularExpression
-- optimize a pattern after a certain number of usages. The
excessive amount of locking effectively limited scalability.

Simplify the code, and drop that policy altogether: since JIT
compiling in PCRE2 is faster and pretty much "always recommended",
just always do it for any pattern (unless it gets disabled via
env variables) when compiling it.

This allows to go back to a plain QMutex, and now the actual
matching doesn't require acquiring any locks any longer. Of course,
there is still a mutex acquired just before matching for checking
whether the pattern needs recompiling in the first place; this can
probably be further optimized via double-checked locking (using
atomics), but not doing it right now.

This shift makes a couple of pattern options controlling
optimization useless, and allows to centralize the 3
QRegularExpression tests (which were actually the very same test,
just setting slightly different optimizations strategies).

While at it, install a stress-test for threading, with the idea
of running it under TSAN or helgrind to catch bugs in
QRegularExpression's locking.

[ChangeLog][Important Behavior Changes][QRegularExpression] Regular
expressions are now automatically optimized (including JIT
compiling) on their first usage. The pattern options
OptimizeOnFirstUsageOption and DontAutomaticallyOptimizeOption no
longer have any effect, and will get removed in a future version of
Qt. QRegularExpression::optimize() can be still used to compile and
optimize the regular expression in advance (before any match), if
needed.

Task-number: QTBUG-66781
Change-Id: Ia0e97208ae78255fe811b78029ed01c204e47bd2
Reviewed-by: David Faure <david.faure@kdab.com>
2018-06-22 19:43:54 +00:00
Joerg Bornemann
6173e1d6f8 Build the Windows platform plugin with QT_NO_FOREACH
...for consistency with the other platform plugins.

Change-Id: I85946d610a62c19140618c83f80c4aa63fce4bc3
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-06-22 13:10:54 +00:00
Eirik Aavitsland
f5fe9fc5a4 Add ObjectMode coordinate mode to QGradient
The ObjectBoundingMode coordinate mode of QGradient allows specifying
the gradient coordinates relative to the object being painted. But if
the gradient brush also has a transformation, that transformation is
applied in the logical, not object, coordinate space. That behavior is
counterintuitive. However, changing it now would break existing
code. Instead, we introduce a new coordinate mode enum with the
expected behavior, and document the old one as deprecated.

This prepares to fix the bugs below in qtsvg, by making
it possible to specify the same behavior in Qt as SVG has.

[ChangeLog][QtGui][QGradient] Add ObjectMode coordinate mode
[ChangeLog][Important Behavior Changes] QDataStream version bumped up to 18 to account for changes in the serialization of QGradient.

Task-number: QTBUG-59978
Task-number: QTBUG-67995
Change-Id: I8820a2555359812f3e1a46e37d6ac2cc29a2091d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-22 10:42:33 +00:00
Ulf Hermann
99d4f0026f Make the stub implementation of QThread compile again
We cannot inline methods of QThreadPrivate because QThreadData has to
be declared before. The global QThreadData needs to be accessible to
QThreadData::clearCurrentThreadData(), and QAdoptedThread::run() has to
be moved inside the #ifndef QT_NO_THREAD block as run() doesn't exist
in the stub and Q_DECL_OVERRIDE would be wrong.

We also fix the QThreadData::current() method to take and use the same
parameters as in the non-stub case.

Change-Id: Id29ca44b11fa95ed2df7cc39243a07ce7d3c455e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-22 07:14:35 +00:00
Ulf Hermann
31023ef553 Make the sleep methods available in QThread even if QT_NO_THREAD
sleep, msleep, and usleep are not actually related to threading and
serve a purpose also in a single threaded application.

Change-Id: Iba2e343d48a9c09e60125bc1b589047e0241608a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-06-22 07:14:29 +00:00
Gatis Paeglis
47aebe3587 xcb: account for misbehaving Unity DnD Manager
... which may cause dnd data to be lost.

As soon as Unity sees that dnd operation has started (it monitors
for changes on XdndSelection) it creates an invisible window
named XdndCollectionWindowImp that fill entire screen and starts to
act as DnD target. Once it has fetched the mime data it moves
XdndCollectionWindowImp away without sending any DnD termination
events. XdndCollectionWindowImp does not respect the XDnD protocol.
Only when its gone we can start a normal dnd operation - looking for
real DnD target. We ask windows if they are XdndAware on the initial
mouse press and subsequent mouse move events. This patch sets a cursor
to Qt::ForbiddenCursor while DnD is interfered by XdndCollectionWindowImp.
A user will see the real DnD action (reflected by cursor) only after
the next mouse move when XdndCollectionWindowImp has stopped interfering.
We also setCanDrop(false) while DnD target is XdndCollectionWindowImp.
Temporary seeing ForbiddenCursor is better than losing DnD data.
Dropping in this state means that drop will simply be ignored.
It is unclear what Unity developers expected DnD source window to do when
user releases mouse while XdndCollectionWindowImp is stealing the data.
Looking at Unity code, it appears that they were hoping to be quick
enough that it would never happen.



Task-number: QTBUG-49464
Change-Id: I10880073f6d843572be44fe9a3c4f78194466299
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-22 06:09:36 +00:00
Gatis Paeglis
6a28a2cc34 xcb: qxcbdrag.cpp cleanups
- moved finding of XdndAware target logic in its own function to
  reduce size of QXcbDrag::move().

- switched to use categorized logging with more consistent logging messages

- added more comments to avoid constatly looking at the
  specification for the meanings of Xdnd* actions and who
  sends/receives the action.

- removed dead code (findXdndAwareParent), which should have been
  removed in 269fdbdd2b when reimplementing
  this logic in XCB.

- removed needless reseting of state variables in various places as
  this is handled in QXcbDrag::init() on DnD start.

- renamed variable in QXcbDrag::dndEnable(): xdnd_widget -> window

- and other minor cleanups

Change-Id: Ib667f80ceb4c07b7409a90c041044c98665877f3
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-22 06:09:27 +00:00
Giuseppe D'Angelo
2a1d0c2669 Compiler detection: add support for C++17's [[deprecated]] on enumerators
Change-Id: I5cff94d036bd311aee2b6418dd793fde89de0938
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-21 19:52:54 +00:00
Ulf Hermann
d502d883fd SSL: Add a feature for DTLS
For now the new feature depends on openssl as that is the only supported
implementation. Once we get an implementation for SecureTransport, we
can change the condition.

The feature needs to be public because qdtls.h is a public header.

Change-Id: Ie3e4acbeb2888f2fb13453b3ecdc19bacc83f6e6
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-06-21 15:10:55 +00:00
Timur Pocheptsov
ac583b686d Let's encrypt datagrams
This patch adds DTLS support to QtNetwork module (and its OpenSSL
back-end).

DTLS over UDP is defined by RFC 6347.

The new API consists of

1) QDtlsClientVerifier which checks if a client that sent us ClientHello
   is a real DTLS client by generating a cookie, sending a HelloVerifyRequest
   with this cookie attached, and then verifiying a cookie received back.
   To be deployed in combination with a server-side QUdpSocket.
2) QDtls - initiates and proceeds with a TLS handshake (client or server
   side), with certificates and/or pre-shared key (PSK), and encrypts/decrypts
   datagrams after the handshake has finished.

This patch does not implement yet another UDP socket, instead
it allows use of existing QUdpSocket(s), by adding DTLS support
on top. OpenSSL back-end uses a custom BIO to make it work with
QUdpSocket and give a finer control over IO operations.

On the server side, demultiplexing  is left to client code (could
be done either by connecting QUdpSocket or by extracting address/port
for an incoming datagram and then forwarding/dispatching them to
the corresponding QDtls object).

Task-number: QTPM-779
Change-Id: Ifcdf8586c70c3018b0c5549efc722e795f2c1c52
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-06-18 19:54:16 +00:00
Thiago Macieira
48d6990e41 QCborValue: store US-ASCII strings as 8-bit
They're easy to convert back to UTF-16, their length is the same, they
occupy half the memory and they're easy to encode into CBOR (no
transformation necessary).

The code was copied from QJsonPrivate::Latin1String::operator=().

Change-Id: I56b444f9d6274221a3b7fffd150c52bcb6c97f37
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-18 19:53:24 +00:00
Thiago Macieira
40d528d9fd QToolbar: Un-hide the QLayout::indexOf non-virtual
Breaks the build with QT6_VIRTUAL

qtoolbarlayout_p.h:99:9: error: 'QToolBarLayout::indexOf' hides overloaded virtual function [-Werror,-Woverloaded-virtual]

Change-Id: I6efb28c3145047559ec0fffd15386c39739b42f9
Reviewed-by: David Faure <david.faure@kdab.com>
2018-06-18 19:53:22 +00:00
Thiago Macieira
150b9327a4 Fix warning that QRegion::rects() is deprecated
Since we do need a container so we can sort, use std::back_inserter.

Change-Id: I6efb28c3145047559ec0fffd153880918eb47184
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-06-18 01:52:51 +00:00
Thiago Macieira
467c112d12 QCborValue: fix warning about shadowing members
qcborvalue.h:145:9: error: declaration of 'taggedValue' shadows a member of 'this' [-Werror=shadow]

Newer versions of GCC don't warn for variable shadowing a member
function.

Task-number: QTBUG-68889
Change-Id: I6efb28c3145047559ec0fffd153857b856267d6d
Reviewed-by: Liang Qi <liang.qi@qt.io>
2018-06-18 01:51:35 +00:00
Liang Qi
c1345bda99 QCborStreamReader: Fix uninitialized warning
serialization/qcborstream.cpp: In member function 'QCborStreamReader::StringResult<int> QCborStreamReader::readStringChunk(char*, qsizetype)':
serialization/qcborstream.cpp:2845:62: error: 'content' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         memcpy(ptr, d->buffer.constData() + d->bufferStart + offset, toRead);
                                                              ^

Task-number: QTBUG-68889
Change-Id: Ieea05672f2fdd7685c2af0e0aa7fa8b281d25618
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-18 01:51:32 +00:00
Thiago Macieira
15553d3ea7 Fix build with SSE 4.1 but not AVX2
Failed on my Sandybridge Mac with -march=native:

qstring.cpp:363:19: error: redefinition of 'mask' with a different type: 'const __m128i'

Change-Id: I6efb28c3145047559ec0fffd15386aeb8d36d681
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-16 01:19:52 +00:00
Thiago Macieira
4bf45691b5 Remove unused QString::toLatin1_helper overload
Commit 5dc1e08c8c changed
QString::toLocal8Bit_helper to use qt_convert_to_latin1 so it became
unused. It was never used in inline functions in the headers.

Change-Id: I6efb28c3145047559ec0fffd15382f9d08efdfeb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-06-16 01:19:48 +00:00
Andy Shaw
d760f39d5c QTreeWidget: Keep items hidden even if their parents are reparented
When an item is explicitly hidden, then it should stay that way even if
its parent is reparented. The item itself needs to be explicitly shown
for it to be made visible.

Task-number: QTBUG-54843
Change-Id: I0c6eea9a936f82d5874e3246292bd16365440411
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-06-15 09:19:23 +00:00
Robert Griebl
e7fbb9f242 Fix unused parameter warning
Task-number: QTBUG-68804
Change-Id: Id40ea045237e5ceafc04d86629f2264eecc084c1
Reviewed-by: Liang Qi <liang.qi@qt.io>
2018-06-15 05:37:54 +00:00
Jan Grulich
2f5c9ae576 Make sure we open native dialogs when opening folders inside sandbox
We have to take obsoleted QFileDialog::DirectoryOnly file mode option
into account, because it is actually used, even internally in Qt when
using static QFileDialog::getExistingDirectory() method.

Change-Id: I6cdd35ae4724a1d889a0fb1c3555dc3ca4f3bf4d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-15 05:37:52 +00:00
Oswald Buddenhagen
eaa3417901 configure: dequote library sources asap
the json format uses single strings for library sources, as that leads
to less noisy source text. however, this implies the need for de-quoting
and subsequent re-quoting whenever the values are processed. so change
the internal representation to regular qmake string lists as the first
thing when processing the lib source, and re-quote only when outputting
the values.

CFLAGS are excluded, because we'll deal with them differently.

Change-Id: I4ab43d98085ea9f6601fd21ac2afb5bce4f7e2a9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-06-12 10:03:32 +00:00
Thiago Macieira
43e85057c4 QUrl: speed up FullyDecoded decoding of data with SIMD
If the data stored in QUrl has no percent-encoded sequences and the user
requested FullyDecoded mode (the default), then we can speed up the
check for percent-encoded sequences with SIMD. This commit adds support
for both SSE2 and AVX2.

Change-Id: Ib48364abee9f464c96c6fffd152e200baa9fbd8d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-11 15:06:57 +00:00
Alexander Volkov
649490f359 Add itemAlignment property to QListView
This property allows to change the default behavior in
which list items occupy the entire width of their column.
Setting it to Qt::{AlignLeft,AlignRight,AlignHCenter} will
reduce their widths to the minimum values, thus allowing to
have intermediate free space. Then the user will be able to
begin selections by mouse from this space.

[ChangeLog][QtWidgets][QListView] Added itemAlignment property.

Task-number: QTBUG-56606
Change-Id: Iae55c251379be4e45d0c0d69175ff4388b5785b4
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-06-08 12:35:15 +00:00
Giuseppe D'Angelo
6c566e506b Code tidy: replace a for loop with an algorithm
Change-Id: Ie988101eb3165b92c5f4a140e4c301b9a46263bf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-08 11:36:07 +00:00
Thiago Macieira
c4ed96513e QCborValue: add support for QVariant and JSON conversions
Plus QStringList.

Change-Id: I39332e0a867442d58082fffd1508dfb9b540af23
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-06-08 07:46:41 +00:00
Liang Qi
49c9377421 Merge "Merge remote-tracking branch 'origin/5.11' into dev" into refs/staging/dev 2018-06-08 07:46:35 +00:00
Thiago Macieira
92e472302a Long live DOM API for CBOR!
This is very similar to QJsonDocument, but there's no QCborDocument.
QCborValue is that.

[ChangeLog][QtCore] Added QCborValue, QCborArray and QCborMap, classes
that permit DOM-like access to CBOR data. The API is similar to
QJsonValue, QJsonArray and QJsonObject, respectively.

Change-Id: I9741f017961b410c910dfffd14ffca50dd8ef3ba
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-06-08 07:46:29 +00:00
Liang Qi
096e37910d Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	.qmake.conf
	src/corelib/kernel/qeventdispatcher_cf.mm
	src/gui/kernel/qguiapplication_p.h
	src/gui/kernel/qwindowsysteminterface.cpp
	src/gui/kernel/qwindowsysteminterface.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/cocoa/qnswindowdelegate.mm
	src/plugins/platforms/ios/qioseventdispatcher.mm
	src/plugins/platforms/windows/qwindowsdrag.h
	src/plugins/platforms/windows/qwindowsinternalmimedata.h
	src/plugins/platforms/windows/qwindowsmime.cpp
	src/plugins/platforms/winrt/qwinrtscreen.cpp

Change-Id: Ic817f265c2386e83839d2bb9ef7419cb29705246
2018-06-07 19:10:53 +02:00
Allan Sandfeld Jensen
95e6ab3329 Optimize fetchTransformed and removed specialized versions
Optimize the general transformed fetcher and use it to replace several
specialized copies of it that are now slower than the general one.

Change-Id: Ife79ec99227f0df4f127303c7a340b2f7d174dff
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2018-06-07 10:37:43 +00:00