Commit Graph

34057 Commits

Author SHA1 Message Date
David Faure
55e273c1a2 Fix compilation with clang, missing errno.h
Similar to cfe1a295fc which was in a different file.

Change-Id: I40e204f8603a2d4c10a6c737192957653f537d1a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-12 13:26:16 +00:00
David Faure
bc74273143 QPainter: fix invalid pen style when drawing misspelled words
This code asks the platform theme to resolve SpellCheckUnderline to an
actual pen style (wave, solid, dash, etc.) but if there's no theme,
or if the default implementation in QPlatformTheme is used, the value is
still SpellCheckUnderline, which then casted to a PenStyle below in
qpainter.cpp:
   pen.setStyle((Qt::PenStyle)(underlineStyle));

The value 7 is an invalid PenStyle, which leads to random behavior
when drawing the underline. Make it WaveUnderline if the platform theme
had no opinion on how to draw it.

Change-Id: I4f02f9b58f10582cee5aefce7a4d5cd300133140
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-12 13:26:05 +00:00
Tor Arne Vestbø
f3a21f267f Fix spelling in qWaitFor comment
Change-Id: I0ac67de3371ee36c21e124e88845aaae63a73f6e
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-10-12 09:51:27 +00:00
Kai Koehne
f6cca6ab8a Replace 'an unique' with 'a unique'
Unique begins with a "y" sound, hence a unique is correct.

Change-Id: I9eb6b4d4c9ddab45af931e97c041c24edf163eca
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-11 18:44:57 +00:00
Gabriel de Dietrich
8ac9addd94 QCocoaWindow: Toggle titlebar transparency to support unified toolbar
This is need from macOS 10.13 onwards. See NSWindow related notes on

https://developer.apple.com/library/content/releasenotes/AppKit/RN-AppKit/

Change-Id: I4b4653d7342de985d22b128d73940e7163bdb1e8
Task-number: QTBUG-63444
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-11 17:06:41 +00:00
Timur Pocheptsov
5e71f40a34 A minor cleanup - fix a comment
... so that it comments the actual code, not what this code was before.

Change-Id: Ib191b9d7bd3ae3cda39a15f0f711cb1dd3c5c2b7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-11 15:50:26 +00:00
Edward Welbourne
ffd822b968 Force QT_LOGGING_RULES in testlib's selftest
On some systems (e.g. Debian/buster) a standard Qt package may install
a qtlogging.ini file, e.g. in /etc/xdg/QtProject/, which suppresses
QDEBUG output.  A ~/.config/QtProject/qtlogging.ini could interfere
similarly.  This can break the selftest, when run with expected_*
files generated without such interference.  Likewise, if those
expected_* files are generated on a system such similar, they won't
work on CI.  Given that this caused confusion and delay with
integrating the latest set of updates to the expected_* files, it
seemed best to save others from similar bafflement.

So set a standard value for QT_LOGGING_RULES in both the selftest and
the generator script, so we get consistency.

Change-Id: I649e2f1f6ead21edf8af051aaee286e369fed064
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-11 13:31:43 +00:00
Edward Welbourne
98ef376fb6 generate_expected_output.py: update generated expected_* files
In selftests.qrc, imposed alphabetic order (on stem of name, then on
suffix, effectively treating . as sorting before any letter) while
removing old tests and adding new tests and data.  Updated all non-csv
files and added many missing files.  (Not clear on csv support status;
the script seems to have dropped it after 5.6, but the test still uses
it.)

Left expected_crashes* alone (no new files added, no update to old) as
I don't get results resembling those anticipated.

Omitted printdatatagswithglobaltags, printdatatags due to dangling
hspace on output lines, which upset sanity-bot.  A change to the test
cpp is needed to make it viable to skip that dangling hspace.

Change-Id: Iab3fb626c44a91c249b2fb626c12c75ea0317098
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-11 09:59:44 +00:00
Tony Sarajärvi
e03b64c5b1 Extend blacklisting of tst_qwidget tests to cover RHEL 7.3 & 7.4
The autotest has been blacklisted for RHEL 7.1 and RHEL 7.2 earlier already
and it is still failing in 7.4.

Task-number: QTBUG-46116
Change-Id: I0f33be849513a2debaf8c093dcd413fa09b5c681
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2017-10-11 09:35:05 +00:00
Andy Shaw
e6fe342abb Fix CVE-2017-10989 in sqlite
Change-Id: I556a453f386e887abee77a4dc147eae45970a61c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-10-11 06:22:59 +00:00
Friedemann Kleint
b2fc458620 qopenglcontext_p.h: Fix Clang warning about include resolution
kernel/qopenglcontext_p.h included opengl/qopengl.h as "qopengl.h",
triggering:

In file included from ..\..\include\QtGui\5.11.0\QtGui\private/qopenglcontext_p.h:1:
..\..\include\QtGui\5.11.0\QtGui/private/../../../../../src/gui/kernel/qopenglcontext_p.h(58,10):  warning: #include resolved using non-portable Microsoft search rules as: ..\..\include\QtGui/../../src/gui/opengl/qopengl.h [-Wmicrosoft-include]

Task-number: QTBUG-63512
Change-Id: I867a8f2ceeb8a9369dfe0163c179572feadc033e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-10-11 05:33:51 +00:00
Samuel Gaist
e5fa5bffd0 Doc: move QKeyValueIterator documentation to the right file
The documentation of QKeyValueIterator was in the wrong place. This
patch moves it with the other iterators documentation.

Change-Id: I42ad529f72f9b19fdecfca7ddfeb6e6f4dcfebac
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-10-11 05:24:49 +00:00
Samuel Gaist
6f35d7ea4e Doc: fix indexOf QRegularExpression overload documentation
That overload documentation was missing the "exact" qualifier regarding
the search result.

Change-Id: I27a08b60f9b88ae497f8bd9d9ba6a99f4a9ab4d6
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-10-11 05:24:43 +00:00
Masashi Fujimoto
aebc9023bb macOS: Fix standardLocations() returns invalid path
The file path included in the return value was
incorrect when giving the following value to the argument of
"QStandardPaths::standardLocations()".

- QStandardPaths::AppDataLocation
- QStandardPaths::AppLocalDataLocation
- QStandardPaths::DataLocation

The function to obtain the path to <AppName>.app changed from
CFURLCopyPath() to CFURLCopyFileSystemPath() by commit id
c0da37a806.
CFURLCopyPath() returns a value with a path delimiter appended at the
end, but CFURLCopyFileSystemPath() is not.
This is a commit to append '/' to the end of the return value of
CFURLCopyFileSystemPath().

Task-number: QTBUG-61159
Change-Id: Icaebdf09d9cdf992d59c16a398dfe666e6225f99
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-11 04:51:17 +00:00
Gatis Paeglis
2764d82dc4 tablet: use enhanced mouse event when synthesizing mouse
All the required data is just there, few lines above. Instead of
throwing it away and then deducing again in mouse event handler,
use the enhanced mouse constructor.

Tablet event handler was the last remaining user of the obsolete
mouse event constructor. This patch removes the now unused construtor.

Change-Id: I0df7f1b82f0e768f651aa7fbe2d4efce93e992fa
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2017-10-10 22:09:29 +00:00
Gatis Paeglis
72dfe1deb3 touch: use enhanced mouse event when synthesizing mouse
The documentation for AA_SynthesizeMouseForUnhandledTouchEvents states:

"All touch events that are not accepted by the application will be
translated to left button mouse events instead."

This is exactly what this patch does. With the enhanced mouse event,
we can simply pass event details as necessary. This should not conflict
with the code doing its own mouse synthesis (as long as custom event
handler accepts QEvent::Touch{Begin,Update,End}).

What was wrong with the previous implementation:

It was sharing the same state variable (mouse_buttons) to deduce button
state/type on physical mouse and emulated mouse. This was wrong, you
can't track state of two input devices by sharing one variable. Moreover,
this variable is intended for tracking state of a hardware mouse only.

Button state on physical mouse (as a separate pointer device) is
irrelevant for touch input (which is another "pointer device"). The
current API does not support multiple pointer devices, thus button state
on one pointer device should not affect state on other pointer device.

Task-number: QTBUG-57465
Task-number: QTBUG-52102
Change-Id: Id45d815508918b4e52319baddb2c9564d52ad783
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2017-10-10 22:09:22 +00:00
Gatis Paeglis
a37785ec76 qpa: enhance mouse event with type and button data
... and deprecate QWSI APIs that accepts mouse event without mouse button/
type data.

In the early days of Qt5 it was decided to centralize mouse button/type
handling in QGuiApplication (because of limitation of some now unknown
platform). This has proven to be problematic as mouse handling details
differ across platforms (e.g on X11 we do not receive mouse release event
when closing popup windows or ordinary windows that are closed from the
mouse press event). Instead of hacking around platform specific behaviors
in Qt Gui, we should move this task back to platform plugins (similar to
how this was done in Qt4 with native APIs sending mouse details directly
to QApplication). There are even cases where it simply is not possible
to deduce (from QGuiApplication) which button caused the event (e.g. when
more than one button is involved and some event goes missing). Besisdes,
throwing away information which is already available at QPA level (for free)
and trying to deduce it again at Qt Gui level seems impractical, fagile
(as probably noticed by people fixing all the unexpected issues) and adds
unnecessary complexity.

Note:

Removing the deprecated QWSI APIs from offscreen plugin depends on fixing
autotests that rely on QOffscreenCursor::setPos() logic.

For the convenience of testing use QT_QPA_DISABLE_ENHANCED_MOUSE to restore
to the old code path where QGuiApplication does the mouse state deducing.

Other platforms have similar issues. I do not have all supported platform
available on my desk, so other platform maintainers will need to take care
of porting those platforms to the new APIs. And mainly, I don't want to deal
with all the hacks that other platforms have added to workaround this broken
mouse logic.

In Qt6 we need to remove deprecated code path from QGuiApplication.

This patch:

- Extends QWindowSystemInterfacePrivate::MouseEvent ctor with QEvent::Type
and Qt::MouseButton. We use this extra data when processing mouse events in
QGuiApplication. This actually is similar to KeyEvent, where we do pass the
type (press or release) to QtGui.

- Refactors QGuiApplicationPrivate::processMouseEvent and qtestlib to use
the new APIs.

Task-number: QTBUG-59277
Task-number: QTBUG-62329
Task-number: QTBUG-63467
Change-Id: If94fd46a7cccfea8264dcb1368804c73334558b8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2017-10-10 22:09:07 +00:00
Friedemann Kleint
46eb7d6b70 Windows Vista Style: Draw dock widget title with Qt::TextShowMnemonic
Align with the other styles.

Task-number: QTBUG-54485
Change-Id: Ic8d008c59f5acf858b8ba6fbea5dd30b8aa9634c
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-10-10 18:24:40 +00:00
Friedemann Kleint
65d9d89573 clang-cl: Fix warning about #include resolution
In file included from ..\..\..\mkspecs\win32-clang-msvc\qplatformdefs.h:40:
..\..\..\mkspecs\win32-clang-msvc/../win32-msvc/qplatformdefs.h(51,10):  warning: #include resolved using non-portable Microsoft search rules as: ..\..\corelib\global/qglobal.h [-Wmicrosoft-include]
 #include "qglobal.h"

Task-number: QTBUG-63512
Change-Id: Id60b599126049f2bb07db22e721ff5b761a9b1fd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-10-10 18:24:14 +00:00
Allan Sandfeld Jensen
7f6f1d7e30 Revert "Do not include qfloat16 tables in arm64 builds"
They are needed for older compilers that doesn't support
 the __fp16 extension. Reverts under the assumptions other
 compilers will optimize it away.

This reverts commit 6dc7e468df.

Task-number: QTBUG-63693
Change-Id: If780de001d8c12df0db12caaf62505f16e01b663
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-10 16:05:27 +00:00
Thorbjørn Lund Martsum
f1033567aa QDockWidget - improve resize
On high DPI (e.g Apple Retina) user resizes of
QDockWidgets (with custom titlebars) could fail.
There was a cursor position check in mouse
move event bailing out if the cursor pos was not within
the widget.

The problem was that we could be on the edge
(or maybe even cross it?). Furthermore there is (/was)
no similar check when setting the cursor
to be a resize cursor, so users will obviously expect
the resize to occur.

This solves a part of QTBUG-63526

[ChangeLog][QtWidgets][QDockWidget] Fixed an issue
in QDockWidgets where the widget would not resize
despite showing a resize cursor.

Task-number: QTBUG-63526
Change-Id: Ifa842a109071552506da3a82822d903dc252c8cd
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-10-10 14:43:34 +00:00
Andy Shaw
0900cf3581 OCI: Use TIMESTAMP for datetime data
The TIMESTAMP type has been available in Oracle since Oracle 9i
which was released in June 2001 and contains more data than the
DATE type so it can be reliably used for the related data types.

This adds support for preserving milliseconds and the time zone
information if this is passed or in the database.

[ChangeLog][QtSql][OCI] Added support for the TIMESTAMP data type.

Task-number: QTBUG-23
Change-Id: Icf7a012dda75fb342ce6c6aa34eaa2a52755ff2d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-10 08:56:32 +00:00
Tony Sarajärvi
9909ff108e Fix blacklisting of tst_QOpenGL in Windows
Commit ba1b73175b tried
blacklisting this autotest in Windows 7 only. This however
does not work. We can't pin point blacklisting to a specific
Windows version.

Task-number: QTBUG-63122
Change-Id: I5edb5b56fd86ad194214818a838db9cfd6be2ad1
Reviewed-by: Simo Fält <simo.falt@qt.io>
2017-10-10 07:42:33 +00:00
Tony Sarajärvi
e28fd642a9 Extend blacklisting of tst_gestures in RHEL
This autotest has been blacklisted already in RHEL 7.1
and RHEL 7.2. This one extends it to 7.3 and 7.4.

Task-number: QTBUG-52523
Change-Id: I3e2d8cd882d9f7dc58a65bde88e3aa16438b13c3
Reviewed-by: Simo Fält <simo.falt@qt.io>
2017-10-10 07:42:24 +00:00
Mårten Nordheim
a402b3a02e Add support for HTTP status 308 Permanent Redirect
308 Permanent Redirect was introduced after redirection support was
initially added to Qt.

[ChangeLog][QtNetwork][QNetworkAccessManager] Added support for HTTP status 308.

Task-number: QTBUG-63075
Change-Id: I1c6cda331d776237113ef8854de9abfe7e41ed3e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-10 07:06:24 +00:00
Florian Bruhin
d20aa0d50d Fix typo in QKeyEvent docs
Change-Id: I926fc94ae039f03c507149a6d3fc66f4584201e2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-10 06:31:27 +00:00
Gatis Paeglis
bbcc2a92d0 xcb: tidy up QXcbWindow::handleClientMessageEvent
- Store "event->data.data32[0]" in a variable with a meaningful name.
  This improves code readility.

- Use categorized logging.

- Wrap lines where it makes sense (Qt Coding Style discorages more than
  100 chars per line).

Change-Id: I163abab8380b459fd349227f22dc417a444aefa7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-10 05:33:23 +00:00
Friedemann Kleint
a24597d93d Windows font database: Remove clamping of default font size
Partially revert a72513cab7.
The value is too small for Chinese fonts.

Task-number: QTBUG-63654
Change-Id: If020bfc3044258b7abfd9d463bc9b292a9cc0839
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2017-10-09 21:02:22 +00:00
Laurent Montel
89e5492877 PrintSupport: Layout constructor already uses "this"
Not necessary to call setLayout here.

Change-Id: I761215b46ab4f778786e92338906b5ec7515c53d
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:55:14 +00:00
Laurent Montel
bd98a52256 PrintSupport: replace 0 with nullptr
Change-Id: Ic5e0000e384989239965f269474d17fa29669db1
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:50:26 +00:00
Laurent Montel
b4b36c9b50 Printsupport: Fix compilation on gcc with -Wpedantic
Change-Id: Ic17079e14e90801ed40fddb12d5c1af1b1fa14be
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:21:39 +00:00
Thiago Macieira
4a44bd6cdc Stop including net/if.h from qplatformdefs.h
I need to include linxx/if.h from elsewhere and these two files conflict
by defining the same types (struct ifreq, struct ifmap, struct ifconf,
etc.)

Change-Id: I0a103569c81b4711a649fffd14eb2f6dbbef83b6
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-08 06:41:24 +00:00
Thiago Macieira
f27e029ef2 Autotest: use _exit() instead of exit() to simulate an unclean exit
We're not going to crash to avoid core dumps getting recorded by
systemd, filling up filesystems or showing dialog boxes. We just need to
exit without running destructors. Now, exit() isn't supposed to run
function-scope destructors, so just in case we use _exit().

Change-Id: I0b48fc8e90304e0dacc3fffd14e909ff248ce1a1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-10-08 06:41:05 +00:00
Krzysztof Kawa
6dea9bfa10 Documentation: Add missing event type for non-client mouse events
Documentation is missing the specialized event type names in the
non-client mouse event enum description.

Task-number: QTBUG-55018
Change-Id: Ica35994e13fc9a637a52eeca361898f8669fdbd1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-10-07 19:52:06 +00:00
Thiago Macieira
10f2b5aa66 QUdpSocket: make sure receiveDatagram() returns empty on error
If the datagram reception failed, we forgot to set the buffer back to
empty. The returned QNetworkDatagram did report isValid() == false, but
it was possible to get the .data() and check its size, getting nonsense.

Tests in the next commit.

Change-Id: I638cf58bfa7b4e5fb386fffd14ea91adf2133d47
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-07 19:29:16 +00:00
Alex Trotsenko
ca49f133f0 QSslSocket: implement skip() overload
As QAbstractSocket does not handle most cases for this socket type, we
should override skip() in QSslSocketPrivate implementation.

In unencrypted mode, QSslSocket should forward skipping to the plain
socket. If a connection is secure, we just need to check the connection
state.

Change-Id: I56602c6427b8617e8a9f453809a30fb2914ad798
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-10-07 17:22:24 +00:00
Jake Petroules
e470348d87 Fix deprecated API usage
Amends c1cece8e54

For some reason, this was missed in the original change. This is now
outright prohibited in the watchOS 4 SDK and will cause a compilation
error on that platform.

Change-Id: Iaa2edf6256a54ca11dec9f1efd8a4d18ba7dc046
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-10-07 16:52:10 +00:00
Allan Sandfeld Jensen
f0096a2bd3 Enable patent-free LCD rendering with FreeType 2.8.1
Use the FreeType LCD rendering path with 2.8.1 even when it has lcd-
filtering disabled. This gives us proper subpixel rendering even with
a freetype build with the patented lcd-filtering code disabled.

The code is also simplified by removing the long pointless
ifdefs for 10+ year old versions of freetype.

Change-Id: I487e465317cb984b6e33c7bcc497f27cf29f9bcd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-10-07 11:20:10 +00:00
Allan Sandfeld Jensen
06089a19e5 xcb: Unify visual to QImage::Format logic
Make a common function to replace the two existing ones that convert
from XCB visuals to QImage format.

Change-Id: I2ae08ef4df96df950910a45e71c9d9cd98375b2e
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-10-07 09:04:38 +00:00
Liang Qi
906ce1c52b Merge remote-tracking branch 'origin/5.9.2' into 5.9
Change-Id: Iaae1d9efe6b9267e8e8349905811525ff344e00c
2017-10-06 19:27:40 +02:00
Oswald Buddenhagen
7724e4f378 Bump version
Change-Id: Iee20a3f956409e4859a5490ad320162f46fac10b
2017-10-06 18:00:03 +02:00
Allan Sandfeld Jensen
c071413ecc Fix zero-length lines with scaling
We should calculate the pen width based on the scaling similar to how
it is done for normal lines, otherwise we get the scaling applied
twice.

Task-number: QTBUG-61777
Change-Id: Iba71d55971a1d29537d2c9ff33749223a06160de
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-10-06 12:05:31 +00:00
Mika Salmela
0366f68b6d Prevent changing the width for layout item's rect
For gridlayout items the x position is rounded, but the QRectF changes
the width to keep the right edge. The width is yet calculated exactly
for the text so we need to preserve it.

Task-number: QTBUG-61244
Change-Id: I823ba742c9ab299740232b5d9b4ad5713e1782c4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-10-06 10:56:36 +00:00
Jake Petroules
467cede61e Fix build with -no-opengl and on watchOS in general
This fixes a regression introduced in 8e70241dcc.

Task-number: QTBUG-63631
Change-Id: I5a2c23e06b790a482e1542ac2db3dcf25927caf2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-10-06 10:50:02 +00:00
David Faure
23d0c77ce8 QTestLib: flush DeferredDelete events between every test
This makes qtestlib behave more like real Qt applications with an
event loop, where exiting the application does indeed flush deleteLaters.
And since every test method is supposed to be independent from other
test methods, we should even cleanup between tests.

For "app less" tests, no flushing happens.

Real life use cases:

* A unittest for some code (e.g. KIO job) which uses a socket, runs an
event loop until the socket communication is done, and ends. However
slotDisconnected() does, as recommended, socket->deleteLater(). So the
test finishes before the socket has a chance to actually get deleted,
and memory leak tools flag a memory leak, which doesn't actually happen
outside the unittest.

* Deleting a QWebEngineView with deleteLater is even worse than a memleak,
it leads to an assert (from a global object destructor) in QtWebEngine
if the view deletion hasn't actually been processed.

Change-Id: I18fc822fd26988a0fa4e75313c1947fcaa7d9e56
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-10-06 10:43:03 +00:00
Eirik Aavitsland
248beda08f XCB platform: Fix crash on X servers with BGR888 display
If the native visual was BGR888, the XCB plugin would assert as soon as
it needed to find the corresponding QImage format. Fix by adding the
required mapping in qt_xcb_imageFormatForVisual().

Task-number: QTBUG-62840
Change-Id: Idd9eb01a60f605ad004d5b0c3025ded63ed64271
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-10-06 08:37:16 +00:00
Mårten Nordheim
7f7d939380 Windows: Let topmost and bottom windows use raise and lower respectively
329a029c36 made ::raise and ::lower do nothing
for topmost and bottommost windows. This made it impossible to
e.g. raise one topmost window above another topmost window using
QWindow::raise.

Task-number: QTBUG-62021
Change-Id: I5f60816cbc48d69c0411e3bd68852d8bd8e300bb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-10-06 07:29:06 +00:00
Lars Schmertmann
6486a4bd19 Avoid using deprecated APIs on iOS 10.0+
Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-06 06:15:30 +00:00
Giuseppe D'Angelo
cb08b40976 Move detection of <future> to a configure test
<future> is needed by QThread::create. Instead of a fragile series
of preprocessor tests, move its detection to a configure test.
This dramatically simplifies the code, but on the other hand ties
the availability of QThread::create() to the system used to compile
Qt (rather the one used to compile an application).

Change-Id: If1b06363379bf29126cfa68f2a0651cbb78a67f7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-06 05:51:54 +00:00
Thiago Macieira
f62768d046 QUrl: re-fix the setPath("//path") case leading to scheme://path
Commits aba336c2b4 (in Qt 5.2) and
aba336c2b4 (in 5.6) both tried to deal
with this problem, with different levels of success. This is the third
attempt (and hopefully the charm).

Instead of modifying the path that the user provides, go straight ahead
and declare it invalid. This is supported by RFC 3986, which declares
this expansion impossible:

   relative-part = "//" authority path-abempty
                 / path-absolute
                 / path-noscheme
                 / path-empty
   path-abempty  = *( "/" segment )
   path-absolute = "/" [ segment-nz *( "/" segment ) ]
   path-noscheme = segment-nz-nc *( "/" segment )

The "path-abempty" and "path-noscheme" cases are the two issues we
already handle. This commit adds the third one: path-absolute, which
requires that the first segment of the path be of non-zero length.

That is, it is now possible again to have http://example.com//path
constructed piece-wise, without it producing http://example.com/path.
Additionally, it catches the case of http://example.com//path parsed
from full URL then followed by setAuthority("").

Change-Id: I69f37f9304f24709a823fffd14e67a5e7212ddcd
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-06 03:49:40 +00:00