Commit Graph

6199 Commits (3ec3f2a5da0b0c87eed83cd348540a3040ad27a5)

Author SHA1 Message Date
Thiago Macieira 883dfb3d15 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/widgets/kernel/qwidget.cpp

This merge also extends the expected output of the pairdiagnostics
teamcity output (added in dev in commit
c608ffc56a) after the recent addition of
the flowId attribute to the teamcity output (commit
8f03656211 in 5.9).

Change-Id: I3868166e5efc45538544fffd14d8aba438f9173c
2017-08-08 11:48:10 +02:00
Thiago Macieira 6c3a3d498a Filesystem: Use "birth time" to avoid confusion with Unix ctime
The Unix stat fields "st_ctime" and "st_ctim" mean "change time", the
last time that the file/inode status fields were changed. It does not
mean "creation time". So this commit splits all of the internal API to
"birth" and "metadata change" instead of "creation" to avoid the
conflict.

Change-Id: I149e0540c00745fe8119fffd1463fe78b619649e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-08-05 16:41:38 +00:00
Giuseppe D'Angelo 37af667771 XCB GLX: request OpenGL 4.6 / OpenGL ES 3.2 if possible
Code was lagging a bit behind published standards.

Change-Id: I0fe07c0162a54d9eed8b539887496b9313b37aa4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2017-08-04 18:48:16 +00:00
Laszlo Agocs 51446c3c6f Fix Q(Quick)Window on eglfs
The call to QPlatformWindow::setRect (for storing into d->rect) was
in the wrong place. It has to be the potentially-overridden value.

Amends 3a31c70879

Task-number: QTBUG-57608
Change-Id: Id3c35e2dc178f7bd2f9643e8ae4754c8f2f39240
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-08-03 11:23:41 +00:00
Eirik Aavitsland 8ba373361d Support all QImage formats in native pixmap conversion
The conversion fallback did not catch all the more recently added
QImage formats, leading to corrupt pixmaps or crashes. Also alpha
channels were needlessly thrown away if present.

Change-Id: I38588035aa9bf37b77398489981df65201cf0340
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-08-03 09:43:12 +00:00
Laszlo Agocs 4f515815ef Change EDID parsing qCWarnings to qCDebugs
Avoid polluting the output by default. Unfortunately there are various
systems (modern Fedora with XWayland, VMWare) where parsing will fail
for some not yet known reason. Showing warnings on each and every Qt
application startup is not desirable, especially since not having the
EDID data available is far from being critical.

Change-Id: Ibaca7db4d897e705819f7c359f8de41b9be862a6
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-08-03 09:30:30 +00:00
Gatis Paeglis 5a1f1345aa xcb: don't rely on _NET_WORKAREA for available geometry on multi-head systems
On X11, QScreen::availableGeometry() is broken with multi-head systems,
and there doesn't seem to be a real fix for this due to limitation in
the protocol and therefore support in WMs (more details in the
patch). In Gnome this issue is more visible because on this DE the
 _NET_WORKAREA rectangle represents the intersection of the available
geometries on all monitors. This results in a big area of "dead space"
on the secondary screen, when primary screen is positioned lower in the
virtual space. If menu is opened by clicking in this dead space, the menu
is awfully misplaced (qmenu uses availableGeometry() to calculate the
position of menu).

On Ubuntu with Unity (same is true for KDE Neon+Kwin and LUbuntu+Openbox),
_NET_WORKAREA returns a bounding rectangle containing all monitors.
Which does not cause the menu misplacement as "dead space" is outside
clickable area. But this does not mean that the QScreen::availableGeometry()
reported values are correct. With the same setup as described above,
QScreen::availableGeometry() thinks that we have a tool panel on the
right screen, when in reality it is on the left screen.

AwesomeWM for example does not set _NET_WORKAREA at all, which means
QScreen::availableGeometry() == QScreen::geometry(). I am not aware that it
would cause any issues for popup/menu window positioning in Qt (Qt positions
these windows manually by bypassing WM (via Qt::BypassWindowManagerHint) and
using availableGeometry for calculations. With this patch, we would take the
same code path as if _NET_WORKAREA was not set (where we know that_NET_WORKAREA
is cleary wrong). The solution here is to recognize _NET_WORKAREA as true
available geometry only in specific cases (cases where the meaning is cleary
defined by the specification) and adjust the documentation accordingly.

Not knowing the true available geometry on X11 is mitigated by WMs. Window
manager can position windows as it wants. WMs are smart enough not to place
windows on top of reserved areas at edges (even if user has explicitly requested
this via setGeometry based on inaccurate information from availableGeometry()).

[ChangeLog][Platform Specific Changes][Linux] The _NET_WORKAREA atom is
used for calculating QScreen::availableGeometry() only on systems with one
monitor. In all other cases QScreen::availableGeometry() is equal to
QScreen::geometry(). To restore the legacy behavior with untrustworthy
values in QScreen::availableGeometry() set QT_RELY_ON_NET_WORKAREA_ATOM=1
environment variable.

Task-number: QTBUG-60513
Task-number: QTBUG-29278
Task-number: QTBUG-43768
Task-number: QTBUG-18380
Change-Id: I7e0f62f81d1444991b8a6c007c2527d8f96088c2
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-08-02 23:15:32 +00:00
Frederik Gladhorn 6c2bfbf88e Merge "Merge remote-tracking branch 'origin/5.9' into dev" into refs/staging/dev 2017-08-02 23:15:27 +00:00
Friedemann Kleint 0257ffe465 Windows QPA: Store requested geometry before QPlatformWindow::initialGeometry()
When requesting windows with a size of 0x0 for which a default size
is determined by QPlatformWindow::initialGeometry(),
QWindowsWindow::initialize() did not call handleGeometry() since
it compared against the requested geometry obtained after
calling QPlatformWindow::initialGeometry().
Store the initial geometry in the context.

Amends deb7f9a7c3.

Task-number: QTBUG-62177
Task-number: QTBUG-61977
Change-Id: I9e96f2f0b984b9009bebb192f576c92b4409d5d1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-08-02 21:07:36 +00:00
Oswald Buddenhagen ee07b912a1 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/plugins/platforms/xcb/qxcbconnection.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
	src/plugins/styles/mac/qmacstyle_mac.mm
	src/widgets/widgets/qdockarealayout.cpp
	src/widgets/widgets/qmainwindow.cpp
	src/widgets/widgets/qmainwindowlayout.cpp
	src/widgets/widgets/qmainwindowlayout_p.h
	tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
	tests/auto/other/macnativeevents/BLACKLIST
	tests/auto/widgets/widgets/qmenu/BLACKLIST

Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
2017-08-02 22:52:32 +02:00
Thiago Macieira f54f7d8470 configure: Add a feature to write tests in the .json file
We're adding a lot of unnecessary files that end up later as cargo-cult,
for at most a handful of lines. So instead move the testcases directly
into the .json file.

The following sources were not inlined, because multiple tests share
them, and the inlining infra does not support that (yet):
- avx512
- openssl
- gnu-libiconv/sun-libiconv (there is also a command line option to
  select the exact variant, which makes it hard/impossible to properly
  coalesce the library sources)

The following sources were not inlined because of "complications":
- verifyspec contains a lengthy function in the project file
- stl contains lots of code in the source file
- xlocalescanprint includes a private header from the source tree via a
  relative path, which we can't do, as the test's physical location is
  variable.
- corewlan uses objective c++, which the inline system doesn't support

reduce_relocs and reduce_exports now create libraries with main(), which
is weird enough, but doesn't hurt.

Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Change-Id: Ic3a088f9f08a4fd7ae91fffd14ce8a262021cca0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-08-02 16:37:48 +00:00
Kwangsub Kim 51a43d9d21 eglfs_kms: Use eglCreatePlatformWindowSurface
Call eglCreatePlatformWindowSurface when it's available.

Change-Id: I1a3af6e7dac2e40335c9f9913dd67f9b153a4dff
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-08-01 01:20:34 +00:00
Joni Poikelin 0a5f71c606 Fix storing of QDateTime timespec for Sqlite
Commit 9e64fc9e1c caused a regression
which stored all QDateTime entries as if they were in localtime,
which causes them to be offset by the amount of local timezone
offset. This is fixed by adding "Z" if the time should be in UTC or
using "+/-hh:mm" if it should use fixed UTC offset or specific
timezone.

Task-number: QTBUG-57138
Change-Id: Ie60905dfb3a517db442b636ca41daf8348753d84
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-07-31 17:59:49 +00:00
Allan Sandfeld Jensen 286c53f217 Fix composition on xcb with misconfigured ibus
If ibus has been set, but either isn't installed or doesn't launch, all
composition fails on xcb. This ensures we fallback to "compose" which
is needed for working composition on XCB.

Change-Id: Ic2061c330bcb907759a13920c3eede14f3036563
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-31 10:35:11 +00:00
Friedemann Kleint 7b2debda2b Windows QPA: Fix compilation with MinGW 7.1
MinGW 7.1 claims the qUuidOf<> specializations are unused:

In file included from accessible\qwindowsaccessibility.cpp:59:0:
accessible\iaccessible2.h:274:5: error: 'IID qUuidOf() [with DesiredInterface = IAccessible2]' defined but not used [-Werror=unused-function]
 IID qUuidOf<IAccessible2>() { return IID_IAccessible2; }
     ^~~~~~~~~~~~~~~~~~~~~
In file included from accessible\qwindowsaccessibility.cpp:59:0:
accessible\iaccessible2.h:58:5: error: 'IID qUuidOf() [with DesiredInterface = IAccessibleComponent]' defined but not used [-Werror=unused-function]
 IID qUuidOf<IAccessibleComponent>() { return IID_IAccessibleComponent; }
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Amends 4f599c5ea1.

Change-Id: Iafcfe8b8d8ca9cdf00663f39ad491347b51d3ace
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-07-29 09:52:29 +00:00
Tor Arne Vestbø f25b4d2fe3 macOS: Modernize QCocoaBackingStore::flush()
Instead of forwarding the flush to the view, using CoreGraphics to blit
the backing store to the window, we do everything in flush(), and use
higher level AppKit APIs to do the blit.

This simplifies the flow and code quite a bit, and also supports blitting
of individual regions in a flush instead of the whole bounding rect.

Change-Id: I2173c1a7763fe652a94125c7e3ae93a655412cd3
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-29 05:10:58 +00:00
Oliver Wolff 0fcc7ea02a winrt: Fix platform theme for non-phone devices
When running on a desktop machine (using Windws SDK 10.0.14393) the
palette had fully transparent text colors which were assigned in the
"phone only" part of the theme's initialization. By checking the API
contract we can avoid that part of the initialization and thus return
proper values.

Change-Id: Id770a686c1c7e447a9594830fd7670352116eb21
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-07-27 06:51:45 +00:00
Tor Arne Vestbø 1828caad33 macOS: Send expose event with individual rects instead of bounding rect
Change-Id: I914521e1dfecb0157a8b9e1c9d9a86ca45e0826e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-26 21:07:44 +00:00
Jonathan Liu 50275fbcaf Use correct DRM event context version
Explicitly declare which DRM event context version we want to use,
rather than just the latest one libdrm supports. New versions may change
semantics, or extend the structure, in ways we're unaware of.

Stick with version 2, which is the version that introduced
page_flip_handler.

Change-Id: I1d2066d5ab485ea571f016a8660829f435821c82
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-07-26 12:56:40 +00:00
Tor Arne Vestbø 8719660416 macOS: Send expose event at drawRect and trigger updates via setNeedsDisplay
This changes the drawing model on macOS from the following:

 1. Sending synchronous expose events directly from callbacks such as
    windowDidOrderOnScreen and windowDidChangeOcclusionState
 2. Waiting for a resulting flush of the backing store, and issuing
    setNeedsDisplay as a response
 3. Waiting for the asynchronous drawRect call in response to
    setNeedsDisplay, where the backing store is finally drawn
    to the window

To the following:

 1. Issue setNeedsDisplay as a response to callbacks such as
    windowDidOrderOnScreen and windowDidChangeOcclusionState,
    when needed (in many cases this is automatic by AppKit)
 2. Send synchronous expose events from the resulting drawRect
    callback
 3. Draw the backing store to the window when flushed

The new model matches how normal Cocoa application draw in response to
drawRect, and makes the backing store flush synchronous instead of having
to trigger a async setNeedsDisplay. This gives AppKit more information
about how much time we're spending in drawRect, as the actual drawing
and flushing all happens within the synchronous expose event.

Qt applications that draw outside of drawRect, e.g. in response to timers,
are still supported by manually locking focus of the view and flushing the
window at the end of the backingstore flush.

Task-number: QTBUG-50414
Change-Id: I2efb9ff8df51ab6e840ad20c497b71f53e21e1c2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-25 17:47:08 +00:00
Jesus Fernandez a493170a94 Fix memory leak
CID 10994 (#1 of 1): Resource leak in object (CTOR_DTOR_LEAK)

The font database was not destroyed in the destructor.

Coverity-Id: 10994
Change-Id: Ibd4cb0b65d1e554593295a3654e8d8c946551cc2
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2017-07-25 12:14:39 +00:00
Friedemann Kleint 4f599c5ea1 Enable IAccessible2 for MinGW
MinGW 5.3 is able to compile the IAccessible2 classes. All that is needed
is some way to provide the missing IIDs, which is done via specialization
of a function template (similar to the MinGW's __uuidof operator).

[ChangeLog][Windows][Accessibility] MinGW builds now support IAccessible2.

Change-Id: I218a4b89c81b54aa96f7c743544388631ca9a53e
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-07-25 10:06:43 +00:00
Gatis Paeglis 0cd54e3cec xcb: use default member initialization in struct
... for better localization. This is not possible in C, but in
C++ a struct has the same features as a class. Thus, use default
member initialization feature (available since C++11).

Change-Id: I91522c3a4fe4270c37bb6e85fddeb5970a847352
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-22 12:25:10 +00:00
Jake Petroules 922e410ebb Fix 32-bit build on macOS
Some customers still need this for interoperability with legacy code.
Let's continue to keep it working in 5.9.x, and then move to
64-bit exclusive features (thus dropping 32-bit entirely) in 5.10.

Task-number: QTBUG-58401
Change-Id: Ibb7200c1885e9caba70439df5f7c86c81b1312b5
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-07-20 21:18:22 +00:00
James McDonnell 82f701ed00 Skip EGL surface re-creation when the buffer size is unchanged
Skip EGL surface re-creation when a sequence of unprocessed resizing
requests leaves the buffer size unchanged.  In this situation, the
buffers won't be resized.  Recreating the surface without resizing the
buffers leads to screen providing incorrect information about the
buffers.

Change-Id: I1f75ab99eb1dffe0bcf9660bf014f047407b0c1b
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2017-07-20 20:04:26 +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
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
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 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 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
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
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
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
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ø 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
Gatis Paeglis 1e8a687a3a xcb: fix spelling error in xi2HandleHierarchyEvent()
Change-Id: I17bdd856bb23734f683b066759ab44493a8d60b7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-17 07:23:13 +00:00
Tor Arne Vestbø 8fad51b7bc macOS: Fix exception when drawing scrollbars with zero-range
Terminating app due to uncaught exception 'CALayerInvalidGeometry',
  reason: 'CALayer position contains NaN: [nan nan]'

 0 CoreFoundation   __exceptionPreprocess
 1 libobjc.A.dylib  objc_exception_throw
 2 CoreFoundation   +[NSException raise:format:]
 3 QuartzCore       _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb
 4 QuartzCore       -[CALayer setPosition:]
 5 QuartzCore       -[CALayer setFrame:]
 6 AppKit           -[NSScrollerImp _updateLayerGeometry]
 7 AppKit           -[NSScroller setFloatValue:knobProportion:]
 8 libqmacstyle     setupScroller(NSScroller*, QStyleOptionSlider const*)
 9 libqmacstyle     QMacStyle::drawComplexControl(...)

Change-Id: I5afe7e7d3e94ff1d9ee34f5a9bc0d229d4f7c4c6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-14 20:16:42 +00:00
Stephan Binner 4db3a5f8eb Add missing #include for -no-widgets
Task-number: QTBUG-61780
Change-Id: I62fccc6474965278cb1b258b512fda3b60f995f3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-07-14 18:18:18 +00:00
Gatis Paeglis f8c42ea891 xcb: don't allow isAtLeastXI2{1,2} in builds without Xinput2
.. thus making it purely into a _runtime_ check of XInput 2 version.

If Qt was build with -no-xinput2, it does not make sense to compile
in code that always returns "false". Simply exclude code that is not
relevant for -no-xinput2 builds with XCB_USE_XINPUT2 ifdefs. In
addition, this improves readability of the code.

Now, trying to use ::isAtLeastXI21() in a -no-xinput2 build will
result in the following build error:

error: ‘class QXcbConnection’ has no member named ‘isAtLeastXI21’

Change-Id: If242510d43d71829b327edc1f76322f3a0db0e08
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-14 15:44:34 +00:00
Gatis Paeglis 5dc8c4286e xcb: rely on QRegion::operator| to handle empty regions
There is no need to check for it explicitly.

Change-Id: I66958bf1ff4539ee75fec635c96f056524da8ddb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-07-14 15:01:39 +00:00
Thiago Macieira 97294ed995 Merge "Merge remote-tracking branch 'origin/5.9' into dev" into refs/staging/dev 2017-07-14 00:00:53 +00:00
Gabriel de Dietrich d38fe875c7 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
    src/widgets/widgets/qmainwindowlayout.cpp

Change-Id: I306b4f5ad11bceb336c9091241b468d455fe6bb6
2017-07-13 16:36:10 -07:00
Tor Arne Vestbø 3bac08c00f macOS: Improve QDebug output for QNSView and QCocoaWindow
By printing the corresponding QPlatformWindow and QWindow for a given
QNSView we make it easier to track issues regardless of which of the
views/windows are being logged.

Change-Id: I4a42eff7f87cf3c8e722cd6ad8baccd4eeab8eb3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-13 22:09:18 +00:00
Gatis Paeglis ac4e848c98 xcb: fix logic in QXcbConnection::initializeXInput2()
Things that were broken:

- The return values of XIQueryVersion interpreted wrongly. BadRequest
  means no XI2 support on the server. Nesting more XIQueryVersion
  calls to check for lower minor version of XI2 in this case does not
  make sense. On Success, server's supported X Input version is returned.
  Server's supported version can be lower than the version we have announced
  to support. In this case Qt client will be limited by X server's supported
  version (which is ok, as we do check the available version at runtime via
  QXcbConnection::isAtLeastXI2*).

- The code was _always_ announcing to X server that we support XI 2.2,
  by ignoring what actually is supported in the specific build (see
  XCB_USE_XINPUT ifdefs).

- qCDebug messages and logging categories were wrong too.

Change-Id: Ia84457f125474aa851b7a91ed19fc5b904ac359e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-13 11:31:01 +00:00
Gatis Paeglis f69d30804d xcb: cleanup updating of scrolling device valuators
This includes:

 - Better sharing of common code.
 - Less argument passing.
 - Improved code readability:

   It is somewhat confusing to read when QXcbWindow::handleEnterNotifyEvent
   calls connection()->handleEnterEvent().

 - Better organizing of ifdefs.

Change-Id: I4405390cada13b51db78f9fd30e26bb1793395ff
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-13 11:30:51 +00:00
Gatis Paeglis 7499d4404f xcb: don't keep objects for disconnected touch devices
... as XI2 reuses device ids and we might end up with some bogus
objects in m_touchDevices (the same touch device after reconnecting
might have a new device id).

With this patch, m_touchDevices is handled similarly to tablets
and scolling devices. This patch also removes unnecessary calls
to X (XIQueryDevice). We already have device information available
for all devices when populating m_touchDevices list, so calling
XIQueryDevice again for every device id (which we haven't already
concluded to be a tablet device) is a redundant round trip to X.

For consistency with other device types, extend touch device data
structure to store the necessary device details, instead of holding
pointers to XIDeviceInfo. And allocate touch device objects on
stack instead of heap, also for the consistency reasons (this way
we won't need to special case m_touchDevices when running some
management task on _all_ devices, e.g. removing a device with id=n
when it was disconnected).

Change-Id: I9f6edfaf24da911dd21ec45cd48dfdd6d0dcdf8b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-07-13 11:30:40 +00:00
Tor Arne Vestbø 58ab25004e macOS: Fix unused variable in window:willUseFullScreenContentSize:
Change-Id: I419f884f4145dbe2b60751bf6cde3968cf34fe4a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-07-12 23:28:38 +00:00