Commit Graph

33370 Commits

Author SHA1 Message Date
Hannah von Reth
32e0da4501 Add "<APPDIR>/data/<APPNAME>" to the non Generic paths on Windows
<APPDIR> was initially thought to be app-specific but is in fact
more used as a kind of vendor prefix, where one vendor (e.g. KDE)
can install many applications into the same APPDIR.

[ChangeLog][QtCore][QStandardPaths] On Windows, QStandardPaths
now also looks into "<APPDIR>/data/<APPNAME>" for non-generic paths.

Change-Id: I426d97d61cc229bad0f5a2a4eb061e349de6681e
Reviewed-by: David Faure <david.faure@kdab.com>
2017-07-20 09:00:11 +00:00
Friedemann Kleint
2b44fb5c62 key-value iterator: Remove constexpr from equality operators
Fixes the build with MSVC2017.
Amends ae292be869.

Task-number: QTBUG-62052
Change-Id: Ibb55e4e93815da8077961e68525e3cb8dc6807b0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-07-20 09:00:06 +00:00
Edward Welbourne
7c0b706488 Fix QMacTimeZonePrivate::previousTransition() for early after epoch
The native APIs don't support previous transition, only next after a
stipulated date.  The prior code started its search at the epoch; if
used for a time before the first transition after the epoch, this
found no transitions so returned invalid data, when the last
transition before the epoch would have been suitable.  It also wound
through all transitions since the epoch, on its way to the selected
time, which was potentially laborious.

Instead, start a year before the stipulated time; this should get a
transition if the zone uses DST.  If it doesn't, start with the first
known transition and binary-chop our way to one within a year of the
last before the stipulated time; then wind forward one transition at a
time, as before.  The chopping is actually faster than binary: each
time we find a transition after the interval mid-point but early
enough, we move the early end of our interval to the transition, which
is later than the old interval's middle.  Using halving, starting with
a vast interval, should thus only incur modest cost, while ensuring we
give up early when no transition data is available at all or the
zone's first transition ever was after the stipulated time.

Change-Id: I96c14540fc2600837e6a22e480fb8dc36cb37220
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-20 08:49:22 +00:00
Oliver Wolff
5018284e6e winrt: Enable SOCKS5 support
[ChangeLog][QtNetwork][QNetworkProxy] UWP now supports proxies using
SOCKS5.

Task-number: QTBUG-45495
Change-Id: I78cb7416b6c827eb41485f3f7682f85ff75fcbd0
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-07-20 05:45:30 +00:00
Thiago Macieira
42d2464d8f Stop setting FD_CLOEXEC on systems where O_CLOEXEC is honored
In commit 85ff351266, we removed support
for systems where the pipe2(), dup3(), and accept4() functions are
declared in the libc headers but fail at runtime. On Linux, O_CLOEXEC
was added before accept4(), so if the latter is supported, the former is
too. On the BSDs, the libc headers are updated in lockstep with the
kernel, so we know for sure.

There are still systems that have O_CLOEXEC (a POSIX.1-2008 flag) but
not the extra functions (Solaris and Darwin). Solaris libc must update
like the BSDs, but on Darwin we do build with a new SDK targeting an
old OS. Fortunately, O_CLOEXEC has been supported since 10.7, so we're
out of the woods.

Change-Id: I84e45059a888497fb55ffffd14d249dd4719e2cc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-07-20 01:17:35 +00:00
Thiago Macieira
cb9b42b493 QFileSystemEngine: a file only exists if its link count is not 0
QFileSystemMetaData::fillFromStatBuf is used when filling in the results
from both stat() as well as fstat(). Obviously the file exists if it was
stat()ed but not necessarily so by fstat(): we could be operating on a
file descriptor referring to an unlinked file or an O_TMPFILE.

Change-Id: I8d96dea9955d4c749b99fffd14cd52a8c8dd9ca1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-07-20 01:17:28 +00:00
Tor Arne Vestbø
a639a4cc07 tst_QWindow: Wait for platform to ack window states before continuing
Fixes flakiness where we enter and exit window states too fast on macOS,
while also removing 2 second waits in the positioning tests that were
slowing things down needlessly.

Change-Id: Ia4ee4d4812474c520fdd3f76b047f4eabe1a8220
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-19 23:06:21 +00:00
Tor Arne Vestbø
a63494ae12 macOS: Blacklist tst_MacNativeEvents::testKeyPressOnToplevel and friends
They fail when enabling synchronous expose events. Disabled for now
until we can look into why, but it's assumed to be an issue with the
test harness/how we hook into Quartz to send/observe events.

Task-number: QTBUG-62042
Change-Id: I723d049ec5d1029edb0ad3b1f47fffc829a8924b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-19 23:03:50 +00:00
Friedemann Kleint
f54327c3c3 Regular Expression Example: Add context menu
Add context menu providing:
"Escape Selection" Apply QRegularExpression::escape() to selection
"Paste from Code" Paste from C++
"Copy to Code" (for completeness)

Task-number: QTBUG-60635
Change-Id: Iee15c2243c7d0435b623dde4a1b26249aecd0553
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-07-19 20:58:19 +00:00
Sergio Martins
29f6b50732 Windows: Don't raise inactive windows when showing a tooltip
The Qt4 Q_WS_WIN ifdef never got ported.

Change-Id: Iad1ca1a3e20bd5254895781eee09897520b7d7d1
Task-Id: QTBUG-39147
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-19 14:21:52 +00:00
Marc Mutz
94cf203f36 Use QSharedPointer::create() more
This is the result of running the (experimental) clang-tidy check
   qt-modernize-qsharedpointer-create

Discarded changes:

- tst_qsharedpointer.cpp: not sure we want these replacements there
  (→ separate change)
- tst_collations.cpp: hit in a template specialization that is
  instantiated with both QSharedPointer and QSharedDataPointer.

Change-Id: I203c2646e91d026735d923473af3d151d19e3820
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-19 13:40:42 +00:00
Kai Koehne
ad68bf51e7 Add executable name to description of Qt tools (Windows)
Change f046ed395a set the default values of VERSION and
QMAKE_TARGET_DESCRIPTION for Qt tools to generic ones. The version and
description is shown in the properties of the executable, but also
used for crash reports. For the latter it wasn't clear anymore which
tool actually crashed.

The patch therefore adds the executable name to the generic description.
Tools can still overwrite the description on their own.

Task-number: QTBUG-61970
Change-Id: I8366db22f88f0d6575e7f482f030b3c4f05af6c5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-07-19 13:38:01 +00:00
Gatis Paeglis
e71f7d7736 xcb: fix freeze when (un)plugging input devices
.. in an application that has many native windows.

We don't need to select XI_HierarchyChangedMask and XI_DeviceChangedMask
for every window. It is enough to register one window for these events to
update state of our X11 client (application).

Furthermore, XIAllDevices and XIAllMasterDevices always apply, even if the
device has been added after the client has selected for events. So there is
no need to call XISelectEvents on XIAllDevices/XIAllMasterDevices again, if
we are not updating event masks.

With this patch and the test application from QTBUG-57013, removing/attaching
a device takes few hundred milliseconds instead of 23-24 seconds.

Task-number: QTBUG-57013
Change-Id: Ieb0b5ee25feef2922f901165825cb4a1289fc852
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-19 12:48:55 +00:00
Morten Johan Sørvig
4585889467 Fix race condition in the processEvents test
This test verifies processEvents(WaitForMoreEvents)
behavior by first processing all pending events (in
a loop) and then verifying that a following processEvents
call actually waits.

But there is no guarantee that the OS won’t introduce
more events after the first loop has completed. This
does indeed seem to happen on recent versions of macOS.

Change the test to not require that the processEvents
call blocked and de-blacklist.

Task-number: QTBUG-61131
Change-Id: Ic8fa74a6085165442791264f6f137a2fa6083138
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-19 12:29:53 +00:00
Friedemann Kleint
0e9ea94511 QPMCache::remove(): Do not dereference erased iterator
Fixes a crash in tst_QGL::textureCleanup() (developer build).
Amends 467b15a20c.

Change-Id: I7026b3c2a27c02a80b995fde67a832dc2d19031d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-19 10:47:55 +00:00
Friedemann Kleint
13bceecc6b Windows QPA: Fix local position reported for enter events
Use QPlatformWindow::mapFromGlobal() instead of QWindow:::mapFromGlobal()
as QPA operates in device pixels.

Task-number: QTBUG-62028
Change-Id: I64ec4f4c9a536e122676d738db58805b98a45c82
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-07-19 10:45:12 +00:00
Daniel Teske
e7471da4d6 Windows Printer: Handle no default printer case
GetDefaultPrinter can return ERROR_FILE_NOT_FOUND. In that case just
return a empty string.

Task-number: QTBUG-53290
Change-Id: Ib0e28b3425d100bc185d1d8827dc6b7fd90cbbeb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-19 10:32:38 +00:00
Oliver Wolff
06b5e4d706 qmake: Remove last remains of WinCE support
Change-Id: Ifc2ecee8464710efd02a38b3a9794104f15a0f04
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-07-19 10:20:43 +00:00
Oliver Wolff
429d726322 winrt: qmake: Fix deployment rules of created solution files
If these rules are not added to the solution, Visual Studio will
complain, that the project has to be deployed before it can be run.

Change-Id: I6d3fbc949c85b11a92f78e13e2f6a1b92a5cfdc7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-07-19 10:20:38 +00:00
Tor Arne Vestbø
5138fada0b Fix QHighDpi::fromNativeLocalExposedRegion rounding errors
Calling bottom/right/bottomRight on a QRect is discouraged, as it does
not give the true bottom-right corner of the rectangle, instead giving
a point one unit to the left and top of the true bottom right.

Dividing this point by a scale factor of e.g. 2, and then using qCeil
on the bottom right x and y coordinates would result in a pointRegion
that was 1x1 * scaleFactor larger than it should, manifesting as
rendering issues at later stages.

We can get away from the whole problem by initially converting the
QRect to a QRectF, and basing the pointRegion's rect on the scaled
size instead of bottom-right coordinates.

Change-Id: I4d4895660655cfa8749c93c7d2573ae79cd7898b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-19 09:53:00 +00:00
Gatis Paeglis
f2c0fead18 widgets: remove redundant check in QMenu::popup
if (A)
 doA()
else if (B)
 doB()
if (B)
 doB()

is equal to:

if (A)
 doA()
if (B)
 doB()

when doB() is a self-contained basic operation like
QRect::setY(int ay) with { y1 = ay; } as body.

Change-Id: I3421493fe47459bd9b3d4cb5f4cfdd30ce566003
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-07-19 08:17:35 +00:00
Simon Hausmann
407302fb1b Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/corelib/io/qwindowspipewriter.cpp
	src/widgets/styles/qcommonstyle.cpp

Change-Id: I0d33efdc4dc256e234abc490a18ccda72cd1d9e6
2017-07-19 09:47:29 +02:00
Friedemann Kleint
a9dfdbd06a tst_QStyle::drawItemPixmap(): Check on the image color
Verify that all pixels of the grabbed image are green instead
of comparing an image loaded from file.
The test then also passes when High DPI scaling is active in
which case a twice as big pixmap with DPR=2 is obtained when
grabbing the widget.

Change-Id: Ie5244a39a68ea0defd2590cf30f251d660d0869b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-07-19 07:33:38 +00:00
Friedemann Kleint
ea4fae0df6 Windows QPA: Do not call enableNonClientDpiScaling() for embedded windows
Do not call if the property indicating embedded windows is set.

Task-number: QTBUG-61972
Change-Id: I8f34dd8a59f1e5c9c8064646bcb15acea115cd68
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-07-19 07:33:25 +00:00
Friedemann Kleint
1b190e7ea6 tst_QWidget: Fix to pass with High DPI scaling enabled
Scale coordinates in a few places, remove pixmap scaling in
grabWindow() (Windows).

Change-Id: Iba9e5d3ca55422a14eda09c8d04329a455d3acb3
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-07-19 07:32:55 +00:00
Friedemann Kleint
216da37cc5 Windows QPA: Compare against correct geometry when checking for fullscreen
Do not scale the QPlatformScreen's geometry.
Fixes tst_QWidget::showFullScreen() when run with a scale factor.

Change-Id: I4a2e743303ff70b01fd3d2086281a790737d2c1d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-07-19 06:18:19 +00:00
Martin Smith
0f30dcaea8 doc: Make qdoc comment a regular comment
This just removes a '!' from a comment that should not be
a qdoc comment.

Change-Id: I1d90e80656fdcc1c8bd6c177529bd930dcc62932
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-19 00:15:27 +00:00
Tor Arne Vestbø
73274860dd macOS: Improve QCocoaWindow logging a bit
Change-Id: Ic3555445b045edda884983aa01834a4ae243d6fa
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-18 23:40:33 +00:00
Thiago Macieira
ad3b41a06d QFile::rename: use the open file's ID, instead of using the file name
To do that, we needed to add virtual id() in QAbstractFileEngine and
override it in QFSFileEngine. It might be useful to return other types
of IDs for the other file engines, but this commit does not attempt that
just yet.

Change-Id: I1eba2b016de74620bfc8fffd14ccafe0762b3c38
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-18 15:51:35 +00:00
Thiago Macieira
f9bfc8b91c QSystemError: Make it format unknown Windows messages
Can happen if we're using HRESULT from weird facilities.

Change-Id: I3d10feaa2e5854ff3c01b32dbd068309e5131d1b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-18 15:51:30 +00:00
Thiago Macieira
bf410ed529 Convert improper uses of qt_error_string() to QSystemError::stdString()
On Windows, qt_error_string() returns the string corresponding to the
Win32 API, not an errno. Replace those uses for a function that works
for errno values.

Change-Id: I1eba2b016de74620bfc8fffd14ccce6162bafdca
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-07-18 15:51:25 +00:00
Thiago Macieira
f3205a4949 Merge qt_error_string and QSystemError
This removes a lot of duplicated code that existed in both qglobal.cpp
and qsystemerror.cpp, including the hack to get the correct strerror_r
signature.

This removes the incorrect use of EACCES, EMFILE, ENOENT, and ENOSPC
from qt_error_string on Windows. qt_error_string is supposed to be used
only with Win32 error codes from GetLastError(), despite there being a
lot of uses in cross-platform and even Windows-specific code that pass
errno constants.

It may or may not work: that depends on whether the constants happen to
match. ENOENT matches ERROR_FILE_NOT_FOUND and one could argue that
ENOSPC matching ERROR_OUT_OF_PAPER is acceptable, but EMFILE isn't the
same as ERROR_BAD_LENGTH nor is EACCES, ERROR_INVALID_DATA.

Change-Id: I1eba2b016de74620bfc8fffd14cccb7f77f4b510
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-18 15:51:22 +00:00
Thiago Macieira
c0bd7ade1a QFileSystemEngine::id/Windows: Use the volume ID too
The MS documentation says that the high/low parts uniquely identify a
file within a system, but they actually mean the filesystem. The details
on how it's allocated make that clear. So we need the volume identifier.

Change-Id: I658f552684924f8aa2cafffd14cfc03c5a09c0e9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-07-18 15:51:18 +00:00
Friedemann Kleint
deb7f9a7c3 Windows QPA: Implement QPlatformWindow::initialize()
Move the code that sends geometry change events from
QWindowsIntegration::createPlatformWindow() to
QWindowsWindow::initialize(), using the obtained geometry
from the creation context. Drop the check for window flags
since they are not changed.

Complements change 4c855a9f9f

Task-number: QTBUG-61977
Change-Id: I0c23abefc45110cc4bf11e10d65dc7ddbb9d20d5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-18 14:11:37 +00:00
Kai Koehne
3f18dadeeb Doc: QLoggingCategory::setEnabled() should only be called in filter
Change-Id: Ib159c45ca259af125e48e3dfe59d64abc5f81f81
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-18 13:30:22 +00:00
Kai Koehne
54c2bfc9db Doc: Clarify limitations of category filter
As suggested by ogoffart.

Change-Id: I15747869147819799b14dfe0670ff2225f76fc03
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-07-18 13:30:18 +00:00
Kai Koehne
9a69a1b969 Doc: Fix snippet for QUrl::isValid() documentation
qDebug(...) expects a const char *, not a QString.

Change-Id: Ie4489c29440e328a732ed026eae3859eb8855ea5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-18 13:30:14 +00:00
Gatis Paeglis
214fc32981 xcb: fix build failure when XCB_USE_XINPUT22 is not defined
... and group XI22 methods together under one ifdef clause.

The error message was:

qxcbconnection_xi2.cpp:1025:42: error: no ‘bool QXcbConnection::isTouchScreen(int)’ member function declared in class ‘QXcbConnection’
 bool QXcbConnection::isTouchScreen(int id)

XInput 2.2 was released many years ago, this build failure could
in practice happen only on some really old platform.

Change-Id: I3c1741cbdffe15c0f5149c6d76592a743d1d8a91
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-18 13:19:11 +00:00
Gatis Paeglis
900abb116d xcb: allow to change XInput device properties at runtime
xinput list-props <device-id>
xinput set-prop <device-id> <atom-id> n n n

Example:

xinput list-props 9
  ..
  Evdev Scrolling Distance (274): 1, 1, 1
  ..
xinput set-prop 9 274 8 1 1

[ChangeLog][Platform Specific Changes][Linux] XInput device property
changes are now detected at runtime (no application restart required).

Change-Id: I4d2455eef70857bc2e35c27011a3808a78fa960f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-18 13:19:03 +00:00
Timur Pocheptsov
07c0e0fdcf QAsn1Element - fix toDateTime function
ASN UTCTime uses two characters to encode a year (YY). When converting it
into QDate, it's quite naive to just add 2000. According to RFC 2459,
these YY represent dates in the range [1950, 2049].
This patch also introduces a helper function doing the checked conversion
from a string to int (to be reused in the following-up patches).

Task-number: QTBUG-61934
Change-Id: I3f6f471d24e8357b83b2f5973023b2b842751389
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-07-18 13:09:16 +00:00
Tor Arne Vestbø
4a7ec2d9b0 testlib: Allow tailing comments in blacklist files
Task-number: QTBUG-61987
Change-Id: I27219a6d06d7a81514e3f7b2ad5469676f724e04
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-18 13:04:08 +00:00
Allan Sandfeld Jensen
c08dc1e04f Read more KDE configuration in the KDE platform theme
Adds the hints that are read and used by the plasma-integration platform
theme, so naked Qt applications can integrate just as well on this
front.

Change-Id: I45a113e0081ea96c8cf543c22b28b69280ae7619
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2017-07-18 08:11:27 +00:00
Andy Shaw
61f0206620 Revert "Windows: Fallback to d3d9 when in a VM on VMWare Workstation 12"
Revert SHA1 - b1708efeeb as it causes a
problem with QtMultimedia.

Change-Id: I0ba366fa6ddccff3715917f5f455b20c73c2e49e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-07-17 23:50:56 +00:00
Tor Arne Vestbø
f3c39a69bc macOS: Don't assume the proposed fullscreen size matches the screen size
Sometimes AppKit will pass in a proposed size that's smaller than the
geometry of the screen. We don't know why, but shouldn't assert.

Change-Id: I9970c5f587e1e0fb3f2fa932de5a32ac4e1eb76d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-17 18:13:23 +00:00
Tor Arne Vestbø
46001e6f49 Blacklist tst_QWidget::setToolTip on all macOS platforms
It's broken due to tst_QWidget::testDeletionInEventHandlers,
but the root cause is not known yet.

Task-number: QTBUG-61986
Change-Id: I5b77efaf6910123d10a1456c54b873100e538a69
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-17 16:42:33 +00:00
Thiago Macieira
2589111dc0 QNetworkInterface: Remove dynamic finding of Windows Vista functions
We no longer support Windows XP (or Vista, for that matter). We can
directly link to those functions.

Change-Id: Ie9104b1dca6fc2a626399778e68b04e9f8a9d5af
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-07-17 15:45:46 +00:00
Tor Arne Vestbø
64bce9bbff tst_QGL::graphicsViewClipping: Wait for viewport's window handle
The QWidget overload of qWaitForWindowExposed waits for the widget's
top level QWindow, which for the viewport is the graphics-view.

We want to explicitly wait for the viewport to be exposed, as the
viewport is covering the whole graphics-view, preventing it from
being exposed. See a6991376c.

Change-Id: I86df43871126562f09e4ce14931bc6fc7f06263d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-17 14:11:06 +00:00
Tor Arne Vestbø
b2cb4c73d3 Stabilize tst_QWidget::setMaskInResizeEvent on OS X 10.10
Change-Id: I7dbe9c7a91301e0002f9e1827f6d0b495d2b9ec5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-17 13:10:31 +00:00
Tor Arne Vestbø
4c855a9f9f Add QPlatformWindow::initialize() for two-step window creation
The QWindow::create method calls createPlatformWindow, and assigns the
result to d->platformWindow. If the platform sends any sort of events
synchronously during the creation, the event will be delivered to a
QWindow that doesn't have a handle() yet, resulting in noop handling
of the event, or crashes.

To mitigate this situations, platforms should do as little a possible
in the QPlatformWindow constructor, and leave initialization to the
new method, where the QWindow will have a handle().

The macOS platform plugin still has a m_initialized guard, to prevent
sending geometry changes during initialization, as this will result
in a resize event before a show event. This forced behavior seems
dubious, but is left for a followup patch.

Task-number: QTBUG-61977
Change-Id: I04d32d93391e89d068752b719270438e7024ad46
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-07-17 13:05:55 +00:00
Joerg Bornemann
c7ec07d401 Do not wait in QWindowsPipe{Reader|Writer}::stop()
A deadlock can occur if the user does

    QLocalSocket *ls = new QLocalSocket;
    ls->moveToThread(t);
    ...
    delete ls;

Then QLocalSocket calls QWindowsPipeReader::stop() in a different thread
than the I/O operation is running in. The waitForNotified(-1) call would
then wait indefinitely until the I/O thread is in alertable wait state
again. Especially on application shut down this might never be the case,
and the application would deadlock.

Solve this by detaching the Overlapped object from the
QWindowsPipe{Reader|Writer} in stop() and delete it in the callback.

Task-number: QTBUG-61643
Change-Id: Ie262d75c5fd92ac7cf7dfcdbf1519050be9fd3c4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-07-17 11:20:47 +00:00