Commit Graph

7192 Commits (6ca047aba9d41d4b2f00ecef33a6a7ca43d90ac8)

Author SHA1 Message Date
Gatis Paeglis 833b9997fd xcb: make sure we have a valid m_qimage in backing store
This patch amends a62f1d0356.

If the initial backing store resize request is called with QSize(0, 0),
we end up with QXcbBackingStoreImage holding a default contructed QImage / m_qimage.
This happens because of the logic in QXcbBackingStoreImage::create(), where
if we detect that the requested segmentSize == 0, we do not allocate
any memory, and thus don't create a valid image in m_qimage. On subsequent
call to QXcbBackingStore::resize() we would only check if QXcbBackingStoreImage
object has been created, but not if it is in a valid state. This obviously
would cause problems.

This patch re-factors the logic to handle better resize to QSize(0, 0). And
make the code cleaner by:

- merging ::create and ::resize as semantically it is always resize().
- dropping unnecessary argument passing.

Task-number: QTBUG-69581
Change-Id: Ied337beb449dea8259fcf6b7d29f0a5bd553019d
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-08-13 22:14:26 +00:00
Takao Fujiwara e9a8facc96 IBus: connect to ibus-daemon when it restarts in Flatpak
IBus clients cannot access the IBus socket path in Flatpak and
need to watch the D-Bus disconnection.

Change-Id: Ida1a5ce4fe112c1c4f8855ec886e74f2cbdcc8a0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-08-10 10:56:03 +00:00
Gabriel de Dietrich da62e76eac Cocoa: Update palette after accent color or appearance changes
This updates the UI after the accent color or NSApp's effective
appearance have changed. For the accent color, we listen to
NSSystemColorsDidChangeNotification. For the effective appearance
changes, we do KVO on NSApp.effectiveAppearance.

Both changes will trigger rebuilding the system palettes followed
by a ThemeChangeEvent in the window system interface layer.

Task-number: QTBUG-68891
Change-Id: Iab1ec874e05f1f6d54cd60217c273e0f8ffbf49e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-08-09 10:27:24 +00:00
Gabriel de Dietrich 04671a80db macOS: Force light theme on macOS 10.14+
Until we can properly fix QPalette and QMacStyle,
we should disable dark appearance in Qt applications.

Disable by setting NSApp.appearance to Aqua, unless
dark mode support has been requested via Info.plist
or environment variable.

Read the NSRequiresAquaSystemAppearance Info.plist
key, don’t set NSApp.appearance if its value is false.

Also check the QT_MAC_REQUIRES_AQUA_SYSTEM_APPEARANCE
environment variable and apply similar logic. You then
enable dark mode support by setting:

    QT_MAC_REQUIRES_AQUA_SYSTEM_APPEARANCE=0

which is slightly awkward, but matches Info.plist
behavior.

Task-number: QTBUG-68891
Change-Id: I86dc6cf3dee951d46c953396c57d2c31f2e4afcc
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-08-09 08:19:01 +00:00
Morten Johan Sørvig a09c8b0ee6 Make QEventDispatcherCoreFoundaton work on secondary threads
We were using CFRunLoopGetMain() everywhere. Get the
correct run loop using CFRunLoopGetCurrent() during
initialization, and store it.

Event dispatcher initialization must now be delayed
until after the constructor has run, since event dispatchers
may be created on the main thread and then moved to
the target thread. Initialize on first call to processEvents()
where the current thread will be the correct thread.

Use the stored m_runLoop instead of CFRunLoopGetMain().
This is required for wakeUp() and interrupt() which
may be called from another thread.

Change-Id: I6fffcfd4394899c4a12f241c42781979aaf99d5e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-08-09 07:24:15 +00:00
Liang Qi 977c8a4d18 Merge "Merge remote-tracking branch 'origin/5.11' into dev" into refs/staging/dev 2018-08-08 18:51:11 +00:00
Mauro Persano d25d11e6e2 Windows QPA: fix transientParentHwnd
QWindowsWindow::updateTransientParent retrieves the handle of the
topmost owner window, not that of the immediate owner window (which
corresponds to the handle of transient parent window).

Task-number: QTBUG-69620
Change-Id: I1433098e8e93832d97508ee1782f88ccc000ee3a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-08-08 17:19:17 +00:00
Qt Forward Merge Bot 577654047a Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoabackingstore.mm
	src/plugins/platforms/cocoa/qcocoascreen.mm

Change-Id: Iac965aea4867059dbf7bc401b71e8e8b5b259afb
2018-08-08 11:20:22 +02:00
Robin Lee 2adc06f940 IBus: Support the portal, needed for Flatpak environment
Following commit 35ce6247 in IBus, IBus input plugin now connects to
session bus and use IBus portal to create input context when running
in Flatpak environment or IBUS_USE_PORTAL is set.

[ChangeLog][plugins][ibus] Support IBus portal. Qt programs in Flatpak
environment can now trigger IBus input method.

Change-Id: I561f5f873d709b8abeae554d804daa058f9f6e16
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Takao Fujiwara <takao.fujiwara1@gmail.com>
2018-08-08 06:18:13 +00:00
Tor Arne Vestbø 823acb069d macOS: Don't call [NSOpenGLContext update] for every frame
Calling update has a cost, and should only be done when the drawable
object changes size or location. Instead of calling update each time
makeCurrent is called, we listen for the appropriate notifications,
limiting the number of update calls significantly.

The code has also been refactored to get rid of the m_activeWindow
member, as the active window can be tracked through the context's
drawable object property.

There is also no need to clear the drawable when a window is hidden,
so the hook into QCocoaWindow can be removed.

The QPlatformNativeInterface hook is internal and can safely be removed.

Task-number: QTBUG-63572
Change-Id: I70e3267f47882e151144bd36a50abe906164429a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-08-07 21:25:12 +00:00
Liang Qi ee2e38490d Merge "Merge remote-tracking branch 'origin/5.11' into dev" into refs/staging/dev 2018-08-07 18:12:02 +00:00
Qt Forward Merge Bot 053e7cce79 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	.qmake.conf
	src/corelib/doc/src/objectmodel/signalsandslots.qdoc
	src/plugins/platforms/cocoa/qcocoamenuloader.mm
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	tests/auto/gui/image/qimage/tst_qimage.cpp

Done-with: Gatis Paeglis <gatis.paeglis@qt.io>
Change-Id: I9bd24ee9b00d4f26c8f344ce3970aa6e93935ff5
2018-08-07 17:44:51 +02:00
Tor Arne Vestbø bedf50a5bb macOS: Don't blend the backingstore unless the window has a background
If there's no background, we should copy the backingstore, so that the
backingstore is not blended with the result of the previous flush.

The unified toolbar case is covered by the window having a textured
background.

Task-number: QTBUG-69773
Change-Id: I2f4eed9f44a60ebe7495ce68cf5a54d3d2424b0c
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-08-07 12:20:52 +00:00
Tor Arne Vestbø 5c1c403edb Add logging for QPlatformBackingStore::composeAndFlush
Change-Id: I96778296480d2aaad5e01ed15353106bc90d4d2b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-08-07 10:19:50 +00:00
Tor Arne Vestbø fbce032226 macOS: Add missing braces in QCocoaIntegration::updateScreens()
Change-Id: I0f5009c8ba8f2f1853a968d9853dc45e8cbc2b5f
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-08-07 10:19:48 +00:00
Tor Arne Vestbø 3068b185c5 macOS: Update window geometries after screen properties change
Task-number: QTBUG-69794
Task-number: QTBUG-68140
Change-Id: I4d33bc2136478d779cc4ae8170c3421d9a7557cc
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2018-08-07 09:19:26 +00:00
Andre de la Rocha f271dd8f96 Windows QPA: Fix UIA-to-MSAA accessibility bridge
According to MS sample code, MSAA requests should be replied with
UI Automation providers to enable the use the UIA-to-MSAA bridge, in
order to support MSAA-only clients. Also changing the mapping of
QAccessible::Client from UIA_CustomControlTypeId to UIA_GroupControlTypeId,
as it seems more appropriate and avoids an incorrect mapping to a push button
type in the UIA-to-MSAA conversion.

Change-Id: I5149d250da2d1bd7b14b44ca46e856a81c9be045
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-08-06 19:34:23 +00:00
Jesus Fernandez d9c3dbc93a Pass parameters by const-reference
Coverity-Id: 178810
Change-Id: I996955543c32907a54bf095bf52f242dbb7d5400
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2018-08-06 09:17:59 +00:00
Friedemann Kleint eacd789502 Windows QPA: Fix clang-tidy-warnings about class definitions
- Use ' = default' for trivial constructors/destructors
- Remove unneeded destructors
- replace virtual by override or add override where applicable
- Add Q_DISABLE_COPY

Change-Id: Ic7a61579dbc845769beada4fc79bb5dd310e5e52
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-08-06 09:06:23 +00:00
Friedemann Kleint 43af54c228 Windows QPA: Fix some clang-tidy-warnings
- Replace index-based loops by range-based for
- Change else if to if after return/break/continue or simplify
- Fix indentation
- Do not check for non-null before invoking delete on pointer
- Use isEmpty() instead size() to check for empty containers
- Remove C-style casts
- Use raw string literal
- Do not repeat type in return, use {} instead
- Reference local variables by const ref where applicable

Change-Id: I5cc4b4026a10bddb561ba1ba8ec137e0d4119f94
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-08-06 08:34:00 +00:00
Eirik Aavitsland 2841e2b61e Check for QImage allocation failure in qgifhandler
Since image files easily can be (or corrupt files claim to be) huge,
it is worth checking for out of memory situations.

Change-Id: I635a3ec6852288079fdec4e14cf7e776fe59e9e0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-08-06 08:19:11 +00:00
Oliver Wolff c1f86926a1 winrt: Fix QWinRTCursor::pos
On winrt top level windows are always considered fullscreen and the
core window's bounds are considered the bounds of QScreen. Thus When
checking the mouse cursor's position the window bounds have to be taken
into consideration.

Change-Id: I39f24399bbaeade58d547abc770d4b3094174160
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-08-06 05:24:39 +00:00
Oliver Wolff 0870e517c2 winrt: Add mouse event logging
Change-Id: I4b2e0cd19969cf44a2de65bd0e52a32fc8e535b0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-08-06 05:24:37 +00:00
Oliver Wolff e05dc08ba0 winrt: Implement QPlatformCursor::setPos
Additionally to setting the cursor position we have to make sure that
enter and leave events are triggered. As WinRT at the moment only supports
maximized/fullscreen native top level widgets, an enter or leave event has
to be triggered, every time the cursor enters or leaves the core window.
Same as is done on Windows desktop an enter event is immediately followed
by a move event even for emulated mouse events.

Change-Id: I4b9a7b07f8e24b7887619f96979a064d933788aa
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-08-06 05:24:35 +00:00
Tor Arne Vestbø b3da7494ba macOS: Don't make QCocoaGLContext current unless we have a drawable
Change-Id: I12ac982aa977c69af936f503369c91bac88492a9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-04 19:59:38 +00:00
Tor Arne Vestbø c5a5d270e4 macOS: Modernize and clean up QCocoaGLContext::updateSurfaceFormat()
The updateFormatFromContext function that read GL state has been
merged into updateSurfaceFormat(), we're using AppKit classes
and functions instead of Core GL, and the logic has been simplified
by using attribute/parameter helpers.

Change-Id: Iec6717f457a0b4dbc8e34c3e15fcbcc42895b23e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-04 19:59:38 +00:00
Tor Arne Vestbø 80d536e9aa macOS: Add note about high-resolution workaround in QCocoaGLContext::makeCurrent
Change-Id: I0b82ef95c1a058586e8005665e1e2cab3f975833
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-04 19:59:37 +00:00
Tor Arne Vestbø fa455b4c60 macOS: Simplify and clean up QCocoaGLContext constructor
Change-Id: Ie16256282784926506355012a735511b98118614
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-04 19:59:37 +00:00
Tor Arne Vestbø 1d42241d37 macOS: Clean up and rename QCocoaGLContext::pixelFormatForSurfaceFormat()
Change-Id: I1a439d8cec950cb23c977eedfcc1b8810c6cd1c5
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-04 19:59:37 +00:00
Tor Arne Vestbø 881078d7b5 macOS: Disambiguate use of native handles in QCocoaGLContext
We only need the QVariant native handle when creating the context, so
there's no need for a getter, and we then rename the NSOpenGLContext
getter to match e.g. QCocoaScreen::nativeScreen().

Change-Id: I041e0eff39af9c8836d8ecd560ea07e92dc63e03
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:23 +00:00
Tor Arne Vestbø fed7876e20 macOS: Remove GL defines from QCocoaGLContext
They should be available in all SDKs we build against and support.

Change-Id: I799492e0b21a877717fb3a8391bcbad0f8581628
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:23 +00:00
Tor Arne Vestbø f09b0337d7 macOS: Don't mess with native handle for QOpenGLContext
QOpenGLContext::setNativeHandle() is documented as:

 "configuration settings, like format(), are ignored since this
  QOpenGLContext will wrap an already created native context"

We should respect this and not apply QT_MAC_OPENGL_SURFACE_ORDER.

Change-Id: Idfdf3eac0e9f9d0a86f1b23aa475c3e4f12127e2
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:23 +00:00
Tor Arne Vestbø 137e6c8277 macOS: Remove unneeded auto-release-pools in QCocoaGLContext
The makeCurrent one was not explained in the commit message that introduced
it, and doesn't make any sense, while the constructor one is no longer needed.

Change-Id: I67e2f2aaff5d8602781b27f122f415068a1f2301
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:22 +00:00
Tor Arne Vestbø 51451ea269 macOS: Add more logging to QCocoaGLContext
Change-Id: I6e93934b466f86b7607c9ad30c4c28a9c0f40fd7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:22 +00:00
Tor Arne Vestbø f8b17a297e macOS: Propagate [NSOpenGLContext setView:] failures
Instead of trying to mask situations where [NSOpenGLContext setView:]
will fail (such as calling it for a view that's not part of a window
yet, or part of a window that hasn't been shown), we report the error
up through the API, so that QOpenGLContext::makeCurrent() will return
false. This is documented to occur e.g. when "the surface is not exposed,
or the graphics hardware is not available due to e.g. the application
being suspended."

QGLWidget was taught how to deal with this situation in cc27a50e. Other
Qt APIs seem to handle it fine, but if regressions occur they should be
fixable though the same logic as in cc27a50e.

Change-Id: I92775fc165444696b6c5b44fa0e28ce3c4ad2190
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 22:50:22 +00:00
Tor Arne Vestbø 68f20bb8f4 macOS: Make screen property changes more verbose and granular
We only update the properties that have actually changed.

Change-Id: If711530c6118d2550d5a0e968ee02c903b44fd04
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 20:49:05 +00:00
Thiago Macieira 9bb27ca6cc Make local symbols of some leaked names
Unnamed namespaces and static are great tools. Use them.

Change-Id: Ie01831ddac5446fdbdeefffd15468b3acb3ced79
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-08-03 20:26:50 +00:00
Tor Arne Vestbø ffae448dc3 macOS: Reorganize QCocoaGLContext
Group methods by their areas of responsibility to make it easier to
follow the logic of the code.

Change-Id: I64dbf60004d0f4c281312451e0781da31997c64d
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-08-03 17:17:50 +00:00
Friedemann Kleint 66be5445e6 Windows: Implement Qt::WindowStaysOnBottomHint
Set the Z-order to HWND_BOTTOM in that case.
Add a doc note stating that it only works for frameless or
full screen windows.

Task-number: QTBUG-53717
Change-Id: I7abf219a88aac715c51d27d925504da9e91b56f1
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-08-03 09:36:25 +00:00
Gabriel de Dietrich 4126de8877 QCocoaMenuLoader - ensure that ensureAppMenuInMenu indeed, ensures
The logic seems to be incorrect (or the naming is misleading): it
only adds 'appMenu' if it was found in the previous 'mainMenu',
failing otherwise. Consider the following example:

while (true){
    QApplication app(a,b);
    MainWindow w;
    w.show();
    app.exec();
}

It's quite a contrived but apparently allowed API use (OP claims
they have to switch languages in their app). The main window and the
app are destroyed, so is the menu bar. Then a new main window is
created, with a new menu bar. Now the current [NSApp mainMenu]
(the one set after we deleted the previous) does not have 'appMenu'
anymore (we removed it when initializing the first menu bar).
So as a result we have app menu missing and add new menus/items
to a wrong menus/at wrong index.

Change-Id: I64fce766d6c12ebf7ae12bb94af41c8c1de3d78b
Task-number: QTBUG-69496
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-08-01 17:00:35 +00:00
Gatis Paeglis 6f87926df5 xcb: partly revert 3bc0f1724a
After trying to fix (work around) system resize/move issues in various
ways from within the platform plugin, it has been concluded that it is a
bug at widget layer and should be fixed there instead: QTBUG-69716.

This patch reverts parts of 3bc0f1724a and disables system move / resize
on XCB plugin. Meaning, QSizeGrip will use its own implementation for
resizing a window.

Task-number: QTBUG-68501
Task-number: QTBUG-69628
Change-Id: Ib4744a93fb3e3c20f690a8f43713103856cb7d1a
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-08-01 14:57:04 +00:00
Friedemann Kleint 46fc3d3729 Windows QPA: Fix override cursor being cleared when crossing window borders
Override cursors can be modified externally when for example crossing
window borders. Add helper function to enforce the cursor again to
QWindowsWindow::applyCursor() which is called for enter events.

Task-number: QTBUG-69637
Change-Id: Ibea4da9f2aac81377002b626daae64b1102f6c2b
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-07-31 20:33:56 +00:00
Jędrzej Nowacki 818ab021f5 Compilation fix of qsql_mysql.cpp
qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp:78:21: error: conflicting declaration ‘using my_bool = bool’
 using my_bool = bool;
                     ^
In file included from /home/nierob/dev/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h:60,
                 from /home/nierob/dev/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp:40:
/usr/include/mysql/mysql.h:53:14: note: previous declaration as ‘typedef char my_bool’
 typedef char my_bool;
              ^~~~~~~

Seems that type was implemented with char not bool.

Ammends 82b4c79fb9.

Change-Id: Iccb70303a3af5c298922525b219dc6ed6168ba0b
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-31 12:59:18 +00:00
Edward Welbourne cf2d59bfe8 Merge "Merge branch '5.11' into dev" into refs/staging/dev 2018-07-31 11:34:23 +00:00
Edward Welbourne 23c9d4c98f Merge branch '5.11' into dev
Conflicts:
	qmake/library/qmakebuiltins.cpp
	src/plugins/platforms/windows/qwindowstabletsupport.h
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	src/widgets/styles/qstylesheetstyle.cpp
	tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp

Done-With: Gatis Paeglis <gatis.paeglis@qt.io>
Change-Id: I000b0eb3cea2a5c7a99b95732bfdd41507cf916e
2018-07-31 13:33:14 +02:00
Tor Arne Vestbø 38979332d0 QMacStyle: Make helper-NSViews layer-backed
This prevents the view from triggering display of its superview when
being temporarily added, which is both inefficient and causes issues
when those dirty-rects are wrong due to the wrong frame position of
the added view.

Task-number: QTBUG-67998
Task-number: QTBUG-68023
Change-Id: Idc87d0540216e2e39cc84cc57cb818110c9d00e2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-31 10:13:36 +00:00
Lars Knoll 3cd9d6d19b Remove unused variable
The broke compilation with clang on linux.

Change-Id: I4731017d8a89c11821fbdd98128e27aafc857f97
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-07-30 15:42:07 +00:00
Tor Arne Vestbø 941184bd64 macOS: Forward declare 10.14 NSColors instead of disabling warning
Change-Id: I8fc1ba7aac1c8ac86a8cb5d6f864180e0721926f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-30 15:02:24 +00:00
Tor Arne Vestbø 9a51709ca6 QMacStyle: Remove handling of defunct _q_styleObjectWindow property
It was supposed to be used in Qt Quick Controls 1, for the desktop
style, but the followup patches in QQC1 never landed, and QQC1 is
now deprecated.

Change-Id: Iceefd523fc02a9e48b986dc33bb13a41804dd199
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-30 15:02:23 +00:00
Mikhail Svetkin 128a6eec06 xcb: Change KeyTbl from pure C array to compile time sorted std::array
Allow to use binary search instead of iterate over array

Change-Id: Ibcce1a2296e85f51a61fbb5e64e23e5a27464959
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-28 08:40:37 +00:00
Oliver Wolff add0b0ea41 Fix touch input for HoloLens devices
With newer HoloLens images every touch event has a pressure of 0.0.
By checking both values we make sure that touch points are handled
correctly for new and old images.

Task-number: QTBUG-69651
Change-Id: Ic16e3416ffb7a89e4c1adbec1703e84aa962b211
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-07-27 08:35:51 +00:00
Friedemann Kleint ad8a7f0c50 xcb: Fix build when xinput2 is not available
Fix the #ifdefs.

Amends 3bc0f1724a.

Task-number: QTBUG-68501
Task-number: QTBUG-51385
Task-number: QTBUG-32476
Change-Id: Icc6421fe2e91a3b29bcec8cb1a8a91cb71ae3172
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-25 09:14:55 +00:00
Andre de la Rocha 54e117d27d WinRT: Fix invisible element being included in the UI Automation tree
When an element is not visible then it should not be shown in the element
tree at all when using tools like Inspect. Also, the IsOffscreen property
was hardcoded to false instead of reflecting the actual object offscreen
state.

Task-number: QTBUG-69537
Change-Id: Ic8f55486685837cf5e21b3499085bb669c1dc6c8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-07-25 08:50:13 +00:00
Romain Pokrzywka 708fa860bc Windows QPA: Fix tablet event coords delay for tablets in pen mode
Now that the mouse mode check is only done once for the first event
after the TabletEnterProximityEvent, the m_oldGlobalPosF member has
lost its purpose and should be removed.

Worse, its value was used instead of currentGlobalPosF when in pen mode,
resulting in an unnecessary 1-frame delay in the reported positions
in the tablet events.

Task-number: QTBUG-36937
Change-Id: I6bd2db57898850a65088d9bb41fbfbd96eac54f5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-07-24 20:46:59 +00:00
Andre de la Rocha 947df4e63e Windows: Fix invisible element being included in the UI Automation tree
When an element is not visible then it should not be shown in the element
tree at all when using tools like Inspect. Also, the IsOffscreen property
was hardcoded to false instead of reflecting the actual object offscreen
state.

Task-number: QTBUG-69537
Change-Id: If6e8a4685c0505ee2b99dfbb8bf2b5d0f4112b1e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-07-24 13:10:52 +00:00
Gatis Paeglis 3bc0f1724a xcb: fix various bugs with _NET_WM_MOVERESIZE
1) After a37785ec76 it become
apparent that we don't get mouse release event from X server
when system move/resize ends (because WM is grabbing the pointer).
The old code (before a37785ec) would wrongly deduce mouse move
as mouse release, which is why the issue was not seen before.
The solution is to subscribe to slave device events.

2) This patch also amends 2488f34ecf as
that patch was solving the issue only for 1/3 of the supported DEs.
It worked with KWin, but not with Unity and Gnome. Its worth
noting that it also worked with two other WMs that I tested -
openbox and awesomewm. The way forward is to detect when system
move/resize was started as a result of touch event and let the
QSizeGrip do the move/resize instead of WMs that are known to
have bugs.

With this patch we also need to adjust the event compression algorithm
to not treat all XI_TouchUpdate events equally. For XI_Motion we don't
care if the event that we process comes from a master or a slave device,
so we can process them as equal.

Task-number: QTBUG-68501
Task-number: QTBUG-51385
Task-number: QTBUG-32476
Change-Id: Iab4e79a289d7bc0fe26f7ae2cff7c562f51a3334
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-07-23 21:43:19 +00:00
Tor Arne Vestbø f8774c69b2 QMacStyle: Normalize how we call drawNSViewInRect
Change-Id: I351635c7cc0bb8c852626dc3c0a3caf33b25a761
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-07-23 10:04:33 +00:00
Giuseppe D'Angelo 89bca67499 Remove a deprecation warning coming from QRegularExpression
The flag is deprecated.

Change-Id: Ice6ffafac6a5fa79675fc7cd84a9fb746f17dfb5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-21 16:28:20 +00:00
Nils Jeisecke 0aea57dfc8 Fix QGuiApplication::queryKeyboardModifiers() on macOS
To quote the documentation:

 Queries and returns the state of the modifier keys on the keyboard.
 Unlike keyboardModifiers, this method returns the actual keys held
 on the input device at the time of calling the method.

So GetCurrentKeyModifiers seems to be the correct Carbon
function to use.

[ChangeLog][QtGui][QGuiApplication] Fix queryKeyboardModifiers() on
macOS to actually return the current modifier key state

Change-Id: I11f2ef1897a39aea13df4afbfebb8172ca803a30
Task-number: QTBUG-26413
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-20 13:48:38 +00:00
Andy Shaw 9c99a13d9e Windows: Cache the printer capability information the first time
As remote based printers can be slow to query, meaning that it will take
time to check all the capabilities, especially if the QPrinter is
recreated on need. Then the information should be cached and reused if
the printer is deemed to be the same.

Change-Id: If8f9626c0d44113c698b4f61bbd197157932ccbe
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-07-20 07:49:40 +00:00
Tor Arne Vestbø 8aa14a84a9 macOS: Correctly scale CALayer contentsRect for child NSViews
When flushing parts of a QBackingStore onto child QWindows, and we're
in layer-backed mode, we need to set the contentsRect of the layer
so that the layer will only show the part of the top-level-owned
backingstore image that's relevant for the child window.

Since the contentsRect is in unit coordinate system, we need to apply
a transform, but this must be based on the top level view's size, not
the image size, as the latter will be twice as big on a retina screen,
giving the wrong unit rect.

Change-Id: I7d6f378ed46a98272efb13406a2878ec1efe734e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-20 06:40:07 +00:00
Tor Arne Vestbø 8c91070606 macOS: Invalidate window shadow after flushing backingstore to CALayer
The macOS bug preventing us from doing this has now been fixed:

  http://openradar.appspot.com/radar?id=4976602949615616

Change-Id: I3bfa75d6bf982a051a9b274f530529f4ec4351a0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-19 19:04:10 +00:00
Samuel Gaist 82b4c79fb9 MySQL: handle my_bool for newer versions of MySQL
Since MySQL 8.0.1 the my_bool type has been removed because all the C
compilers supported by the project supports C99 which has bool through
<stdbool.h>. This patch makes the driver both forward and backward
compatible.

[ChangeLog][QtSQL][MySQL] Now supports MySQL versions >= 8.0.1.

Change-Id: Ib373992763643bd470d33e85ce5cec7e4ae5e895
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-19 13:00:16 +00:00
Tor Arne Vestbø 519fcb38a2 macOS: Add categorized logging to QCocoaGLContext
Change-Id: I0fa37457f91d905ed6fb8a2aba20add311705ec7
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-18 19:20:36 +00:00
Gabriel de Dietrich e20307dcfb QMacStyle: Configure checkbox NSButton as tri-state
Qt allows this as a property of QCheckBox, so it should
be enabled in its Cocoa counterpart.

Change-Id: I88eb6dddabb173050c4fe7229f15c768181ef527
Task-number: QTBUG-69453
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-17 20:31:58 +00:00
Qt Forward Merge Bot 1783fca897 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/xcb/qxcbintegration.cpp

 Conflicts git missed:
	src/plugins/platforms/qnx/qqnxglcontext.cpp

Change-Id: I0582cdc9e66e43efe79038b9c43d4f9572ac88fc
2018-07-17 10:19:22 +02:00
Gabriel de Dietrich 582d221b29 QCocoaTheme: Fix system palettes in macOS 10.14
Some colors, like selectedMenuItemColor, won't return
the right value anymore. Other can be updated to new
system UI element colors for more accuracy.

Task-number: QTBUG-68891
Change-Id: I781ef47791648f332208eb780361c60ffb6fcb96
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-14 18:49:05 +00:00
Michael Dippold c80611a459 Android: Support mouse hover
Android supports hover events through the generic motion event. Routed
mouse events to specific mouse handler.

Task-number: QTBUG-42799
Change-Id: Iee17c71c09d84f52235e66ec08c65ffa30ec9cd9
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2018-07-13 17:20:34 +00:00
Tor Arne Vestbø 5624e3c97d macOS: Add logging when applying new window state
Change-Id: Ibbd38b27b9251a0a4a9fd4224529e2131e167b89
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-13 13:31:02 +00:00
Tor Arne Vestbø b724a13c88 macOS: Group window state handling in QCocoaWindow
The flow of changing the window state, especially for fullscreen, is
complicated enough that it helps to keep the code together.

Change-Id: I216ff95c03fc149f42a0199f7c3bc4fb04ff5e6e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-07-13 13:30:42 +00:00
Andre de la Rocha 20d6dac63c Add Windows Pointer Input Messages support
Replaces the handling of tablet/touchscreen/touchpad/mouse input with a
unified implementation based on the Windows Pointer Input Messages added
to Windows 8. The legacy implementation is still used for Windows 7.

Task-number: QTBUG-60437
Change-Id: I0a0f48ee9d5365f84ba528aa04c6ab1fe4253c50
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-07-12 09:52:07 +00:00
Tor Arne Vestbø d6fb64267f macOS: Correctly restart display-link when window is moved between screens
Change-Id: I4b9cdd3d259965f9094ef1bbbca3ebed8df18443
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-07-12 09:49:35 +00:00
Thiago Macieira 89f7e090ef XCB/Xlib: make sure we don't get problems for sys headers using register
Found while compiling on FreeBSD 11.2 (clang 6 update has the warning):

/usr/local/include/X11/Xlibint.h:675:7: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]

Change-Id: I117816bf0f5e469b8d34fffd153e6482ccaed69f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-11 19:18:38 +00:00
Oliver Wolff 1faf5a3610 winrt: Avoid superfluous touch events for multitouch
A touch press event's state has to be set to "stationary" after the
touch event (including its list of touch points) has been passed to the
QWindowSystemInterface. Following touch events (that are caused by another
id) will not change the press event's state which can otherwise cause more
than one press event for a given id in a multitouch setup.

Task-number: QTBUG-58793
Change-Id: I44628912251beacfbda7dd37059577cb1d085bd5
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-07-11 05:57:46 +00:00
Alexander Volkov a0e2705f1f xcb: Monitor XSETTINGS change
Register QXcbXSettings object as a listener of events
received by XSETTINGS window. It was forgotten to be done
in 0f31a5d91f which
introduced QXcbXSettings.

XSettings are used by QXcbCursor to get cursor theme.
Without this change QXcbCursor can't react on theme change.

Change-Id: I0fdd4c913b1d7a482b507c5a054b7052cac61666
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-10 20:04:33 +00:00
Alexander Volkov 4e0404a6d2 xcb: Remove unused QXcbNativeInterface::locateSystemTray()
It was forgotten to be removed in 8f9a72c39d.

Change-Id: I028bea448a2c99cdbdfa0db07de2b1fcd50c93b2
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-10 20:04:17 +00:00
Alexander Volkov 556221d97b QSystemTrayIcon/X11: Move platform-specific calls to the xcb plugin
- Detect the tray icon window in the platform plugin by the object
  name. This way we don't need
  QXcbWindowFunctions::requestSystemTrayWindowDockIdentifier().

- Get rid of unused calls
  QXcbIntegrationFunctions::xEmbedSystemTrayVisualHasAlphaChannel()
  and QXcbWindowFunctions::setParentRelativeBackPixmap().

- Mark the tray icon window as embedded to be able to get the correct
  result from QWindow::mapToGlobal(). It allows to drop
  QXcbWindowFunctions::systemTrayWindowGlobalGeometry().

This change allows to remove the intermediate level between
the QSystemTrayIconSys widget and the xcb plugin. The code looks
clearer.

Change-Id: I7d067131287a6dec162b36f0bddc8cb518aaa38c
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-10 20:04:09 +00:00
Alexander Volkov 5cf6f51b4c xcb: Fix artifacts on the tray background with lock screens
With the current method of painting the tray icon with 24 bpp
visuals we grab the window's background once on the first show
and then use it in all paint operations. This leads to a wrong
background if an application shows the system tray icon when
the lock screen is active.

We can avoid this by painting with XRender when it's available.

This change introduces QXcbSystemTrayBackingStore and moves the
selection of a suitable painting method from QSystemTrayIconSys
into it. In addition the visual for the window is selected
according to the system tray specification and the platform window
for the tray icon is created without needless OpenGL and Vulkan
support.

Task-number: QTBUG-55540
Change-Id: Ib3ca42bc02dcbdd4ccfe5d6e23f870ef22f0d25a
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-10 20:03:53 +00:00
Alexander Volkov ee19e15ef7 xcb: Move handling of RRScreenChangeNotify from QXcbScreen to QXcbVirtualDesktop
This event relates to xcb_screen_t (virtual desktop), not to
RandR crtcs, so move its processing to QXcbVirtualDesktop.
Currently it triggers redundant calling of RRGetCrtcInfo
(from QXcbScreen::updateGeometry()). It's called anyway after
receiving  RRCrtcChangeNotify, so just drop it.
There is also a mess between the rotation of Screen and
crtcs, obviously they should be processed separately.

Task-number: QTBUG-65598
Change-Id: I124752ccbde03adb15e9ba592dd8b2d8d7fc35f4
Reviewed-by: Daniel Vrátil <dvratil@kde.org>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-09 17:35:50 +00:00
Alexander Volkov 5b8702fd55 xcb: Set WM_CLIENT_MACHINE property
It can be useful to detect that a window belongs to an
application running on a remote host. E.g. a window manager
may display the name of the remote host in the window title.
Or it can detect whether a client can be killed.

This property is set by Xlib's function XSetWMProperties(),
which is called by GTK and Qt 4, so it's also good to do
for consistency.

Change-Id: I0693156635cb2696b2fbe7006cbecb25d2680513
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-09 17:35:36 +00:00
Tor Arne Vestbø 17e29fada4 macOS: Remove dead updateRequest code based on setNeedsDisplay
We're no longer using this code path for QWindow::requestUpdate()

Change-Id: I000304a4f1a6ea2c3a4e8268ae978dedd968e07c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-09 16:46:49 +00:00
Tor Arne Vestbø 746f15d0c2 macOS: Remove dead accessibility debug code in QNSView
Change-Id: I00d7f59576d8315f47ea70404460a6e2d133dd1f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:35 +00:00
Tor Arne Vestbø 1918674309 macOS: Organize QNSView accessibility code like the rest of the class
Drive-by style-fixes were applied as well.

Change-Id: I22c17925be41eeaac692ab776dd5b46791265cb3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø 2d01de4e87 macOS: Add missing m_ prefix to QNSView currentWheelModifiers member
Change-Id: I057db59797f1e18c3a8fc5386f7e1295fe352e02
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø 012af8abf8 macOS: Remove unused QNSView member 'currentCustomDragTypes'
Change-Id: Id2e37cc81c24edce37cac2bfa843ee669fd13d98
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø 573c81da9b macOS: Merge the two QNSView initializers
We never call [QNSView init] directly, so there's no point in splitting
up the logic.

Change-Id: Ie40705a3a78c0d732a3f3378c6e8fa76dc6c68e7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:33 +00:00
Tor Arne Vestbø 85472b6b02 macOS: Deliver update request via CVDisplayLink if swapInterval > 0
We use GCD for marshaling the display link update over to the main
thread, as Qt requires that the update request is delivered there.

Change-Id: I318a5b8f27dc5094ce71244401308a4044c41b39
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:57 +00:00
Tor Arne Vestbø b3dc96ef4c macOS: Move wantsBestResolutionOpenGLSurface logic to QNSView initializer
Change-Id: If9d76a8e82ce034eccc5130e036dfeae12377cac
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:55 +00:00
Tor Arne Vestbø 3235140517 macOS: Remove explicit call to setWindowIcon in QCocoaWindow ctor
Window setup should happen in QCocoaWindow::recreateWindowIfNeeded(),
and there we already call setWindowFilePath(), which takes care of
setting the window icon.

Change-Id: Iaa2f42c694cf8d251703cc56648e5819edd79bec
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:54 +00:00
Tor Arne Vestbø 6caaa050ab macOS: Ensure all windows are created on a valid screen
We rely on AppKit repositioning the window if the original position
is not on any of the available screens. We do this by keeping the
original position, but using the primary screen as reference.

This doesn't work unless the window has a title bar, so in the corner
case where the window has an invalid position, we apply the title bar
style mask for a brief moment, so that AppKit will place the window
correctly.

Task-number: QTBUG-69221
Change-Id: If66cac36bf36f051570ba5854951ce4504fe771f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-05 20:07:09 +00:00
Thiago Macieira f63e2a9175 Add missing override keyword found by Clang
qbsdfbscreen.h:57:10: error: 'initialize' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]

Change-Id: I117816bf0f5e469b8d34fffd153e649318d2fd7c
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-07-05 14:49:46 +00:00
Alexandru Croitor 22c1a46a03 macOS: Remove declarative override of -[NSView wantsLayer]
The -[NSView setWantsLayer:] method may have side effects that
extend beyond just setting an internal boolean property, so
we need to ensure it gets called.

This was observed on e.g. macOS 10.12.5, where the method
ends up creating the internal backing layer. On later macOS
versions the method just emits KVO notifications for wantsLayer,
but these may in turn result in similar logic being triggered.

The issue was masked somewhat by AppKit itself calling the
method from e.g. -[NSWindow setContentView:], so we still got
the backing layer created. The problem appeared when running
binaries built against an older SDK (10.6 in this case), which
triggered AppKit to not call -[NSView setWantsLayer:], due to
__NSViewLayerBackWindowFrame() in that case returning false.

This change removes the overridden -[NSView wantsLayer], and replaces
it with an explicit call to -[NSView setWantsLayer] when creating
a new QNSView, essentially revering c8c8cc790a.

Task-number: PYSIDE-724
Task-number: PYSIDE-734
Change-Id: Idaff4ed38838311b37da4925b1eec241e077dbcc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-05 14:49:44 +00:00
James McDonnell b14527f529 Make QQnxIntegration a singleton
Turn all the static members and functions into regular members and
functions.

Change-Id: Ib37d9bdd1a84e512013af7d334e04cd2b1da640e
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-05 13:35:50 +00:00
Mikhail Svetkin 41705529d9 xcb: Refactor align of xcb events
Use C++11 alignas instead of a union to pad the
xcb_*_event. It allows using the struct directly
without accessing a union member.

Change-Id: I221a6708ef7af844bd6b71a57dcbab75e1319c72
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-07-05 13:17:42 +00:00
Liang Qi e3ed2281c0 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/platforms/cocoa/qnsview.mm
	src/plugins/platforms/cocoa/qnsview_dragging.mm
	src/plugins/platforms/ios/qiosinputcontext.mm
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	src/tools/androiddeployqt/main.cpp
		Was moved from qttools into qtbase in 5.11.
		So re-apply 32398e4d here.
	tests/auto/corelib/global/qlogging/test/test.pro
	tests/auto/corelib/global/qlogging/tst_qlogging.cpp
	tests/auto/corelib/io/qfile/tst_qfile.cpp
	tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
	tests/auto/corelib/thread/qthreadstorage/test/test.pro
	tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
	tests/auto/widgets/kernel/qapplication/test/test.pro

Done-with: Gatis Paeglis <gatis.paeglis@qt.io>
Done-with: Mårten Nordheim <marten.nordheim@qt.io>
Done-with: Oliver Wolff <oliver.wolff@qt.io>
Change-Id: Id970486c5315a1718c540f00deb2633533e8fc7b
2018-07-02 11:23:45 +02:00
James McDonnell 84ecc17152 QNX: Add the ability to disable EGL_KHR_surfaceless_context use
QML fails to draw when this is used on at least one jacinto6 platform.
Works when it's disabled.

Task-number: QTBUG-68227
Change-Id: I7b3c081d4d5a4fe22136f4bdd8ad1f34495cd94a
Reviewed-by: Adam Treat <adam.treat@qt.io>
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-01 17:38:40 +00:00
Gatis Paeglis 3d17542cde xcb: move XSync extensions initialization to QXcbConnection
... where we do initialization of all other extensions. Having this code
in QXcbVirtualDesktop does not make sense.

Change-Id: I3bf3034b4a24e06aa5792e7d49133f46c5728b07
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-28 15:09:31 +00:00
Andre de la Rocha 3d867b84a3 Fix automatic showing/hiding of the Windows 10 on-screen keyboard
The automatic showing/hiding of the built-in on-screen keyboard in
touchscreen-based Windows computers, like the Microsoft Surface line,
has stopped working after recent Windows updates. The OSK no longer
seems to rely on UI Automation properties to detect text widgets.
However, it can be triggered by showing an invisible caret.

Task-number: QTBUG-68808
Change-Id: Ia604d21e314965dcdc61f1ced050cc3ed771f567
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-28 09:28:57 +00:00
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
Tor Arne Vestbø 9050ce4ff5 macOS: Guard non-reentrant uses of NSOpenGLContext
NSOpenGLContext should be re-entrant, but is not in practice, resulting
in deadlocks when there are two render threads, eg:

 thread #23, name = 'QSGRenderThread'
    frame #0: 0x00007fff5c6dda4e libsystem_kernel.dylib`__psynch_mutexwait + 10
    frame #1: 0x00007fff5c8a5b9d libsystem_pthread.dylib`_pthread_mutex_lock_wait + 83
    frame #2: 0x00007fff5c8a34c8 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 253
    frame #3: 0x00007fff31ebb52e AppKit`flush_notify + 110
    frame #4: 0x00007fff3e75ee2a GLEngine`glSwap_Exec + 186
    frame #5: 0x00007fff3e740797 OpenGL`CGLFlushDrawable + 59
    frame #6: 0x00007fff31ad43ac AppKit`-[NSOpenGLContext flushBuffer] + 27
    ...

Task-number: QTBUG-69040
Change-Id: I6f28b4cc5faf61ae93f66353ce2abdf8c223d994
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-06-27 16:25:18 +00:00
Friedemann Kleint a8a0dffd1f Windows QPA/GL: Fix build with MinGW/g++ 8.1 x64
Fix warnings about invalid function type casts (return types
conflicting with the PROC returned by wglGetProcAddress()) like:

qwindowsglcontext.cpp:1250:138: error: cast between incompatible function types from 'PROC' {aka 'long long int (*)()'} to 'GLenum (*)()' {aka 'unsigned int (*)()'} [-Werror=cast-function-type]
         m_getGraphicsResetStatus = (GLenum (APIENTRY *)()) QOpenGLStaticContext::opengl32.wglGetProcAddress("glGetGraphicsResetStatusARB");

by introducing nested casts.

Task-number: QTBUG-68742
Task-number: QTQAINFRA-2095
Change-Id: I7c51836f2b9f7e2a6fa17c5108d59b23c42fb99d
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2018-06-26 18:10:42 +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
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
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
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
Allan Sandfeld Jensen d2c0ba3f30 Do not update scroll coordinates on ignorable enter events
This greatly reduces how often we reset the scroll evaluators,
especially with non-focused windows in KWin which sends an enter for
every wheel events in that case.

The update of the evaluators also has race conditions with the normal
events, and thus reducing them fixes odd scrolling behavior with rapid
firing mouse wheels.

Task-number: QTBUG-42415
Task-number: QTBUG-68734
Change-Id: I1c14ca3352bf9c6e57e47ad3aaee1712fe6ba30b
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-06-22 13:37:23 +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
David Faure 4386887b10 Fix ico.json to avoid returning an empty mimetype
QImageWriter::supportedMimeTypes() had an empty mimetype name
in the list because the mimetype for the key "cur" was missing in this
json file.

Change-Id: I4eae4275cb04c4d640dbcac76cd9dc99baa4f0a7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-22 09:05:38 +00:00
Jonathan Marten 558dd7f587 Recognize X11/XCB keysyms Undo, Redo, Find, Cancel
Convert these keysyms into the corresponding Qt::Key_ enum values,
so that they can be part of a QKeySequence and used by applications.

Task-number: QTBUG-69062
Change-Id: I6f2e28191dd8dacd63d4bf710e1714fc5dcce75f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-06-22 08:37:09 +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
Shawn Rutledge af837f9647 xcb: add qt.qpa.input.events logging of wheel events
This is comparable to what we do on macOS, except that the scroll phase
and inverted state are missing.

Task-number: QTBUG-38570
Task-number: QTBUG-56075
Change-Id: I27502e1e2667317ab701f30f1fc601ae1e0591d0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-06-21 15:41:09 +00:00
Friedemann Kleint c44e8b2566 Windows QPA: Fix crashes when processing native events
Change a0a22037cd wrongly introduced
a level of indirection when passing the MSG * as void * to
QWindowSystemInterface::handleNativeEvent() in
QWindowsContext::filterNativeEvent(). Remove the indirection.

Task-number: QTBUG-67095
Change-Id: Ibc2db7ae56bca38f79bafabfabb6127d6ff8cf09
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-06-21 14:37:45 +00:00
Morten Johan Sørvig 581257bd2e Cocoa: handle WindowMaximizeButtonHint as well
Change-Id: I6af265d48e83fc3fc0ce86903820c2b37db05f03
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-06-21 13:31:26 +00:00
Morten Johan Sørvig ca1ad3b7cb Cocoa: Tool windows should always be resizable
Undocked dock windows have the following flags:

Tool|X11BypassWindowManagerHint|WindowTitleHint|
WindowSystemMenuHint|CustomizeWindowHint|WindowCloseButtonHint

CustomizeWindowHint with no WindowMaximizeButtonHint
means that we disable window resize in order to remove
the zoom button (this is perhaps questionable, but
is established behavior). That will however break dock
windows: add exception for Qt::Tool.

After refactoring we discover this special case, again.
See previous fix in d37643c43.

Change-Id: I67a09341e75b92fdb3108ea93901295c39107fe1
History-repeats: QTBUG-46882
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-06-21 13:31:17 +00:00
Morten Johan Sørvig cd08753d3e cocoa: Don’t trigger security dialog on drag
macOS 10.14+ will display an “Accessibility Access”
security dialog if we generate mouse events, so don’t.

Task-number: QTBUG-68830
Change-Id: If832ca3cd49ec6bdad1a8188feab884b6562e9d2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-06-21 13:30:01 +00:00
Friedemann Kleint 3f01dc1995 QWindowsFontDatabase/QWindowsXPStyle: Fix compilation with g++ 8.1/MinGW
Silence warnings about copying/clearing memory types which g++
considers non-trivial, for example:

windows\qwindowsfontdatabase.cpp:1003:75: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'class QChar' from an array of 'const ushort' {aka 'const short unsigned int'} [-Werror=class-memaccess]
         memcpy(faceNamePtr, faceName.utf16(), sizeof(wchar_t) * nameLength);
qwindowsxpstyle.cpp:946:46: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct ThemeMapData'; use assignment or value-initialization instead [-Werror=class-memaccess]
                 memset(&data, 0, sizeof(data));
                                              ^
qwindowsxpstyle.cpp:1053:38: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct ThemeMapData'; use assignment or value-initialization instead [-Werror=class-memaccess]
         memset(&data, 0, sizeof(data));

by introducing a cast.

Task-number: QTBUG-68742
Task-number: QTQAINFRA-2095
Change-Id: I160eb5fc7b64a2bc404e1fa61d306af2662d1252
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-06-21 12:29:29 +00:00
Qt Forward Merge Bot 8eabb44f8a Merge remote-tracking branch 'origin/5.11.1' into 5.11
Change-Id: I9a4571ccf826a86e055dfbba23b5e5cbd8ea55e8
2018-06-19 13:12:48 +02:00
Andy Shaw cd02eb5b20 ibase: Silence warning about incompatible function types
This correctly silents the warning about incompatible function types,
it amends the previous fix - 6108d8f515

Task-number: QTBUG-68330
Change-Id: I9eda42817740f491b16ac19c553f35fb1c7aa755
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2018-06-15 11:32:13 +00:00
Gatis Paeglis ae52029ec5 xcb: add QT_XCB_NO_MITSHM envvar for disabling MIT-SHM extension
We had something like this already in Qt4: QT_X11_NO_MITSHM
The logic from 67227aeffd not always
works. There can still be cases that xcb_shm_attach_checked()
returns with no errors on remote clients.

Task-number: QTBUG-68783
Change-Id: Idd27ac66eb8f1114e3d1e1ddaaab2b00f235c561
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-06-15 07:29:18 +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
Tor Arne Vestbø a93d29198a Access private properties via sandbox-safe API on Apple OSes
We detect whether or not we're running inside a sandbox and bail out if
so. We use runtime lookup of the property, so that static analysis of the
application will not mistakenly think we're using the API in sandboxed
situations.

Change-Id: I5f5c42f5a4a44b62de061d945b62ac63167ece09
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-06-14 04:21:24 +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
Gatis Paeglis 67227aeffd xcb: fix regression with remote X11 clients
There were several issues here:

We were attempting to use MIT-SHM functions over SSH connection,
which is not supported. X server should detect this and return with
an appropriate error message. It does actually return BadAccess for
non-fd code path, but Qt was stubbornly trying to repeat this action
and always falling back to malloc (during window resizing). For fd
code path we were hitting X server bug, which would result in window
freeze [1].

During the initialization we check if xcb_shm_attach_checked() fails,
and disable MIT-SHM if it does. We use this logic to detect if we
are running remotely, as there are no public APIs for it. This way
we can avoid X server bug and avoid needless calling of code path
which will _always_ fail on a remote X11 connection.

[1] https://lists.x.org/archives/xorg-devel/2018-June/057011.html

Task-number: QTBUG-68449
Task-number: QTBUG-68783
Change-Id: I7ab3dcf0f323fd53001b9f7b88c2cb10809af509
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-06-11 12:19:37 +00:00
Mitch Curtis 89f9a3db15 Revert "xcb: round down the scale factor for values < 0.8"
This reverts commit 23b139038a.

The commit causes a regression on Ubuntu where the DPI setting of
the display is ignored.

Task-number: QTBUG-68620
Change-Id: Id176f8cda0daef1755abb3aa9382476cc4ed7d71
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-09 14:47:30 +00:00
Gatis Paeglis 02be685084 xcb: fix mouse event compression with certain configurations
The bug was that we are accessing memory beyond 32 bytes. It is
not safe to cast xcb_generic_event_t to Xlib's XI2 structs before
we have memmoved bits to the expected layout (for details see
QXcbConnection::xi2PrepareXIGenericDeviceEvent). We do this memmove
later in the stack, when processing the XI2 events. Here at the
compression step we can simply extract the necessary sourceId by
reading the sourceId offset in the data.

Task-number: QTBUG-68033
Change-Id: I6962bbb8f8b0834d6f780f62017fefa2de7f47df
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-06-09 14:46:38 +00:00
Takumi ASAKI 73b2d7f612 QNX: Add QQnxEglWindow::format() overload
QQnxEglWindow should return correct QSurfaceFormat.

Task-number: QTBUG-64306
Change-Id: I3ba2a9d84f39af66c3b8f58ae3e26edc695f5612
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
2018-06-08 08:04:42 +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
Oswald Buddenhagen fc5da399c3 Merge 5.11 into 5.11.1
Change-Id: I28f48e980a9e23ddde5251608dd9d1d83df65392
2018-06-07 17:10:57 +02:00
Jan Grulich 792298e42d Keep native file dialog updated with current options
When doing calls on native file dialog, we might end up calling an
implementation which will cause crash in case we don't have all options
loaded in the native file dialog. Imagine scenario when you want to save
a file, it sets acceptMode() to QFileDialogOptions::AcceptSave, which is
set to our flatpak file dialog, but not passed through to the native one
loaded inside. Then method calls like selectFile() might crash, like
in case of Gtk3 dialog, because its implementation asks for acceptMode,
but it's not set yet and thus we end up with crash.

Change-Id: I7a4239cb8b46ff6b08e2cfc1dd6abb9d9600aef8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-06-06 18:05:18 +00:00
Andy Shaw ae42461f44 MySQL: Handle TIME types as a string to allow the full range of data
As the full range of TIME is '-838:59:59' to '838:59:59' then we cannot
use QTime as the object to store this data in. Therefore a QString is
used instead for passing the data to and from. This does not impact
existing code using QTime already as it will still convert it from
the QString to a QTime to give the same result as before.

[ChangeLog][QtSql][MySQL] The TIME data type is now treated like a
string-based type in order to respect the full range of the TIME data
type.

Task-number: QTBUG-57028
Change-Id: Ieb7105bff3043b845f76bc873d088e6bac1e4f10
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-06-06 11:14:03 +00:00
Andy Shaw 6108d8f515 ibase: Silence warning about incompatible function types
Task-number: QTBUG-68330
Change-Id: I1bb272ec647f9fb5f67f67f04600e51409ebd40a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-06-06 07:18:36 +00:00
James McDonnell c23f23a739 Add support for _q_platform_qnxWindowType QWindow property
This dynamic property can be used to specify an explicit QNX window
type for a QNX platform window.  The _q_platform_ prefix makes it
possible to place the property on QWidget objects instead.  Existing
functionality ensures that any QWidget property whose name begins with
_q_platform_ is copied to the underlying QWindow object prior to
creation of the platform window.

Add _q_platform_ aliases for the dynamic qnxInitialWindowGroup and
qnxWindowId properties so that these properties can be also be
specified on QWidget objects.

Change-Id: Ia37a965dd25de333307b2bb5ae81446db271af1f
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Dan Cape <dcape@qnx.com>
2018-06-05 19:35:47 +00:00
Sergiy Korobov 7b79798275 Fix QWindowsWindow::requestActivateWindow()
QWindowsWindow::requestActivateWindow() does not work correct if
QWindowsWindowFunctions::AlwaysActivateWindow is passed as a parameter
to QWindowsWindowFunctions::setWindowActivationBehavior().
When the calling process is not the active process, only the taskbar
entry is flashed. It is not correct. The window should be always
activated, even when the calling process is not the active process.

Task-number: QTBUG-37435
Task-number: QTBUG-14062
Change-Id: I7a321d7bac744a7776278210b1b5a2fd4288aa43
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-05 14:41:21 +00:00
Tor Arne Vestbø 301970018c macOS: Make sure QNSPanel also gets a debug description
Change-Id: I5de08c3493b02a8e98ba3c4fe3922f5f9fd6e2c2
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-05 13:44:22 +00:00
Tor Arne Vestbø 2071d26a34 macOS: Deliver screen changes synchronously
Change-Id: Iea8fcb69b6c05c4f81fedb4ec423aed89d9d2d3c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-05 13:44:21 +00:00
Tor Arne Vestbø a15db3a81a iOS: Guard all uses of APIs not available in application extensions
Change-Id: Ic058a0c07f6cdd0a015f46db96fce1536a712711
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-06-05 12:24:05 +00:00
Tor Arne Vestbø 8058380904 macOS: Manually compute frame rect for zoomed/maximized state
We cannot rely on AppKit to compute the zoomed frame for us, as it will
not allow borderless windows to be zoomed, and also has bugs in corner
cases with multiple screens, where the zoomed window jumps from the
current screen to a nearby screen.

The latter happens when the zoomed rect overlaps more with a nearby
screen than it does with the current screen. In this case AppKit zooms
the window on the nearby screen, but this is unexpected from the user's
perspective, who zoomed the window on the current screen, so we make
sure to always keep the window on the current screen by repositioning
the window correspondingly.

Task-number: QTBUG-67543
Change-Id: I8762c5cbf2e3b317a6caf11d820712596e15114a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-05 12:10:16 +00:00
Gabriel de Dietrich 23ae05cf68 QMacStyle: Fix clipped arrow in QToolButton
A quick and reasonable fix is to make sure the arrow fits in
SC_ToolButtonMenu returns. In the future, we should keep the
arrow's actual size and offset the icon accordingly.

Change-Id: I218fa7726efbe4576a72889c41685de87ac14ac1
Task-number: QTBUG-68517
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-04 16:44:25 +00:00
Gabriel de Dietrich 0866fe2079 QMacStyle: Fix QComboBox left contents margin
Change-Id: I89a5e0c271bdaced8440e123c63c5435fa725856
Task-number: QTBUG-68518
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-06-04 16:44:16 +00:00
Sergiy Korobov 94f249977c Fix QWindowsNativeInterface::platformFunction()
QWindowsWindowFunctions::setWindowActivationBehavior() does not work
because QWindowsNativeInterface::platformFunction() is broken.

Task-number: QTBUG-37435
Task-number: QTBUG-14062
Change-Id: Id5688316654ea8ad47d5c68894c376cb83e3583a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-06-01 07:30:31 +00:00
Tor Arne Vestbø c538a333db macOS: Make layer-backed mode the default
QWindows are still backed by NSViews, but these views render to a
CoreAnimation layer instead of directly to the top level NSWindow.

This is the direction Apple is going (and is the only available
option on iOS/tvOS), so we want to move away from the existing
code path as soon as possible.

The default can be reversed by setting QT_MAC_WANTS_LAYER=0, or the
_q_mac_wantsLayer property on QWindow.

[ChangeLog][macOS] Layer-backed mode is now the default for QWindow.

Change-Id: Ibb9cc7541b179cad215d0daee14aeb1b54be614c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-31 15:50:33 +00:00
Mikhail Svetkin c9d593d431 macOS: minor refactoring in mouse handlers for nsview/systemtrayicon
Use new helper functions for mouse events

Change-Id: I01e83a228deb16cbdb1d7c8c628a92d48055ee2b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-31 15:49:50 +00:00
Friedemann Kleint 3d841556bf Windows QPA: Fix release button event type after moving windows
Check whether the mouse is inside the window and report
MouseButtonRelease or QEvent::NonClientAreaMouseButtonRelease,
respectively. The inside case is triggered by programmatically
starting a size move via QPlatformWindow::startSystemResize()
(QSizeGrip) and was overlooked in
7c3ecf85a7.

Complements 4589440891,
7c3ecf85a7.

Change-Id: I8f714dc768a163878c2b4a075470bcee2dfbd802
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
2018-05-31 14:41:06 +00:00
Tor Arne Vestbø 7e2177464f macOS: Allow moving out of fullscreen state using titlebar button
Even if the window isn't configured with Qt::WindowFullscreenButtonHint,
the user might call showFullScreen(), which we respect and move the
window into fullscreen. In this state, we need to keep the collection
behavior as NSWindowCollectionBehaviorFullScreenPrimary, otherwise the
zoom button will have no effect and the user can't move out of fullscreen.

Change-Id: I77a4b4ee4b42fabc4c6ed2f529ff57acc31d6c24
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-30 23:12:32 +00:00
Liang Qi a4d7535f19 Fix missing override warning for android
This amends 8447f5f006.

Change-Id: Idd25c13735539682f6034724df4c79fcf10a1810
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2018-05-30 15:01:00 +00:00
Tor Arne Vestbø b6fcc86101 macOS: Minor metal support nits/cleanups
Change-Id: I840426ebf35b0fec64e92386fc3e1cabd91ced25
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-30 14:38:53 +00:00
Tor Arne Vestbø 286c153583 iOS: Handle application state for application extensions
Change-Id: I97df0f8ecf93e28bfbe9c719922f1ee5ec12b563
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-05-30 09:46:39 +00:00
Joerg Bornemann 9f27bfb31a Make sure we can build with -no-feature-draganddrop
We move QInternalMimeData to a separate file, because this class is
used, even if draganddrop is disabled. From now on, include
qinternalmimedata_p.h instead of qdnd_p.h for QInternalMimeData.

Change-Id: I594e08e2e90d574dc445119091686b4b69e4731b
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-05-29 18:31:35 +00:00
Tor Arne Vestbø dd8e73504e macOS: Respect maximum window size when computing zoomed state geometry
AppKit will normally compute this automatically based on the
contentMaxSize property of the NSWindow, which we set correctly
based on the window's maximum size, but since we ignore the
frame proposed by AppKit (due to not working for borderless
windows), we need to take the maximum size into account ourselves.

We follow the lead of QCocoaWindow::propagateSizeHints(), and
interpret the window's maximum size as referring to the client
area size, not including the frame geometry, but AppKit expects
the NSWindow's frame, so we need to manually add the frame.

In addition, AppKit expects the frame in the native coordinate
system, so we need to map to it. This was an existing bug, that
never manifested before taking the maximum size into account.

Task-number: QTBUG-67376
Change-Id: Id4cf6ff5640610f809472e5b1d591b4ec17df602
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-29 10:54:21 +00:00
Tor Arne Vestbø 0b1342f374 iOS: Send window-system event also when embedded in native iOS app
The iOS event dispatcher has been split into two; one dealing with the
QPA event processing, which we should always do, and one dealing with
the longjumping that we do when running the user's main on a separate
stack.

Change-Id: I1f819db33c608aad130ff23cbbadcf84363a32d2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
(cherry picked from commit 5414d372d4)
2018-05-29 10:53:11 +00:00
Tor Arne Vestbø dc55000140 iOS: Don't assume our UIWindow is a QUIWindow
Change-Id: I6494e4a476273b131aedcf409abdb1ffffa5b62e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
(cherry picked from commit ab9b026d27)
2018-05-29 10:53:10 +00:00
Oliver Wolff f5a56981cd winrt: Handle expose event before removing window
QWindow should get an expose event before being hidden. handleExpose
iterates over the list of visible windows, so it has to be called before
the window is removed from the list of visible windows.

Change-Id: Ide920ade43c057b9aafdf9fdfa2d54d3336289d8
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-05-25 11:02:18 +00:00
Jan Grulich b743835f50 Open native file dialog inside sandbox when opening directories
Flatpak FileChooser portal doesn't support opening and exporting
directories to the sandbox as it's not technically possible. Files are
simply exported through document-portal, but directories are a different
story. We have to, in case we want to open a directory, use native file
dialog provided by platform theme we have loaded into flatpak platform
theme. Applications which need to open directories to be able to work,
like IDEs, music players, will have enabled access ho host's filesystem
anyway so it's fine to open a file dialog inside sandbox.

[ChangeLog][Linux] QFileDialog will use the native dialogs provided by
the platform theme instead of trying to use Flatpak portal to select
directories.

Change-Id: I0716193bb9878aa621b8ca88506f87c72f690887
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-05-24 15:55:38 +00:00
Liang Qi f82e508516 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	mkspecs/features/qt_common.prf
	src/corelib/tools/qstring.cpp
	src/plugins/platforms/windows/qwindowsmousehandler.cpp
	src/widgets/widgets/qmainwindowlayout_p.h

Change-Id: I5df613008f6336f69b257d08e49a133d033a9d65
2018-05-24 16:29:14 +02:00
Shawn Rutledge b206d1c808 VNC plugin: explicitly cast int to uint16_t before calling htons
Otherwise there is a -Werror=narrowing error on big-endian
architectures (where htons does nothing).

Task-number: QTBUG-68390
Change-Id: Idb204a81aaedb9f4fde1d5fae406da36c7a1953e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-05-23 18:20:44 +00:00
Gabriel de Dietrich 595c1ae9e7 Cocoa Menus: Add support for menu items in window-less apps
Since we moved the menu items validation and target/action to
QNSView (thus relying on the responder chain), we need to take
care of case when the applications that doesn't have any window
open. By adding similar methods to QCocoaApplicationDelegate,
the last responder, we ensure the menu items will be validated
and will trigger properly. This is particularly necessary for
dock menu items, which live separately from any top-level widget.

Dock menu added to Menurama which won't quit when its last window
is closed. This way we can test that dock menu items will trigger
in the absence of any window.

Change-Id: I56d864eb9da1f8dd5adb2a3b6c3dd5304c723117
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-23 18:09:28 +00:00
Friedemann Kleint 5e67c653db Windows QPA: Fix Qt include statements
Change
 #include <QtCore/QDebug>
to
 #include <QtCore/qdebug.h>

according to the coding style.

Change-Id: I6ba8a7424c548ddde1d18f3f6f4f87e30973d710
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-05-23 06:46:46 +00:00
Friedemann Kleint 88ba5d5b23 Direct2D QPA: Fix Qt include statements
Change
 #include <QtCore/QDebug>
to
 #include <QtCore/qdebug.h>

according to the coding style.

Change-Id: I34ddf9b9101cfbd5054584608de09de5b4b2f233
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-05-23 06:08:12 +00:00
Martin Storsjö 91f12fe62b Windows: Fix MinGW compilation after ec97be5585
This fixes compilation that failed due to QOperatingSystemVersion
being undeclared. Not sure from where it was transitively included in
other builds where it apparently have worked fine though.

Change-Id: I32cfb51c4787604d456fffa7a3a8ed09952a0513
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-05-22 07:51:03 +00:00
Andy Shaw 8d19afcc81 ibase: Don't use deprecated QSqlError constructor
Task-number: QTBUG-68330
Change-Id: Ie6ece8574462699fca401139ea00f1925b0a440b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-05-18 12:46:59 +00:00
Andre de la Rocha ec97be5585 Windows: Add support for invisible window margins
Windows 10 windows contain an invisible area within the NC window frame
on which the mouse cursor is enabled to perform resizing. This change
captures the geometry of the invisible margins and considers it when
moving a window, so that, for instance, a move(0,0) does not generate
gap between the window and the beginning of screen.

[ChangeLog][Windows] The dimensions of invisible margins inside the
frames of Windows 10 windows will now be disregarded in the positioning
of Qt windows to avoid a misplaced look (offset by a few pixels from
the expected position).

Task-number: QTBUG-55762
Change-Id: I1f537756eb1a093f78b919de9d44992528199700
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-05-18 09:31:33 +00:00
Friedemann Kleint 7c3ecf85a7 Windows QPA: Fix left button reported pressed after moving windows
When moving a window by dragging the title bar, no WM_NCLBUTTONUP is
received after WM_NCLBUTTONDOWN, WM_NCMOUSEMOVE (due to internal mouse
capture), which can leave the left mouse button 'pressed' in
QGuiApplication's state. Intercept WM_EXITSIZEMOVE to sync the buttons.

Complements 4589440891.

Change-Id: I94d18d1d4a4796dcecb1a9731809d05c7f9ddd65
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-05-16 13:38:32 +00:00
Andy Shaw b0f3cc1594 sqlite: Allow for duplicated placeholders with just one placeholder
This accounts for a case of a placeholder being duplicated in the
prepare query, but where only one placeholder was used. This amends
e4e87a2ece

Task-number: QTBUG-68299
Change-Id: Ia92ee912facd51a13e7222886debb219b24442b0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-05-16 11:42:25 +00:00
Alexandra Cherdantseva 9c707f140e Windows Platform: Redirect wheel event to a window under mouse cursor
Revert a part of af5c8d04fb
which affected mouse wheel event redirection.

Task-number: QTBUG-63979
Change-Id: Ice88675aadbb8a7477b3758a607db5979d62562c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Alexandra Cherdantseva <neluhus.vagus@gmail.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2018-05-16 09:02:40 +00:00
Friedemann Kleint b145201128 Windows QPA: Fix wrong initial size when launched on secondary screen
Send changed events from QPlatformWindow::initialize()
synchronously so a protentially changed screen takes
effect in QWindow::resize() called by QWidget::show_sys().

Task-number: QTBUG-67777
Change-Id: I889500d458caf0e782bdbc237ce790f0b0bc2d95
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-05-16 08:23:42 +00:00
Mikhail Svetkin 93f79f5790 macOS: minor refactoring in handler of global monitor
Use new helper functions for mouse events and buttons

Change-Id: Idb74fbd4ffde0c22b3d4bbddb5761567081bdf7c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-05-15 18:41:20 +00:00
J-P Nurmi 410b943516 QMacStyle: remove unused qlibrary.h include
Fixes build with -no-feature-library, because the qlibrary.h header
contains QT_REQUIRE_CONFIG(library).

Change-Id: If64ece8bd77e8824b86dc91f95dd9062cb2a1644
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2018-05-15 08:14:06 +00:00
Jan Grulich d55165b9c4 Fix filter parsing in flatpak FileChooser portal
Filters are usually in format (Name (*.foo *.bar)), but valid filter is
also (Name ( *.bar *.foo )), containing additional spaces. When we split
content in the brackets divided by spaces, there will be then empty
strings which we need to filter out, otherwise the result we send over
DBus is not valid.

Change-Id: Iaa265189408f47324bc9b269d534bf4c8d7d2cae
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-05-15 08:06:17 +00:00
Tasuku Suzuki fefe5cdf0c Fix build without features.cursor
Change-Id: I450bd9f160c64f718c49e87d274c1ccc4a657aca
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-05-15 00:42:15 +00:00
Liang Qi 7e1b504f31 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	mkspecs/features/qt_module_headers.prf
	tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
	tests/auto/widgets/kernel/qwidget/BLACKLIST

Change-Id: I2a08952d28d1d0e3d73f521a3d44700ce79ff16c
2018-05-14 14:51:46 +02:00
Morten Johan Sørvig 432df3f8c8 Vulkan: share library loading implementation
The macOS, Windows, and XCB implementations are identical
and can be moved to QBasicPlatformVulkanInstance.

Change-Id: Id84b27ffd87f86afe3798c4ad2743ba05e6190d3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-14 09:32:48 +00:00
Morten Johan Sørvig fec8a9323b Vulkan: Share destroySurface() implementation
The macOS, Windows, and XCB implementations are identical
and can be moved to QBasicPlatformVulkanInstance.

Change-Id: I1380b2bd03080710084a1458bdce3a362ba5c287
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-14 09:32:43 +00:00
Morten Johan Sørvig ee60a044c9 macOS: Add QSurfaceType::MetalSurface
Add API to activate previously added Metal layer implementation.
This provides minimal support, and unlike VulkanSurface
there is no separate QWindow subclass.

What this does do is configure the QWindow to use a
Metal layer, and to send expose/update events when
the layer content should be redrawn. Qt will also update
the layer’s drawableSize and contentsScale when needed.

Application code can make use of this by accessing
the QWindow layer, which will be a CAMetalLayer:

  CAMetalLayer *metalLayer = reinterpret_cast<CAMetalLayer *>(
    reinterpret_cast<NSView *>(window->winId()).layer);

Change-Id: I514f5186133c3e610fd4e53ca91fe9c85c6d016e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-11 09:13:55 +00:00
Qt Forward Merge Bot 552c45bea9 Merge remote-tracking branch 'origin/5.11.0' into 5.11
Change-Id: Id6e2acd5e31c1ac858ddf1d8873a6f10694141de
2018-05-09 13:48:42 +02:00
Liang Qi b5a956601f Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
	tests/auto/corelib/io/qresourceengine/qresourceengine_test.pro

Change-Id: I3169f709cc2a1b75007cb23c02c4c79b74feeb04
2018-05-08 20:43:45 +02:00
Mikhail Svetkin c427ba53aa macOS: Transition to new QPA dag-and-drop API
The new API allows us to pass the mouse buttons and
keyboard modifiers along with the QWSI event.

Task-number: QTBUG-57168
Change-Id: Ic54c012d1593d922e7dcd31facab2f2c630c7996
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-05-08 11:39:32 +00:00
Morten Johan Sørvig 60457e6cd0 macOS: Experimental Vulkan support via MoltenVK
Add support for QSurface::VulkanSurface and QVulkanWindow.

Usage:
  1) Build MoltenVK according to instructions
  2) Configure Qt: ./configure -I /path/to/MoltenVK/Package/Release/MoltenVK/include
  3) export QT_VULKAN_LIB=/path/to/MoltenVK/Package/Release/MoltenVK/macOS/libMoltenVK.

Implement support for QSurface::VulkanSurface by enabling
layer mode for QNSView and then creating a CAMetalLayer,
which the MoltenVK translation layer can run on.

MoltenVK provides an implementation of the Vulcan API,
which means that the platform integration is similar
to other platforms: implement a QCocoaVulkanInstance
where we pass the QNSView instance to the vkCreateMacOSSurfaceMVK
Vulkan surface constructor function.

Using Vulkan directly without QVulkanWindow is possible, but not
tested.

We currently load libMoltenVK at run-time and use the
existing QT_VULKAN_LIB environment variable to set its
path. For deployment purposes it would be better to
link against MoltenVK.frameworkm, but this

Task-number: QTBUG-66966
Change-Id: I04ec6289c40b199dca9fed32902b5d2ad4e9c030
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-08 11:27:26 +00:00
Friedemann Kleint d4aef80525 Windows QPA: Improve debug output of keyboard shortcut handling
Add a debug operator for KeyboardLayoutItem
and output keys in QWindowsKeyMapper::possibleKeys().

Change-Id: I28215f44da2a9c08a27541ef0e906d37be2bad72
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2018-05-08 06:57:23 +00:00
Joni Poikelin 3a912e92bb Fix building with -no-feature-shortcut
Change-Id: I7576055a6d81d6a7a075ebff16ca6b0ced4e984e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-05-08 06:15:43 +00:00
Tasuku Suzuki 8f7dcba204 Fix build without features.timezone
Change-Id: I3f8421103afa61baf415636b4dc8cf93fb477bcc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-05-08 01:59:08 +00:00
Tor Arne Vestbø 4d15f393a7 Move default implementation of update requests to QPlatformWindow
Change-Id: I4cbb8d2023068288e298ab21f5cd8bc258825c77
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-05-07 10:43:16 +00:00
Friedemann Kleint 2d1ac61d95 Windows QPA: Use new QPA Dnd API
Task-number: QTBUG-57168
Task-number: QTBUG-56244
Change-Id: I84cf811d9e886369a659ecb33ce1778207660922
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-05-05 09:42:12 +00:00
Qt Forward Merge Bot ba2b7b8e33 Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: Ib58433da04bffb5dfab5486b80f17f39cc4145fa
2018-05-05 01:00:55 +02:00
James McDonnell aadc294f2d QNX: Add screen-context-capabilities platform parameter
Specifies the flags value for the screen_context_create call allowing
the Qt application to take on additional screen capabilities via the
Qt screen context.

Change-Id: Ic7aa478227e64afe2d1d7d04ec58c11ad68b9f22
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-05-04 14:21:08 +00:00
James McDonnell fc356a1992 QNX: Move screen event retrieval to the GUI thread
Instead of retrieving screen events itself, the screen event thread
now turns screen event notification into a Qt signal.  In response to
the signal, the GUI thread processes screen events.  Eliminates the
need to coordinate access to a screen event queue.  Also prepares the
way for getting rid of the screen event thread.  This could be done if
the QNX event dispatcher were switched from poll to MsgReceive
(dispatch).

Change-Id: If5892466d04d67f00828fddaea38b20da5fb18a3
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-05-04 14:20:56 +00:00
James McDonnell e67671d7cb Generate more Windows/Linux-like Qt keyboard events
The QKeyEvent::key values were significantly different on QNX
and some QKeyEvent::text values were also different/missing.

Also makes it possible to enter numbers via the numeric keypad.

Change-Id: Ifcf6284b99a893a87974d37ec6d6976f88241e61
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Dan Cape <dcape@qnx.com>
2018-05-04 13:12:14 +00:00
Gatis Paeglis 10b3286313 qpa: improve API to support DnDs from other processes
... instead of using a hack of directly accessing QGuiApplication
members.

The current QPA API was bad for two reasons:

1) It expects platform plugin authors to know about
internals of Qt Gui, particularly that QGuiApplication
uses QGuiApplication::{mouseButtons,keyboardModifiers}
to construct QDragMoveEvent and QDropEvent events. Which
results in the second reason why this is bad.

2) Platform plugins should not directly access member
variables of QGuiApplication, just to make sure that
QDragMoveEvent and QDropEvent events contain correct state.
Platform plugins should instead use QWindowSystemInterface
to communicate with Qt Gui (which is also the solution here).

The solution is to extend QWindowSystemInterface::handle{Drag,Drop}
to require mouse/keyboard state. We already do this for
some of the other methods, so it is nothing extraordinary.
This type of interface is also _required_ to support
drag-n-drops from other processes. We can't use
QGuiApplication::{mouseButtons,keyboardModifiers} when the
drag originates from another process, instead we need to
query mouse/keyboard state from the system.

This patch fixes drag-n-drops from others processes on XCB
platform plugin.

Task-number: QTBUG-57168
Change-Id: I3f8b0d2f76e9a32ae157622fef801829d629921d
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-05-04 10:44:15 +00:00
Gabriel de Dietrich 8447f5f006 QShortcut: Try harder to find a widget for parentless menubars
Add QPlatformMenuBar::parentWindow(). Since we call handleReparent()
every so often, it's reasonable to be able to get its value back.

While this parent window won't give us much information from
the point of view of the actual QWidget parent for the menubar,
the main reason we will need this is to check for modality blockage.
Indeed, QApplicationPrivate::tryModalHelper() only cares about the
widget's window since modality blockage is decided at the window level.

Change-Id: Ie79f483424b01e430bc9168ba82489e30d15aec6
Task-number: QTBUG-67938
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-03 22:51:01 +00:00
Lionel CHAZALLON 93cf1cf2e5 eglfs/kms: Add drm atomic zpos property handling
This adds the ability to specify a ZPOS property for the eglfs plane
ZPOS will allow to control the relative position between eglfs layer
and the other layers.

It is bound to using QT_QPA_EGLFS_KMS_ZPOS environment variable to determine
its value.

Change-Id: I51986ccb22a9dbaeef20165ac5feb7dbe8047373
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-05-03 18:40:42 +00:00
Liang Qi eac736e0fb Merge "Merge remote-tracking branch 'origin/5.11' into dev" into refs/staging/dev 2018-05-03 16:04:52 +00:00
Edward Welbourne 0679b96338 Use QDateTime::toString(Qt::ISODateWithMS) instead of reinventing it
Following up on a review comment on commit
0a5f71c606.

Change-Id: I46924f5ad1b291039d22a3d6015d80306679ad26
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2018-05-03 14:03:18 +00:00
Liang Qi 60fefff22f Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	examples/widgets/graphicsview/elasticnodes/graphwidget.cpp
	examples/widgets/graphicsview/elasticnodes/node.cpp
	examples/widgets/graphicsview/elasticnodes/node.h
	src/plugins/platforms/cocoa/qnsview.mm
	src/plugins/platforms/cocoa/qnsview_drawing.mm
	src/widgets/kernel/qmacgesturerecognizer_p.h

Change-Id: I13cf06bac75d48d779d8ee7b5c91bfc976f2a32c
2018-05-03 14:50:22 +02:00
Albert Astals Cid 6c5c1a562c cups: Show a dialog when asked for password
Otherwise the default cups implementation is used, that is,
asking for the password on the command line,
which is probably not what our users expect.

Change-Id: Ib563d542fee71c13ed23b1a99fbe06a7d4d4eadf
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2018-05-03 12:14:03 +00:00
Richard Moe Gustavsen da32360ffc macOS: ensure mouse events from the global monitor has the correct button set
The global monitor will be used when popup windows are visible to
catch all mouse events. But only certain kind of NSEvents has a
buttonNumber set to something useful. So we need to check for
this case before we create a QPA event.

Task-number: QTBUG-60887
Change-Id: I5631c76ae82b8bfd232642036a08b5a8a29491c7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-05-03 08:14:05 +00:00
Timo Aarnipuro cc812f516c Configure window manager to support RCar D3
Initialize the device earlier and enable the screen as well.
These changes are also compatible with the RCar H3.

Change-Id: I4a83dedc0eed9df181c32e60ebf3666824d2a6c6
Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-05-03 05:55:45 +00:00
Andy Shaw 3e001feb4d If the page size is not valid on the new printer, set a custom size
When the page size was not valid on the new printer, it would end up
having the wrong page size name on the new printer. What should happen
in this case is that it should set the originally set page size as a
custom page size on the printer instead.

Task-number: QTBUG-62221
Change-Id: Iaca34ae262f5d0685ca60e4ca4b38229a2283289
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2018-05-02 13:32:09 +00:00
James McDonnell 01c12a5c1a Feed external geometry changes to Qt
So that Qt responds correctly when window managers make geometry
changes.

Note: Older versions of screen, such as the screen from the QNX 6.6.0
4036 patch, don't produce SIZE/POSITION property events.

Change-Id: I7e1e5982a2cbd3f57d468b43869af8558c6d50e7
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-05-02 13:01:58 +00:00
James McDonnell 5ea238cda6 Add screenContext native property
Retrieving it via some other screen object can be painful especially
when there isn't a readily available screen object to use.

Change-Id: If13e808435ea6f2909d5b4c3c5c736950e00aa5a
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-05-02 13:01:39 +00:00
James McDonnell 8bcb8b069e Flush the initial clear blit with SCREEN_WAIT_IDLE
Without it, the clear runs asynchronously and screen may clear
pixels _after_ Qt updates them.

Change-Id: I0c0844676d8a4387439a2f818ee08942ccaf6b08
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-05-02 13:01:27 +00:00