Commit Graph

5839 Commits (6dc7e468dfd052dc4cf6187843bcb1a5b82ec6ff)

Author SHA1 Message Date
Laszlo Agocs 7980e92e89 eglfs: generate an expose whenever the geometry is changing
Relevant for QWidget apps with multiple top-level widgets. With real
windowing systems a resize will result in an expose. Follow suit.

Task-number: QTBUG-57747
Change-Id: I9c6e9fa5e073f85a695df07d63176b1d2d657f25
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-12-25 14:44:50 +00:00
Alexander Volkov 49f1b667fa platform plugins: Remove unused former overriders
They were implied to override QPlatformIntegrationPlugin::keys()
but it was removed before releasing Qt 5.0.

Change-Id: Ia1f1ad27b7511b1141887f5dcde0dadeb2e5cabf
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2016-12-22 23:02:45 +00:00
Allan Sandfeld Jensen 674430cea0 Silence maybe_uninitialized warning with gcc -Og
GCC produces false positives for maybe_uninitialized when compiling with
-Og in these three places. Simply initialize the variables to silence
it. This should be entirely cost-free for normal compilation.

Change-Id: Iab778a6ba25993f78f190e928c1fcc2dbd8b2fcd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-12-21 22:08:01 +00:00
Gabriel de Dietrich e1113cae98 QWindowsTheme: Run dedicated SHGetFileInfo() thread
The changes are motivated by the following reasons:

1. SHGetFileInfo() needs to be COM-intialized per thread.
   Microsoft's documentation for CoInitalizeEx() is quite
   unambiguous about this.

2. Following point 1, using a thread from the global thread
   pool means we would taint every such thread with the
   COM-initialization state. This may result in unexpected
   behavior in other parts of the application. Moreover,
   systematic COM-uninitialization can be expensive and
   can't be recommended in this case.

3. Even though the timeout duration is pretty generous, the
   logic is wrong and could lead to serious errors should
   the call to SHGetFileInfo() actually take too long. This
   is because we let the thread run with references to the
   main thread's stack, namely a reference to the file name
   string, and pointers to the result variable and SHFILEINFO
   struct.

Running a dedicated thread allows us to ensure points 1
and 2. Point 3 is ensured by making a local copy of the
file name and using local instances for the info struct
and the result. Then, provided the thread has not been
cancelled, we can copy the info and result values back
into the main thread's stack referenced memory areas.

This also removes all need for QWindowsThreadPoolRunner
which will remain in the code base nonetheless.

Change-Id: Ic9c2d6204ac015aa409db2b57a09837361203291
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2016-12-21 19:15:41 +00:00
Friedemann Kleint 68638efa29 Windows QPA: Initialize all members of QWindowsMouseHandler
Amends change 9ef93fa153.

Change-Id: I74dd4cb81e2830552d465a5e855c08fe798617f1
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-12-20 15:08:37 +00:00
Alexander Volkov de63bbd2f8 Add QPlatformTheme::standardButtonShortcut()
It allows to set shortcuts for the standard buttons in
QDialogButtonBox.

Restore Qt4's behavior for the "Don't Save" button on macOS
by setting a shortcut for it (it was Cmd-D before Lion,
now it's Cmd-Delete).

Change-Id: I6b56f68f37670962178693a8983d9fe550540856
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-12-19 11:02:01 +00:00
Thiago Macieira c7b0f56fb1 Fix build on Windows: winsock2.h requires WIN32_LEAN_AND_MEAN
This is required for the next commit.

Change-Id: I73fa1e59a4844c43a109fffd148c8c3e3a100c79
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-17 04:11:10 +00:00
Liang Qi b131503361 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	configure
	configure.pri
	examples/widgets/painting/fontsampler/mainwindow.cpp
	examples/widgets/painting/fontsampler/mainwindow.h
	mkspecs/features/moc.prf
	src/corelib/global/qglobal.h
	src/gui/text/qtextdocument.cpp

Change-Id: Ica65512e00871695190a14ccea5c275b0165f787
2016-12-16 16:38:33 +01:00
Liang Qi 9bfe3ab71e Merge remote-tracking branch 'origin/5.8.0' into 5.8
Conflicts:
	doc/global/qt-cpp-defines.qdocconf
	src/plugins/platforms/android/qandroidplatformopenglcontext.h
	src/plugins/platforms/android/qandroidplatformtheme.h

Change-Id: I13d51cc66f708138ff4d667ceea7d515992e58a4
2016-12-16 09:45:16 +01:00
Oswald Buddenhagen 21f283b0f0 fix directfb build without EGL
Task-number: QTBUG-57176
Change-Id: I174828e0657e244b060df6223650091a06ecd980
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-16 04:06:58 +00:00
Gabriel de Dietrich 2a44f81fe7 QCocoMenu: Fix patch b2f78b796b
A null pointer check was accidentally removed while
refactoring the code.

Change-Id: I547936671bd134bb7df710a4b123a0d731076bf2
Task-number: QTCREATORBUG-17438
Task-number: QTBUG-57404
Task-number: QTBUG-57657
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-12-16 04:06:39 +00:00
Gabriel de Dietrich 66c2b87547 Add platform font database support to 'minimal' QPA plugin
This commit extends 060e0f6628 by loading
the platform font database if there's any. Note that this
happens at compile time and depends on QtFontDatabaseSupport.

Change-Id: Id073fd949765d9439bbb3f66187b15de444d535f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-15 20:58:46 +00:00
Aleksey Lysenko 28dffdecda Delete aborted QDrag
Aborted QDrag object has never been removed, moreover there was no way
to know a previous drag-and-drop operation status

Task-number: QTBUG-53990
Change-Id: I2b6a7aad86d94b9d5083f9799fe54752c251660b
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-12-15 19:22:53 +00:00
Andy Nichols 9d8db91ada Android: Enable Adoption of ANativeWindow handle as a QOffscreenSurface
This is done by adding an API to QOffscreenSurface to enable setting a
native handle which can represent a native offscreen surface.  When
using the TexureView it is necessary to render to SurfaceTexture objects
which are exposed as offscreen window surfaces.  After wraping a
SurfaceTexture in a android.view.Surface object and passing it to C++
via the JNI, it is possible to get the needed ANativeWindow* handle
required to pass to eglCreateWindowSurface. So by setting this native
handle Qt can then render to this "native" offscreen surface.

Change-Id: If7fc5ac7ac588fe6c3a6fb883ea7e439d095470f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-12-14 15:51:23 +00:00
Christian Strømme 87e553b58a Android: Fix the bearer management plugin when running as a service
Since Qt for Android now supports running as a service, we shouldn't
use the activity context unconditionally, but instead query the current
context from QtAndroidPrivate::context().

Change-Id: Ib793ba890fdbfc0cfe7b20115e41ff64cc73477a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-12-14 15:08:11 +00:00
Friedemann Kleint 1d68e3386d eglfs/deviceintegration: Ensure eglfs_kms_support is added only once
Use qmake operator *= to prevent adding it multiple times resulting
in warnings on Linux/Desktop:

Makefile:114: warning: overriding recipe for target 'sub-eglfs_kms_support-qmake_all'
Makefile:64: warning: ignoring old recipe for target 'sub-eglfs_kms_support-qmake_all'
Makefile:118: warning: overriding recipe for target 'sub-eglfs_kms_support'
...

Change-Id: I18a926c9faeb8f9eafea5223d32c526c06c43724
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-14 13:06:41 +00:00
Paul Olav Tvete c0842aceaf Make size grip work with high dpi scaling
Task-number: QTBUG-53389
Change-Id: I6e922f0555ae296f3152d4df2598534fa73fb584
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-13 14:48:30 +00:00
Liang Qi 6755ec891a Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	configure
	qmake/Makefile.unix.macos
	qmake/Makefile.unix.win32
	qmake/generators/win32/msvc_vcproj.cpp
	src/3rdparty/pcre/qt_attribution.json
	src/corelib/io/qsettings.cpp
	src/corelib/kernel/qdeadlinetimer.cpp
	src/platformsupport/kmsconvenience/qkmsdevice.cpp
	src/platformsupport/kmsconvenience/qkmsdevice_p.h
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.cpp
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h
	tests/manual/qstorageinfo/printvolumes.cpp
	tools/configure/configureapp.cpp

Change-Id: Ibaabcc8e965c44926f9fb018466e8b132b8df49e
2016-12-13 09:39:20 +01:00
BogDan Vatra 36e4b13e29 Android: fix (partially) text deletion when the cursor is moved
- wait until the handle location changes the cursor position
- don't update cursor position if:
 * a batchEdit is in progress
 * the UpdateSelection is blocked
- finish the composing before update the cursor
- add the missing .java files

There are still corner situations when the text gets deleted/moved, but
those are pretty rare and they will be fix in another patch.

Task-number: QTBUG-57507
Change-Id: I230d7f64625fb556e1be3069694a71e9bc91323a
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2016-12-13 05:14:40 +00:00
Dmitry Shachnev 57b0f54bb6 GTK+ theme: Map some GtkSettings properties to QPlatformTheme hints
Change-Id: If2525e7db0fa496805901174e62f382dd97b2846
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-12 13:51:29 +00:00
Anton Kudryavtsev 87fefbc08e Plugins: use QStringBuilder more
Change-Id: I6f026b81fdc403d99d37dfa22ea6a27a95ead347
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-12-12 11:02:59 +00:00
Alexander Volkov a76579d956 Android: Add missing override
Change-Id: I70b802517d8f7d129ffb71dc3e92cb2458a55acc
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
(cherry picked from commit e3ad43843a)
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-12-09 18:23:26 +00:00
BogDan Vatra 2d1378836c Android: remove unused variable
Fix compilation with -Werror

Change-Id: Iae6068f9eeb92dd1a96b11f6bb7017b97a8486fb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-12-09 18:23:19 +00:00
Laszlo Agocs 8005e0652c QAndroidPlatformOpenGLContext: fix adopting of existing native contexts
Change-Id: I854bbc511d89578c6a893015b21358f08ed8f5a6
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-12-09 06:31:31 +00:00
J-P Nurmi 84ea00d470 QGtk3Dialog: don't crash on Wayland
Check if it's an X11 window before calling XSetTransientForHint().
No transient parent will be set for GTK+ dialogs on Wayland. That
has to be implemented separately.

Task-number: QTBUG-55583
Change-Id: Iabc2a72681c8157bb2f2fe500892853aa397106b
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-09 05:16:35 +00:00
Morten Johan Sørvig 2c9dc93696 Cocoa: Unbreak app activation on macOS Sierra
Previously, we would activate the application during
QCocoaIntegration construction, which means at QApplication
creation time. This now seems to interfere with application
startup on macOS Sierra, where the application window
ends up in an unfocused state.

Move application activation to applicationDidFinishLaunching,
at which point the Cocoa runtime should be completely
initialized. Do this for 10.12+ only to avoid regressions/
test failures on previous versions.

Change-Id: Ic5f150d53f06a302b53a3ba86a4a9b18bb2a1783
Task-number: QTBUG-57044
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2016-12-08 23:50:52 +00:00
Alexander Volkov 2488f34ecf xcb: Adapt QXcbWindow::startSystemResize() for touch events
Window managers typically grab the pointer after receiving
the _NET_WM_MOVERESIZE event. But they fail to do it for
touch sequences which have a receiver. So we should reject
the touch sequence before sending _NET_WM_MOVERESIZE event.

QSizeGrip calls startSystemResize() on MouseButtonPress event
which is synthesized by Qt on TouchBegin. We can find the id
of the touch point by comparing coordinates of the synthesized
MouseButtonPress event with coordinates of all TouchBegin events.
Then we use this id to reject the touch sequence (it's possible
only after receiving XI_TouchUpdate).

Change-Id: I26519840cd221e28b0be7854e4617c9aba4b0817
Task-number: QTBUG-51385
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-08 12:41:04 +00:00
Alexander Volkov 6604d79a21 Windows: Replace Q_DECL_OVERRIDE by override
We can use 'override' directly since Qt 5.7.
Also remove redundant 'virtual'.

Change-Id: Ib478f19381d53642e1ed1c2a589d6b9c4d663e3c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-08 11:03:46 +00:00
Maurice Kalinowski 181860e1af winrt: Fix input grabbing
Beside its usage in widgets, mouse grabs are required for QML menus to
work.

Task-number: QTBUG-57079
Change-Id: I306cb68624186da69725470e147bc7b979dac8e4
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-12-08 10:08:53 +00:00
Liang Qi cae32bd04d Merge remote-tracking branch 'origin/5.7' into 5.8.0
Change-Id: I576187a9905802c177ae483e6c29d0f55cf7034d
2016-12-08 08:20:36 +01:00
Gabriel de Dietrich 093e1111ef QCocoaMenu: Don't rely on tags when we can get the actual NSMenuItem
-[NSMenu itemWithTag:] clearly states that it'll return the first
item with that tag. Furthermore, when and item has been synced more
than once, it could be that more than one such item exists in the
same menu (e.g. lately changing the role of Edit->Copy).

Change-Id: I95a4f0a151659ae273ba03a3cab4a720b781fc3a
Task-number: QTBUG-57404
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-12-08 05:09:14 +00:00
Gabriel de Dietrich b2f78b796b QCocoaMenu: Avoid exception when inserting item already in this menu
This should not happen, but it's clearly not the user's fault.
So we should try to carry on as gracefully as possible instead
of letting Cocoa abort the application.

The patch also factors the repeated calls to QCocoaMenuItem::
nsItem() in QCocoaMenu::insertNative() and improves a warning
from QCocoaMenuIten::sync().

Change-Id: Id00135c219aaf40fb565b19a65cab68f6d9863b2
Task-number: QTBUG-57404
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2016-12-08 05:09:07 +00:00
Alexander Volkov 964d9e8f8a eglfs: Replace Q_DECL_OVERRIDE by override
We can use 'override' directly since Qt 5.7.
Also remove redundant 'virtual'.

Change-Id: I4c1d5d8a69bf51a7f31077f7cdc74ba06da0bc11
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-07 19:12:08 +00:00
Alexander Volkov 86ccc84357 eglfs: Add missing override
Change-Id: I257cfb29b919de5d4876d39e0512815c6ed24a88
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-07 15:42:31 +00:00
Laszlo Agocs f30b888465 eglfs: allow forcing an overlay plane
Add a QT_QPA_EGLFS_KMS_PLANE_INDEX environment variable that applies
both to the GBM and EGLDevice backends. When set to a value between 0 and
the number of planes on the connector - 1, the chosen overlay plane will
be used for output, meaning there will be a drmModeSetPlane to configure,
and, in case of EGLDevice, the plane's corresponding EGL layer will get
chosen instead of the CRTC's.

Task-number: QTBUG-57386
Change-Id: I12c89472ea5730987052f39211fadc597d1302ef
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
2016-12-03 00:06:21 +00:00
Laszlo Agocs 8d0854c2bd eglfs: allow forcing an explicit connector index on DRM/KMS
Add a QT_QPA_EGLFS_KMS_CONNECTOR_INDEX environment variable that applies
both to the GBM and EGLDevice backends. Instead of specifying all
uninteresting outputs as "off" in the config file in QT_QPA_EGLFS_KMS_CONFIG,
this variable provides a shortcut to force one single connector and ignore
all others in embedded systems with a fixed connector configuration. The index
must be between 0 and DRM connector count - 1.

Task-number: QTBUG-57386
Change-Id: I3f9562f48bf6b2ffaf9a0cc232e09a7e0c15645b
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
2016-12-03 00:06:18 +00:00
Laszlo Agocs 09d481987b eglfs: improve EGLStream logging
Make it possible to identify from the logs that QT_QPA_EGLFS_LAYER_INDEX
was set, in order to help troubleshooting.

Change-Id: Ic22825e5df9f0eeb31f817f398b9f6c000c3a00f
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
2016-12-03 00:06:14 +00:00
Laszlo Agocs 1670bc751e eglfs: make it possible to configure the EGLStream FIFO length
Setting QT_QPA_EGLFS_STREAM_FIFO_LENGTH to a >= 1 value changes from
mailbox to FIFO mode, with the specified length.

[ChangeLog][Platform Specific Changes][Linux] Added an option to switch
from mailbox to FIFO mode in eglfs' EGLStream backend. This is done by
setting the environment variable QT_QPA_EGLFS_STREAM_FIFO_LENGTH to a
>= 1 value, the desired length of the FIFO queue.

Change-Id: Ib98e2ff805f8c00ca2e224d1db5b9c1b2c9a04f0
Done-with: Pasi Petajajarvi <pasi.petajajarvi@theqtcompany.com>
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
2016-12-01 12:38:21 +00:00
Alexander Volkov 65d4880877 xcb: Remove unused QXcbGlIntegrationFactory::keys()
This static method was introduced in
8758f532ae
and was unused even then.

Change-Id: Id0d409b7fade977bbbabfcdee0c432b7058f8ace
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-01 12:07:49 +00:00
Alexander Volkov 15b0b3db29 xcb: Replace Q_DECL_OVERRIDE by override
We can use 'override' directly since Qt 5.7.
Also remove redundant 'virtual' keywords.

Change-Id: Ia40be0e1e60e51f9d043ab575fd6b9305ea620b0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-01 12:07:28 +00:00
Friedemann Kleint 9ef93fa153 Windows QPA plugin: Use member initialization
Use C++ 11 member initialization in value-type structs.

Task-number: QTBUG-51673
Change-Id: I668389b4a0ad1d862a505b740d67357cb9c2a3dc
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-30 14:45:17 +00:00
Friedemann Kleint 448790eaed Windows QPA: Fix build with MSVC2015 on Windows 7
The installation uses SDK 8.1 which does not have the required
include files. Add a check depending on NTDDI_VERSION.

Change-Id: I6323496aed2a2d6e22d41ec14bdf8c6cf1bf2f31
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-30 12:51:38 +00:00
Alexander Volkov 1a0e690d50 winrt: Add missing override
Change-Id: I2f257756bc606f8eb5cad2afe67b90810a2e394c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-30 10:52:18 +00:00
Alexander Volkov aac3a4c032 winrt: Replace Q_DECL_OVERRIDE by override
We can use 'override' keyword directly since Qt 5.7.

Change-Id: I31127478a0a96798a4e018d9996842204e307552
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-30 10:51:36 +00:00
Alexander Volkov 5a1ff37485 QNX: Add missing override
Change-Id: Idb6216a645f7c9791674d16665331a63da46b132
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
2016-11-29 21:44:04 +00:00
Alexander Volkov 4c375f75e0 Android: Use override instead of Q_DECL_OVERRIDE
... for consistency.

Change-Id: I37afaff6f7512a1cd09f0f31996b9bedc6cb3bab
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-11-29 15:42:14 +00:00
Alexander Volkov e3ad43843a Android: Add missing override
Change-Id: I70b802517d8f7d129ffb71dc3e92cb2458a55acc
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-11-29 15:29:28 +00:00
Andy Nichols 26e2c6b74f eglfs: Add device integration for Qt Simulator for Embedded Linux
To support multiple displays in the emulator, it is necessary that an
additional EGLFS device integration be added to query information about
the available screens, and to help associate a window surface with a
screen.

Change-Id: I852c27bd66f5f32a92c4ff876838ac2f6fbde86a
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-25 16:26:13 +00:00
Liang Qi bce25a6340 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	src/gui/painting/qcoregraphics.mm
	src/gui/painting/qcoregraphics_p.h
	src/plugins/platforms/cocoa/qcocoahelpers.h
	src/plugins/platforms/cocoa/qcocoahelpers.mm

Change-Id: Ibe5efcae73526b3d3931ed22730b13d372dcf54e
2016-11-25 14:41:29 +01:00
Friedemann Kleint 7cdc6c9942 qwindowsnativeinterface.cpp: Add missing enumeration OpenVGSurface
Fixes MinGW developer build:
qwindowsnativeinterface.cpp: In member function 'virtual void* QWindowsNativeInterface::nativeResourceForWindow(const QByteArray&, QWindow*)':
qwindowsnativeinterface.cpp💯12: error: enumeration value 'OpenVGSurface' not handled in switch [-Werror=switch]
     switch (window->surfaceType()) {            ^
cc1plus.exe: all warnings being treated as errors

Amends change dafd0955c6.

Change-Id: I43f7148281fcf47613958427e25a784f42920806
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-25 11:33:21 +00:00
Liang Qi 50aeedd86c Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	mkspecs/features/qml_module.prf
	src/corelib/tools/qdatetimeparser_p.h

Change-Id: I5382cee3ddb33107dc61ee20f7a9188c4a68a882
2016-11-25 10:32:29 +01:00
Kai Koehne 600c5a7e1b Document third-party code in Cocoa QPA plugin
Change-Id: I2c30f5da25c83d6129403cb9b745a2f17fd6fd9e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-11-25 08:11:28 +00:00
Laszlo Agocs 1f81ba45ee linuxfb: add experimental support for DRM dumb buffers
Add a QFbScreen implementation that uses DRM dumb buffers and page
flipping, thus implementing a vsynced, double (triple) buffered plain
software platform plugin. Besides better supporting systems that by
now only do fbdev via (possibly buggy) emulation, this can also be an
enabler for implementing certain types of 2D accelerated compositors
e.g. for Wayland.

Enable with QT_QPA_FB_DRM=1. Right now there is no good way to
autodetect the support for dumb buffers early enough so the default is
always the traditional fbdev path.

Long-term this will also enable proper multi-display support like with
eglfs' DRM backends. Multiple QScreens are not yet reported currently
due to the single-screen limitations of fbconvenience.

The generic DRM code is shared with eglfs, meaning configuration
happens via the JSON file specified in QT_QPA_(EGLFS_)KMS_CONFIG. This
allows changing the screen resolution, disabling outputs, etc.

[ChangeLog][Platform Specific Changes][linuxfb] Added experimental
support for DRM dumb buffers. Enable by setting the environment
variable QT_QPA_FB_DRM to 1.

Task-number: QTBUG-56306
Change-Id: I4bdcf16fff67412183220dffa0c4ea235c5cad3d
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-24 12:08:21 +00:00
Laszlo Agocs 85f868e73e Add an OpenGL program binary disk cache
Introduce a glProgramBinary-based disk cache in QOpenGLShaderProgram.

By switching the typical

program->addShaderFromSourceCode(QOpenGLShader::Vertex, ...)
program->addShaderFromSourceCode(QOpenGLShader::Fragment, ...)

invocations to

program->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, ...)
program->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, ...)

the compilation may be skipped via gl(Get)ProgramBinary and a disk
cache, when supported.  Such QOpenGLShaderProgram instances will have
no QOpenGLShader instances attached. Instead, the entire program
binary (which is driver-specific) is loaded as-is.

Support means OpenGL ES 3.0 or the presence of
GL_ARB_get_program_binary, in combination with >= 1 supported binary
formats. Note that some drivers claim program binary support but
expose no formats. This amounts to no support in practice.

When support is not present, calling the new functions is equivalent
to the non-cacheable variants. If the OpenGL driver changes (vendor,
renderer, version strings), recompilation and storage of the new,
potentially incompatible binary program will happen transparently.

The cache can always be disabled by setting
QT_DISABLE_SHADER_DISK_CACHE=1 or the new application attribute
Qt::AA_DisableShaderDiskCache.

Location-wise the primary choice is the shared cache
(GenericCacheLocation). If this is not available or is not writable,
the per-process one (CacheLocation) is used instead.

In addition to the new public APIs in QOpenGLShaderProgram, the main
shader users in QtGui are migrated as well. (OpenGL paint engine,
glyph cache, blitter, eglfs mouse cursor).  This means that any
application using QPainter on OpenGL or widgets with eglfs will
benefit from the improved startup times. Qt Quick will follow suit as
well.

[ChangeLog][QtGui][OpenGL] QOpenGLShaderProgram offers a built-in
program binary disk cache for systems with OpenGL ES 3.x or
GL_ARB_get_program_binary. This can lead to significant increases in
performance when it comes to application startup times for
example. Usage is opt-in for direct C++ users of the class, however
Qt's own main users of shaders, including Qt Quick and QPainter's
OpenGL engine, are migrated to use the new, cache-enabled APIs.
Opting out on application level is always possible via
Qt::AA_DisableShaderDiskCache.

Task-number: QTBUG-55496
Change-Id: I556f053d258bfa6887b1d5238c9f6396914c5421
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-24 10:27:16 +00:00
Liang Qi 4783de0473 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	src/network/socket/qnativesocketengine_winrt.cpp
	tools/configure/configureapp.cpp
	tools/configure/environment.cpp

Change-Id: Ieae6f2ee004a87f041751852b687484f91ee4480
2016-11-24 10:31:21 +01:00
Tor Arne Vestbø 2a151bbe49 macOS: Remove unused method QCocoaWindow::parentCocoaWindow()
Last used in 2011, to determine QCocoaWindow::globalGeometry(),
which probably shouldn't have used transientParent in the first
place.

The parent is available through casting QPlatformWindow::parent().

Change-Id: I93fbcb41765944fbe0b79981ccf7d0062bb57719
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-11-23 22:40:52 +00:00
Friedemann Kleint 389b4ec28b Windows QPA: Do not send key events for mouse-synthesized app commands
Sending key events in addition causes applications to respond
twice to for example the back / forward extra mouse buttons.
Suppress the keypress by checking on the device. This is in
line with the other platforms, which do not send keypresses
either.
Native event filters will still be able to listen for
WM_APPCOMMAND.

Task-number: QTBUG-48117
Task-number: QTBUG-57198
Change-Id: I219e17244087663f06ab2c5a8cf4b880c3655700
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2016-11-23 12:41:19 +00:00
Allan Sandfeld Jensen 9204b8c31e Register fonts with preferred names on Windows
Looks up the canonical names of enumerated fonts and register them under
their preferred names if present.

Also changes the logic handling registration of english aliases, so it
is always done, even if it might in rare cases cause a double
registration since that is safe.

Task-number: QTBUG-53458
Change-Id: Ia010774b26072192b55697b717cc37442c852881
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-11-23 10:04:47 +00:00
Liang Qi 38c1057f69 Merge remote-tracking branch 'origin/5.6' into 5.7
This also reverts commit 0d2f0164f4.

Conflicts:
	header.BSD-NEW
	qmake/Makefile.win32
	src/openglextensions/qopenglextensions.cpp
	src/openglextensions/qopenglextensions.h
	src/winmain/qtmain_win.cpp
	src/winmain/qtmain_winrt.cpp
	tools/configure/configureapp.cpp
	util/glgen/qopenglextensions.cpp.header
	util/glgen/qopenglextensions.h.header

Change-Id: If26c6f4111b342378dd88bbdc657e322d2ab6ad8
2016-11-23 09:24:36 +01:00
Andy Shaw d8857f21ac If there are no available sizes, then fallback to the requested size
In a case like the SVG iconengine there is no available sizes
implementation. However in that case we don't need to provide different
sizes as we can have SVG scale it for us to the one requested. So it is
assumed that with no available sizes implementation that the icon
engine will take care of this for us.

This ensures that SVG files can be used as icons inside the menu on
macOS.

Task-number: QTBUG-40225
Task-number: QTBUG-55932
Change-Id: If01ca582c4c07834e6de16652924e0b7e118c87c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-23 06:58:05 +00:00
Friedemann Kleint e8ecde99df Windows QPA: Use new EnableNonClientDpiScaling() for Windows decoration
Use newly introduced EnableNonClientDpiScaling() function to fix
the decoration having the wrong size in multimonitor setups with
per-monitor DPI awareness.

Task-number: QTBUG-53255
Change-Id: Ic6e2f2a92f790259107d2a0837b96177cf3adb5f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-22 18:55:19 +00:00
Laszlo Agocs cff48c7845 eglfs: Avoid unexpectedly flushing QPA input events
Flushing all events to ensure that the expose (or other queued events) get
processed right away is dangerous. Instead, pass ExcludeUserInputEvents like
many other platform plugins do. This way queued input events do not get
processed at an unexpected point in time and so do not interfere with modal
dialogs for instance.

Task-number: QTBUG-57229
Change-Id: I9da09e62627d26485fb5a37fc190cb4a4bcb28b6
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-22 12:25:37 +00:00
Friedemann Kleint d377f14fd5 Windows QPA: Detect Windows 10 tablet mode
Add new file for dynamically loading Window 10 Helpers via combase.dll
and add function qt_windowsIsTabletMode() querying
UIViewSettings::get_UserInteractionMode() for "Touch" mode.

The style hint QPlatformIntegration::ShowIsMaximized will then
reflect the tablet mode setting.

Task-number: QTBUG-56831
Change-Id: Ia361dd172fcf0e54fdfc70863c43527f3ea72fe2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-22 11:49:30 +00:00
Tor Arne Vestbø a01f2112f4 macOS: Prevent stale references to NSScreen during screen removal
Task-number: QTBUG-57223
Change-Id: I7cdc075a4afee5ad8c23fd3c43a04f2a258b81f9
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2016-11-22 05:06:00 +00:00
Peter Seiderer f1b4bd4790 eglfs: fix eglfs_mali compile for odroid-mali
Avoid duplicated struct fbdev_window definition (introduced by commit
58bed4cda9) by renaming the local
shadow definition to struct shadow_fbdev_window.

Task-number: QTBUG-57156
Change-Id: I72b03f09fc57ddcd0284d6d3554a5658e02b80fc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Julien Corjon <corjon.j@ecagroup.com>
2016-11-19 21:25:52 +00:00
Friedemann Kleint 3035400f36 Windows QPA: Reimplement calculation of window frames
Instead of relying on AdjustWindowRectEx() and dirty-handling,
capture the rectangles before and after the processing of
WM_NCCALCSIZE and calculate the frame from that. This allows
for changing window frames by handling WM_NCCALCSIZE and
monitor-dependent window frames when using High DPI scaling.

Task-number: QTBUG-53255
Task-number: QTBUG-40578
Task-number: QTBUG-56591
Change-Id: If8364a5440a6324ea5d470bf5b74e68942285abe
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-18 14:04:08 +00:00
Liang Qi 3a0764d625 Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2016-11-18 08:01:52 +00:00
Andy Nichols dafd0955c6 Enable support for OpenVG
This commit re-enables support for OpenVG in Qt, but not in the
same way as in Qt 4.8.  The first part is about adding a test
and using the new configure system to enable OpenVG.

There is still support code in Qt for setting up EGL to provide a
surface and context for rendering with the OpenVG API, this commit
enables a path to do so.

Normally to get access to an EGLContext from a QWindow you do so via
QOpenGLContext, but in setups without OpenGL but with EGL and OpenVG
this doesn't make sense (there would be no QOpenGLContext). So the
intended way is to use a QWindow to get an EGLSurface, then create
an EGLContext directly (without going through QPA).

Change-Id: I0f75aadbaa3cd006deb7e6fd12cfbb574870fba4
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-17 15:00:00 +00:00
Andy Nichols 1b905b3fa4 Enable building EGLFS and MinimalEGL with QT_NO_OPENGL
It is possible to have support for EGL without having support for OpenGL
for example with OpenVG. Unfortanately many features of EGLFS require
OpenGL (Cursor, MultiWindow, QEGLPlatformContext, QBackingStore), so the
plugins become pretty useless on their own.  This is necessary if you
still want to use Qt as a method to provide an EGL surface to render to
via QWindow.  This is the method by which Qt Quick uses OpenVG to render
its content when available.

Change-Id: I34973b21bf1932865950ce6a78b71b3a29360d65
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-17 14:59:47 +00:00
Liang Qi e5ac4afbf9 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	mkspecs/features/mac/default_post.prf
	mkspecs/features/uikit/default_post.prf

Change-Id: I2a6f783451f2ac9eb4c1a050f605435d2dacf218
2016-11-17 14:43:26 +01:00
Gabriel de Dietrich e8a41ed866 QCocoaMenu: Force NSMenuValidation when syncing items
When a menu item's enabled state changes after
-[QCocoaMenuDelegate menuWillOpen:] is invoked, i.e.,
during or after QMenu::aboutToShow() is emitted, that
state change may not be taken into account. This is
because the automatic menu validation, upon which Qt
relies, is not made aware of any such change.

By calling -[NSMenu update] when syncing the QPA menu
item, we induce Cocoa to invoke -[QCocoaMenuDelegate
validateMenuItem:] and ensure that previously synced
items, whose state may have changed, will be properly
updated. This, however, has a small side effect, namely
that menu-holding items will also go through the automatic
menu enabling path and may appear disabled since, until
now, they were not properly configured. In order to solve
this, we set the action on those items as well, and make
sure that both of QCocoaMenuDelegate's relevant methods,
validateMenuItem: and itemFired:, properly process
menu-holding items.

Menurama manual test updated accordingly.

Change-Id: I62f955538b8be09b8494ea0ce87fca7910148d38
Task-number: QTBUG-56850
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-16 14:23:49 +00:00
Maurice Kalinowski 3e5e2cd3bd winrt: Do not shadow variable
Change-Id: I70fc9254bfdfe42bf0e8d379537eb60b21be8275
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:21 +00:00
Maurice Kalinowski 7912ac5d67 winrt: move to range based loop
Change-Id: I0694adcff9b591eecf1025074e8b1c478484bd74
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:16 +00:00
Maurice Kalinowski 3e3b22adeb winrt: Fix ill-constructed loop
That loop could never have worked properly.
Identified by analyze compile switch.

Change-Id: I5e987dc9f5c57d3ffbcf054b7b417b506c02e7e1
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:11 +00:00
Liang Qi b39adf8945 Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8 2016-11-16 13:54:01 +00:00
Liang Qi 90c425642d Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	mkspecs/common/linux-android.conf
	src/gui/opengl/qopengl.h
	src/network/socket/qnativesocketengine_winrt.cpp
	src/network/socket/qnativesocketengine_winrt_p.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	sync.profile

Change-Id: If70aaf2c49df91157b864cf0d7d9513546c9bec4
2016-11-16 12:35:36 +01:00
Laszlo Agocs d92e984cb7 fb platforms: migrate to fbconvenience changes
Task-number: QTBUG-56306
Change-Id: Ia0f48e139ba2c1f8f2167afa145d808093cd3e83
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-16 10:44:13 +00:00
Laszlo Agocs 2e70a86900 Move DRM/KMS code from eglfs into kmsconvenience
The generic DRM code, not involving any GBM or EGLDevice stuff, can
now be reused in components outside eglfs, for example linuxfb in
order to get support for DRM dumb buffers.

Task-number: QTBUG-56306
Change-Id: If7dffdb2415489dbc6470782fa76efcaeccf01c7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-16 10:43:53 +00:00
Gabriel de Dietrich 27aeeac6ee Cocoa Dialog Helpers: Refactor OK-Cancel buttons view
Since virtually all the logic is shared between QNSColorPanelDelegate
and QNSFontPanelDelegate, we extract the added buttons and
layouting logic and move it into its own class. This requires
the two afore mentioned Objective C classes to satisfy the
QNSPanelDelegate protocol.

Change-Id: Ie26e758f5db71920896d930a4f3644b51a1ce3fa
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-16 05:19:44 +00:00
Oswald Buddenhagen e71cf69217 fix directfb build
60985aa42 converted the QT_CONFIG use, not taking into account that the
feature isn't actually known to the configure system - it's coming
directly from the makespec. so revert that hunk (until we have a better
integration between makespecs and configure).

Task-number: QTBUG-57039
Change-Id: Iaf57b5f5339250055f1c378e091da3ab3fcd4292
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-15 22:43:19 +00:00
Gabriel de Dietrich 25e67bcaca Cocoa: Force sending key equivalent up events
Cocoa is known for not sending key up events for key equivalents,
regardless of whether it's an actual recognized key equivalent.
Notice that only Cmd-based shortcuts suffer from this feature.

We decide to force fate and forward the key event to the key
(focus) window. However, non-Qt windows will not (and should not)
get any special treatment, only QWindow-owned NSWindows. Since we
know that Cocoa will not send it to the key window, we can safely
forward it and ensure no duplicated key events.

Change-Id: I0449f7f5195a327eef6d792bd441fc3fd0882db1
Task-number: QTBUG-36839
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-15 21:05:41 +00:00
Lars Knoll 71d21ed500 Fix image format conversion
QImage::convertToFormat() returns the converted image.

Change-Id: Icfd3ff43e04939e6b92c7fa94e5e0af60f633385
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-15 14:00:11 +00:00
Liang Qi 9808b53fde Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	configure
	src/plugins/platforms/eglfs/qeglfsintegration.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp

Change-Id: Id2da7c775439adb62646d5b741ee7c638042b34b
2016-11-15 09:58:16 +01:00
Friedemann Kleint 62750a7dc0 Windows QPA: Improve some debug operators
Add WINDOWPOS, fix RECT and NCCALCSIZE_PARAMS to be in
the Qt style.

Change-Id: I0a0a960115d704cf704df85597ce0940bd8d7211
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-15 07:50:29 +00:00
Morten Johan Sørvig 246fe27187 Cocoa: Make dictation via speech recognition work
Returning NSNotFound from the NSTextInputClient selectedRange
implementation when there is no selection prevents
dictation from activating (for unknown reasons).

Return an empty {0, 0} range instead. Text input
methods such as Pinyin still work after this change.

[ChangeLog][macOS] Speech to text dictation now works
for Qt text input.

Change-Id: Ibf1729bdd271e8ed5ce3c9d2a0373c8ab3613d8e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-14 20:59:51 +00:00
Palo Kisa 291eba6f80 QClipboard: Fix emitting changed() in XCB
In XCB environment the QClipboard::changed() was not delivered if the
QClipboard::clear() was issued by other Qt app/process.

If the QClipboard::clear() is used, then the owner in
xcb_xfixes_selection_notify_event_t is XCB_NONE, so we need make the
decission to handle this event by the selection_timestamp and our
m_timestamp[mode].

Task-number: QTBUG-56972
Change-Id: If4c486ac02223eac506465cac7ff1a07bd02a187
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-14 19:54:58 +00:00
Oliver Wolff c214379156 winrt: Fix definition of GL_GLEXT_PROTOTYPES in qwinrtbackingstore
We have to make sure that GL_GLEXT_RPOTOTYPES is defined when
qplatformbackingstore.h is included. Without the definition
glBlitFramebufferANGLE will not be set and compilation might fail.

Task-number: QTBUG-57083
Change-Id: I4cacaf4c2851913b3437ebd1f0f2956d0f400553
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-14 10:57:58 +00:00
Laszlo Agocs 3c2cb87de2 xcb: Warn and bail out when even the basic, dummy context fails
Do not move on to glGet since the behavior is undefined.

Task-number: QTBUG-48986
Change-Id: Ifd279635ed1b8441f92697965d15ae3ecb59a7e3
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-10 12:16:25 +00:00
Laszlo Agocs 5fcda45872 Do not guard tslib with evdev
That relation is incorrect. We can have tslib support without evdev.

Task-number: QTBUG-54998
Change-Id: I2c09bad73210fa4a13000077480c70365d482e2e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2016-11-10 09:11:21 +00:00
Gabriel de Dietrich a192ee0c37 Move WinRT font database to QtFontDatabaseSupport
Similar to what we recently did with the Windows font databases.

The goal, again, is to add platform font database support for the
minimal QPA plugin.

Change-Id: Ide5f4ec452c920f169cc31c617cbcf19d8d1764d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-09 23:47:45 +00:00
Oswald Buddenhagen 95b506cccd fix build with -qt-xcb
the include path must be absolute, as otherwise the external module pri
will contain a bogus path.

amends 9a088e78.

Task-number: QTBUG-56934
Change-Id: I701f5778d8c1b5586310b08e7763858460455d63
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-11-09 18:45:53 +00:00
Laszlo Agocs be17ca27f6 linuxfb: Make first window fullscreen like eglfs
...unless the legacy behavior is requested via
QT_QPA_FB_FORCE_FULLSCREEN=0 or the platform plugin overrides
QFbScreen::flags() to return QFbScreen::DontForceFirstWindowToFullScreen.

The long pending asymmetry between eglfs and linuxfb is going to end
because with the increased focus on the integrated Qt Quick Software
backend the expectation for launching apps with -platform linuxfb is
to behave in the normal, eglfs style, embedded manner. Forcing every
app to handle this manually in QML is silly.

Widget applications also benefit since the old non-fullscreen main
window approach is pretty much never what is wanted (considering there
is no desktop and the content in the background is either garbage or
whatever was on the terminal).

However, not every fbconvenience-based platform wants this. For
example, vnc should remain with the old way where window sizes are not
altered.  vnc therefore opts out via QFbScreen::flags().

bsdfb follows the linuxfb behavior.

[ChangeLog][Important Behavior Changes] The linuxfb and bsdfb platform
plugins now follow the behavior of eglfs by making the first window
fullscreen. This provides consistency and avoids applications having
to make their windows match the screen size manually. The new behavior
can be disabled by setting the environment variable
QT_QPA_FB_FORCE_FULLSCREEN=0.

Task-number: QTBUG-48658
Task-number: QTBUG-56306
Change-Id: I63d917147ce37205e29cbd0c6f37f35c46d4509c
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2016-11-09 13:57:58 +00:00
Maurice Kalinowski 7d3b291c22 winrt: Switch default screen image format
No need to specify a format with alpha for the screen. Comparing to
Windows, Format_ARGB32_Premultiplied was only set in the constructor,
but never actually during runtime as detection enforces eith RGB32 or
RGB16.

Change-Id: I4c2fabbab0d14ee296f9b7e43b02de8a9836d5bb
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-09 10:06:33 +00:00
Richard Moe Gustavsen 94b0e4c5d6 iOS, nsphotolibrarysupport: force plugin to be static
Since the iOS plugin (kernel) is static, the
optional plugin needs to be static as well. Otherwise the linker
will complain about missing symbols (coming from the
optional plugin calling out to functions in kernel).

Task-number: QTBUG-42937
Change-Id: I154de0d383bfae09c75a57395b57414fc5ffcc2d
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-09 08:42:10 +00:00
Friedemann Kleint e649eac69a Direct2D QPA: Add #include directives for MinGW
D2D support has been partially added to recent versions of
MinGW, which one day could make compiling the plugin possible.

Change-Id: I53f91c483d3b900698f4424cb6a72f626e32e60b
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-11-08 21:35:27 +00:00
Morten Johan Sørvig 356f5bbac3 Cocoa: Make child window cursors work correctly
The existing cursor logic had a couple of issues:

- It made the faulty assumption that we could not use
the NSWindow invalidateCursorRectsForView API for
child NSViews.

- It used NSWindow invalidateCursorRectsForView and
NSView resetCursorRects. This API has been replaced
by the more general NSTrackingArea API.

- It did not implement falling back to the parent
window cursor if the current window has no cursor
set.

Document that QWindow cursors work the same way as
QWidget cursors in that a QWindow with no set cursor
will fall back to the parent window cursor.

Change the cocoa platform code to use NSTrackingArea
exclusively and implement NSView cursorUpdate which
sets the cursor. Handle immediate change on QWindow::
setCursor() manually.

Add QWindow::effectiveWindowCursor() and
applyEffectiveWindowCursor() which finds the correct
window cursor.

Add a manual test for the child window, child widget,
and QWidget::createWindowChild cases.

Task-number: QTBUG-33479
Task-number: QTBUG-52023
Change-Id: I0370e11bbadb2da95e8632e61be6228ec2cd5e9d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-08 12:30:45 +00:00
Gabriel de Dietrich ae8d3d69d6 macOS: Clear event dispatcher interrupt state
A pending interrupt of a QEventLoop may interfere with
native runModal calls, resulting in Cocoa's main event
loop to be stopped unexpectedly.

After commit 9ab60b9c processEvents() no longer resets
the event dispatcher interrupt flag.

Add QCocoaEventDispatcher::clearCurrentThreadCocoa
EventDispatcherInterruptFlag(). Use it to clear the
interrupt state before calling runModal and variants.

Work around the inability to use platform API in
the print support code.

Change-Id: I52f26f99a63cbb46969db42f65b09a3c3119ad15
Task-number: QTBUG-56746
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-11-08 12:30:06 +00:00
Liang Qi ef5b4d2ada Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8 2016-11-08 12:16:18 +00:00
Liang Qi 9d50df5511 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	src/corelib/tools/qalgorithms.h

Change-Id: Ib8ce4d5d9ecd5b9c166d5b8b44e58f3e4e7283ff
2016-11-08 10:01:50 +01:00
Andrew Knight c647728652 Fix developer build with -no-feature-cursor
Change-Id: I3ec22f212ad68baa788fcea2e7340c2f53bfc8a1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-08 07:35:15 +00:00
Andrew Knight 14805de3d9 Fix build with -no-feature-cursor
Change-Id: I0644342c56facefab611f981690d0c7a2a460e7e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-08 07:35:09 +00:00
Richard Moe Gustavsen 94ba4733cd iOS, nsphotolibrarysupport: add missing framework dependency
The plugin depends on Foundation.

Change-Id: I39d28d16223764e96209d022165a4d146c4b825b
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-07 08:51:04 +00:00
Richard Moe Gustavsen 91c0afdcbf iOS: only build nsphotolibrarysupport for iOS
The plugin depends on AssetLibrary.framework, which is only
available for iOS.

Change-Id: Ic7b3c4ffb4d26808d2120e46593cb4e191e2c10b
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-07 08:50:07 +00:00
Richard Moe Gustavsen a07e77a99a iOS: fix 'incompatible pointer type' compiler warning
Change-Id: I01bb7516a3600dd1dbd71dd6989f541494840abc
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-07 08:45:14 +00:00
Friedemann Kleint 2e48dbfa83 Direct2D QPA: Fix g++ warnings
Fix warnings like:
qwindowsdirect2dpaintengine.cpp:722:107: error: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'HRESULT {aka long int}' [-Werror=format=]
                     qWarning("%s: Could not convert Direct2D linear gradient brush: %#x", __FUNCTION__, hr);

qwindowsdirect2dintegration.cpp:112:88: error: passing NULL to non-pointer argument 2 of 'WINBOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, LPVOID)' [-Werror=conversion-null]
                     if (GetFileVersionInfo(filename, NULL, versionInfoSize, info.data())) {
                                                                                        ^

Change-Id: Ie03abdb5f4ba47b4803c283b9a4ec10181aae76e
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-11-05 12:41:39 +00:00
Tor Arne Vestbø e79ceb9734 Merge remote-tracking branch 'gerrit/5.8' into dev
Change-Id: Ib31cae9b57f6fb078739c409162bf2987eb430ad
2016-11-05 01:53:17 +01:00
Jake Petroules 825bb10d9b macOS: fix 32-bit builds
amends e39a436d0c and
1ad6ae21f0.

Change-Id: Ib5c0b516ea2e5ec8d89f3e2e9888ef3eb8de6de4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-11-04 21:23:09 +00:00
Richard Moe Gustavsen 6a4aaa3477 iOS: remove wrong file include after upstream merge
qiosfileenginefactory.h is now a part of the optional plugin.

Amends d7e49801

Change-Id: Ia1854145f54e4278ab5c0020361915f476d48cc9
Reviewed-by: Liang Qi <liang.qi@qt.io>
2016-11-04 12:17:19 +00:00
Dmitry Shachnev 1a1a0e3159 GTK+ dialogs: Get rid of deprecated GtkStock usage
GtkStock has been deprecated since GTK+ 3.10, and is removed in GTK+ 4.
Use the standard button names provided by Qt instead.

Change-Id: I55e8452178544b4a9ebf5c75b70f4c5c56c047f4
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-11-03 14:07:59 +00:00
Liang Qi d7e4980132 Merge remote-tracking branch 'origin/5.8' into dev
Blacklist tst_QMenuBar::taskQTBUG46812_doNotLeaveMenubarHighlighted() on macOS.

Conflicts:
	mkspecs/features/mac/default_post.prf
	mkspecs/features/mac/sdk.prf
	mkspecs/features/uikit/default_post.prf
	mkspecs/features/uikit/sdk.prf
	src/angle/src/libEGL/libEGL.pro
	src/platformsupport/fontdatabases/fontdatabases.pro
	src/platformsupport/platformsupport.pro
	src/plugins/platforms/cocoa/qnswindowdelegate.mm
	src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp
	src/plugins/platforms/ios/ios.pro
	src/plugins/platforms/ios/kernel.pro
	tests/auto/widgets/widgets/qmenubar/BLACKLIST
	tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp

Task-number: QTBUG-56853
Change-Id: If58785210feee3550892fc7768cce90e75a2416c
2016-11-02 09:24:11 +01:00
Liang Qi a732576a66 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	config.tests/win/msvc_version.cpp
	configure.pri
	mkspecs/macx-ios-clang/features/default_post.prf
	mkspecs/macx-ios-clang/features/resolve_config.prf
	mkspecs/features/uikit/default_post.prf
	mkspecs/features/uikit/resolve_config.prf
	src/corelib/io/qsettings_mac.cpp
	src/corelib/json/qjsondocument.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/cocoa/qnswindowdelegate.h
	src/plugins/platforms/cocoa/qnswindowdelegate.mm
	src/plugins/platforms/ios/ios.pro
	src/plugins/platforms/ios/kernel.pro
	src/plugins/platforms/ios/qiosintegration.h
	src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
	tests/auto/gui/painting/qpainter/tst_qpainter.cpp
	tools/configure/environment.cpp

Change-Id: I654845e54e40f5951fb78aab349ca667e9f27843
2016-11-01 06:02:55 +01:00
Rafael Roquetto 44c402b4bf [QNX] Incorporate screen event thread
It no longer makes sense to allow the screen event thread to be disabled. This
was the case only when there existed a BlackBerry event dispatcher that could
play its role.

Change-Id: I38471dc5cb2a4461da568c89f71e678aef57c43b
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2016-10-31 21:45:42 +00:00
Liang Qi 8e20daae9f Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/minimalegl/qminimaleglintegration.cpp

Change-Id: Ia6ab42a6daadbf8abc085c971545904d49ea4b56
2016-10-31 09:26:35 +01:00
Laszlo Agocs ca5d4137aa minimalegl: Reorder includes to avoid EGL native type clashes
Some of the qminimaleglscreen.h includes are not even necessary.
With the inclusion of egl.h (or qt_egl_p.h in 5.7 and up) isolated
to this header, all we need to ensure is that the sources that include
it place the include at a suitable place.

This is not the only possible solution, there are alternatives (each with
its own caveat), but this is likely the least intrusive.

Task-number: QTBUG-56559
Change-Id: I17db031c8e401d9895a417ba3568ad1e4ba30f72
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 21:01:58 +00:00
Laszlo Agocs f9ec707e49 windows: Disable OpenGL proper on Intel 945
Change-Id: I77fbf5bafcd6b0fe5040513ef6b0d049600f9b33
Task-number: QTBUG-40991
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-28 21:01:43 +00:00
Liang Qi f2f39946d2 Fix a mis-merge in af0d0b9
"-framework AudioToolbox" was lost.

Task-number: QTBUG-56784
Change-Id: Ibd536c53e7e1456077559c021a70407339f33971
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2016-10-28 18:02:41 +00:00
Friedemann Kleint 4039568837 Direct2d: Add missing dependency to platformsupport's accessibility
Change-Id: I620370bb5f4bbac11c1e5740c706e0cb64d9d407
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-10-28 14:19:49 +00:00
Friedemann Kleint 8cd8124559 Windows QPA: Do not use QSettings to access the registry
When commenting out the warning in createOrOpenKey()
(src\corelib\io\qsettings_win.cpp:157), applications produce warnings:
QSettings: Failed to create subkey "Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes": Access is denied.
indicating that an attempt to open the registry in read/write mode fails.
Add a utility function to read out registry strings in read-only mode to
the font database and use that instead.

Change-Id: I4187344cac7ec2ba27f15b51e237575efc171853
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-10-28 14:14:28 +00:00
Gabriel de Dietrich f9280ba45e QNSColorPanelDelegate: Don't restore stolen view on dealloc
We may not be playing nice with Cocoa's internals when
we decide to reparent NSColorPanel's contents to add
QColorDialog's own OK/Cancel buttons. In order to reduce
issues, we should avoid poking at things during the
application's shutdown sequence. Simply releasing the
stolen view should be enough at that point.

A similar pattern exists in QNSFontPanelDelegate.

Change-Id: I678c236e0c57c4d08a1109a479d965f924288c54
Task-number: QTBUG-56448
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-28 12:13:38 +00:00
Jan Arve Saether 780105f906 Merge ANGLE's libEGL and libGLESv2 into QtANGLE
This is needed in order to be able to specify a custom location of
the ANGLE libs, and enables us to perform a LoadLibrary of ANGLE libs
by just having the absolute path to QtANGLE.dll as the argument to
LoadLibrary().

Previously, we had two ANGLE libraries: libEGL and libGLESv2. libEGL hard
linked against libGLESv2.  If we wanted to load libEGL from a custom
location, we couldn't load libEGL by calling LoadLibrary with the absolute
path to libEGL, because libEGL had problems finding libGLESv2.  One
solution to that could have been to call SetDllDirectory() with the path
to the ANGLE libs before calling LoadLibrary("libEGL.dll"). Since the DLL
directory would point to both ANGLE libs, this would ensure that the libGLESv2
was also found.  Unfortunately, this approach is not thread safe
(SetDllDirectory will affect all subsequent LoadLibrary(Ex) from the same
process). Therefore, we chose to merge the two libraries into one to
circumvent the whole problem.

At the same time, this patch also enables loading of two different ANGLE
libraries into the same process at once without renaming them: This was
not possible before because libEGL hard linked to libGLESv2.dll.  When
libGLESv2.dll was already loaded, the second instance of libEGL would
simply link against the already loaded version of libGLESv2.dll.

This behavior is documented in the LoadLibraryEx documentation on MSDN:
"If the string specifies a module name without a path and more than one
loaded module has the same base name and extension, the function returns a
handle to the module that was loaded first."

Change-Id: Ic1d886ba802be72ddcf01235bafaedcef662762e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2016-10-28 11:02:43 +00:00
Laszlo Agocs f577a01f5e eglfs: Cast to EGLNativeDisplayType in EGLDevice backend
When compiling with EGL native types being the Xlib types (uncommon since
we disable this both for Mesa and NVIDIA embedded, but can happen with other
vendor's headers), the types for EGLDeviceEXT (void*) and EGLNativeDisplayType
(Display, i.e. _XDisplay*) won't match, breaking compilation. At runtime we won't
hit that path, so all we need to ensure is that the code compiles. Do this via a cast.

When the native types are generic, both types are void* so the cast has no
effect.

Change-Id: Ib54f569d4494906f74107f08b47bd6b521d700db
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 10:01:38 +00:00
Laszlo Agocs 8d9c42e362 xcb: Avoid crash when requesting non-supported stereo formats
Introduced in the 5.7 branch by 5f39a0ef8d.

Add also a warning in the GLX backend instead of just dereferencing the
null pointer.

Task-number: QTBUG-55291
Change-Id: I1f2930768b39a04ee443a68d0ac7dc9ecf26cb9c
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 10:01:31 +00:00
Tor Arne Vestbø 1ad6ae21f0 macOS: Allow windows to be created on any screen within the virtual desktop
Setting the geometry of a window to a position outside of the primary screen,
but within the virtual desktop, would not result in the window being created
on the secondary screen, as macOS does not seem to translate the global screen
position when creating new windows.

We work around this by translating the position ourselves, and using the
overload of [NSWindow initWithContentRect:] that takes the NSScreen to
create the window on.

Due to a bug in the macOS window manger, this fails for windows that are
created within a certain region of rotated screens. This is not an issue
for setting the geometry after creating a window, so we should investigate
making the window-creation code set its geometry via the same code path, after
creating the window (without having the window momentarily show up in the
wrong position).

Change-Id: Iba8eefe65e2c91667856299d90a8606e361ceacb
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-28 08:04:26 +00:00
Tor Arne Vestbø e39a436d0c macOS: Report correct available geometry for non-primary screens
The assumption that the primary screen is the only one whose available
geometry differs from its full geometry no longer holds, so we need to
compute the available geometry for all screens.

Helpers methods for flipping between coordinates have been introduced
in QCocoaScreen, to make flipping possible relative to a specific
screen, and for exposing similar functionality in the future for
QScreen. The corresponding functions in qcocoahelpers.mm should
possibly be deprecated in favor of being explicit about which
screen is doing the mapping.

Change-Id: Iede658fabb4c3e4ef1f1b715db84fb927a661fa9
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-28 08:04:18 +00:00
Tor Arne Vestbø 73e68a9c0f macOS: Keep reference to NSScreen instead of mapping QCocoaScreen by index
We're mostly using the result of looking up the index anyways.

Change-Id: I2ada58a9e6159a567691568b42fef76a82797eb3
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-28 08:03:58 +00:00
Gabriel de Dietrich f9a80e06ac Move Windows font DB and engines to QtFontDatabaseSupport
This allows creating or extending QPA plugins to provide access to QFont
and related types.

It concerns both GDI and DirectWrite engines, as well as the regular and
the freetype based font databases. The qt.qpa.fonts logging category has
been moved together into the QWindowsFontDatabase related files to avoid
depending on the qwindowscontext.h header file. Finally, QwindowsNativeImage
is following pending a future refactor with similar code in qpixmap_win.cpp
and the Windows XP style.

Change-Id: Iddff2f3d715e3ab7695e6c2052b7596a01fd6fa8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-28 08:02:46 +00:00
Richard Moe Gustavsen 5700644a42 iOS: guard iOS only code to not break tvOS build
inputAssistantItem is not available on tvOS.

Change-Id: Icff684d6299688fbeaf40ffcb32ff9c46371b305
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-28 07:34:08 +00:00
Richard Moe Gustavsen 3daa76d494 iOS: ensure we return a non-null clipboard
QPlatformIntegration::clipboard() is not allowed to return
 null. This will lead to a crash as soon as someone tries
 to access QClipboard.

Change-Id: I3c1e7cdc5103fe4424f9739a09f599d6c0af40b2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-28 07:32:52 +00:00
Tor Arne Vestbø c9d6e32268 macOS: Remove m_parentCocoaWindow in favor of QPlatformWindow::parent()
Or, in some cases, m_view.window.parentWindow directly.

Change-Id: Ibded4d4229a65c861ef25537e00bc70a77009453
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-28 05:23:10 +00:00
Tor Arne Vestbø 87b32ba990 macOS: Remove m_childWindows in favor of m_view.window.childWindows
Verified NSWindowChild use-case with windowchildgeometry manual test.

Change-Id: If52abdcb87b3762182322a88d1935615a07cf162
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-28 05:23:02 +00:00
Tor Arne Vestbø e3d21ef0bf macOS: Remove m_isNSWindowChild in favor of m_view.window.parentWindow
Instead of manually maintaining the m_isNSWindowChild state, a new function
has been introduced, isChildNSWindow(), which evaluates the condition based
on whether or not m_view.window has a parent NSWindow.

To achieve this, the recreateWindow() function was refactored to make it the
sole point of deciding whether or not a reconfigure is needed, instead of
having the logic partily at the call sites. That means the shouldUsePanel()
and isNativeWindowTypeInconsistent() functions are no longer needed.

QNSWindowHelper is only used for QNSWindow and QNSPanel, and m_isNSWindowChild
is only set if the window has a parent (and child NSWindows was explicitly
enabled), so we can use the normal QWindow topLevel logic.

There's more potential for cleanup in recreateWindowIfNeeded(), but that's
for later patches to keep this patch as small as possible.

Verified NSWindowChild use-case with windowchildgeometry manual test.

Change-Id: I34e8ca0cc2f8a1c399cc72691d66e09fab843f4d
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-28 05:22:52 +00:00
Friedemann Kleint d020af9092 Direct2d: De-virtualize destructor of QWindowsDirect2DContext
The class is not a virtual base class.

Change-Id: If6a86487317d8e79e9618b4f6a46793aa95ea9ea
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-27 14:28:42 +00:00
Tor Arne Vestbø 2627c726b1 macOS: Merge QCocoaWindow::setNSWindow into code path it was used
The function was only used from a single code path, and moving the logic
there makes it easier to refactor the code in followup commits.

Change-Id: I9a7c3aeb95df8f3f507fed83d463e16fa4908374
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-27 13:15:34 +00:00
Tor Arne Vestbø ab1744b18d macOS: Handle NSViewGlobalFrameDidChangeNotification via QCocoaWindow
The notification is only posted for NSViews with attached surfaces,
meaning NSOpenGLContext, so there's no need to guard the subscription
within [QNSView setQCocoaGLContext:].

Change-Id: I8179e58c84925a756315b711d15fa9c356adaecf
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-27 13:08:44 +00:00
Tor Arne Vestbø c1c99c3bfe macOS: Handle NSViewFrameDidChangeNotification via QCocaWindow
There's no need to set postsFrameChangedNotifications = YES, it's
already the default.

Change-Id: I8c50dc119ba3779cdc6b3114d39c64f3cb236172
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-27 13:08:35 +00:00
Tor Arne Vestbø 7f507c1620 macOS: Decouple NSWindow notifications and delegate callbacks from QNSView
The logic for handling NSWindow events was split partly between QNSView
observing notifications, and QNSWindowDelegate implementing direct delegate
callbacks. The logic of how to handle the events was then split further
by sometimes handling the event in the delegate callback or notification
handler, and sometimes forwarding the event to QCocoaWindow.

We now handle most events via notifications, and propagate these directly
to QCocoaWindow, so that all the logic is in one place. This improves the
situation for foreign windows, since we're not relying on having a QNSView,
or being able to inject our QNSWindowDelegate.

To keep code duplication to a minimum and risking missing a notification
in the forwarding logic, the logic is based on QMetatType and QMetaMethod
tags, so that the notifications are declared in the header file, along
with the handler function.

Change-Id: I2fb6372010048a8a1f6e4426b988a3f6f5abdbab
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-27 13:08:24 +00:00
Richard Moe Gustavsen d19f01acbf nsphotolibrarysupport: add missing namespace macros
Change-Id: Ib2014dc64dfcc1ea8de63a1668907ace6d26c530
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-27 12:12:50 +00:00
Tor Arne Vestbø d04207342e macOS: Fix crash in QCocoaBackingStore::format() after closing window
Closing a window results in sending an expose event to obscure the window,
which gets delivered after the corresponding QPlatformWindow has been
destroyed.

If the client application (wrongly) tries to render as a result of this
expose event, using the existing QBackingStore, it will potentially
result in a resize of the backing store, for example if the global
device pixel ratio is different from what the window had when it
still had a QPlatformWindow.

The resize in turn requires the format() of the window, but since we
no longer have a QPlatformWindow we can't base the format on that.

Change-Id: Ied6a3a745f20087c2287ad86e1c66808467b6183
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-10-27 10:53:32 +00:00
Liang Qi af0d0b9c06 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/ios/ios.pro
	src/plugins/platforms/ios/kernel.pro
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h
	src/plugins/platforms/ios/qiosintegration.h
	src/widgets/widgets/qcombobox.cpp
	tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
	tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp

Change-Id: Ibaee7cbbba99e7c4b1d8926e55932ffa6030ce45
2016-10-27 10:23:39 +02:00
Friedemann Kleint 41b27047ea Direct2D QPA plugin: Use member initialization
Use C++ 11 member initialization in value-type structs.

Task-number: QTBUG-51673
Change-Id: I2e609337cfc057d1de23b3de62b9ed43a4ecec9c
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-27 06:18:56 +00:00
Friedemann Kleint d9beeb65f9 Direct2d: Fix some CLANG warnings
Fix warnings about integer and double to float conversions, mostly.

Change-Id: I7c0568051eabea9af9cbdaeb36da0b2affb174e1
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-27 06:18:52 +00:00
Lars Knoll 04f0a69e96 Replace PKGCONFIG+=foo usages with QMAKE_USE
replace explicit pkg-config uses with the results of configure tests,
for consistency.

Change-Id: I3587db6085798ea7a49f8871fc6838eb687a6391
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-10-26 13:07:34 +00:00
Richard Moe Gustavsen b9af823ef7 qiosfileengineassetslibrary: replace Q_DECL_OVERRIDE with override
Change-Id: Iba67e1a1fa86dff3c82543597351b597be69ed1f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-26 12:15:47 +00:00
Richard Moe Gustavsen 99ce5d5e85 iOS: refactor usage of photos into optional plugin
Starting from iOS 10, apps that tries to access photos on the device
need to specify the reason for this up front by adding the key
'NSPhotoLibraryUsageDescription' into Info.plist. If the key is
missing, the app will be rejected from AppStore.

This causes problems for the iOS plugin as it stands since parts of it
already tries to access photos, e.g to show an image picker dialog
if a file dialog is set to open QStandardPaths::PicturesLocation.
This means that currently, all apps written with Qt will be rejected
from AppStore unless the developer adds this key, whether he tries
to access photos or not.

To solve this, we choose to split the plugin into two parts, one
that contains the core functionality, and one that contains
optional support. The latter will need to be enabled explicit
by the developer in the pro file, or in this case, indirectly
by adding the right key to the Info.plist.

This patch refactors the code in the plugin that gives access
to photos into a separate optional plugin called 'nsphotolibrarysupport'.

Change-Id: Ic4351eb0bbfffdf840fd88cd00bb29a25907798f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-26 08:55:10 +00:00
Anton Kudryavtsev c30e62c775 Plugins: use const (and const APIs) more
For CoW types, prefer const methods to avoid needless detach()ing.

Change-Id: I625d57c0c19e87ac2de681bb16d0cc5a7a59b366
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-25 05:12:29 +00:00
Anton Kudryavtsev 26ac91c832 qwindowsdirect2dintegration.cpp: replace QVector with QVarLengthArray
QVector was used as just RAII for local array. It's inefficient usage
of CoW type. So use QVarLengthArray instead.

Change-Id: I494ecc49af9049569a65e258581137bad3ce7dc7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-10-25 05:11:39 +00:00
Gabriel de Dietrich 9c83d7f871 QCocoaMenuBar: Update even if no window is attached
Then we need to check if the current active (or focused)
window has any menubar associated. In case there isn't,
and the menubar has no window associated, then we should
update immediately.

The previous condition is still valid.

Change-Id: I4532ccc87354d91c76b53f5433dc3944b9e29584
Task-number: QTBUG-56275
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-24 21:14:02 +00:00
Morten Johan Sørvig c12b6075d1 Update main/primary screen term usage
The first screen in the screens array is referred to
as the _primary_ screen in Apple documentation.

The main screen is the screen with the currently active
window.

Change-Id: I900a53e6bfb06ed9e42fba1e11d3a583777e9a1d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-10-24 10:48:26 +00:00
Timur Pocheptsov 391741bd7b Cocoa integration - remove erroneous warning
The conditional statement checks/allows only right/left mouse buttons
in handleMouseDraggedEvent and generates a lot of useless/misleading
warnings in case we press (for example) a middle mouse button (when
we're also moving mouse cursor, intentionally or not).

Task-number: QTBUG-54160
Task-number: QTBUG-42846
Change-Id: I5c54b6204cb90036c7d98724537f1c985b40d9cc
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-10-24 08:07:25 +00:00
Thiago Macieira 33aa2fdd08 Fix change-of-sign warnings caught by ICC 17
error #68: integer conversion resulted in a change of sign

Change-Id: I33dc971f005a4848bb8ffffd1475ee53d394acf6
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-23 21:49:00 +00:00