Commit Graph

5339 Commits (c4b4eba188d2fc0273aaa38533e19dcbd4cfc7be)

Author SHA1 Message Date
Giulio Camuffo ec4eb4db61 Install some eglfsdeviceintegration headers, as a private module
This allows external integrations to be developed against it.
Also uniforms all class names as QEglFSFoo.

Change-Id: I72ff37c0fcdf1ccd37110b4c36874d6c99b2e743
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-06-03 09:19:05 +00:00
Joerg Bornemann 5803a9ba57 Remove Windows CE vestiges
Remove every usage of the _WIN32_WCE macro outside of 3rd party
source code directories.

Change-Id: Ia7e859bd6dcaef10c66674612c8e440f9a2dee56
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-06-02 08:03:37 +00:00
Liang Qi 688f70634c Merge remote-tracking branch 'origin/5.6.1' into 5.6
This merge also blacklists a flaky tst_QGL::clipTest test on
OpenSUSE 13.1.

Conflicts:
	src/network/socket/qnativesocketengine_winrt.cpp
	tests/auto/opengl/qgl/BLACKLIST

Task-number: QTBUG-53133
Change-Id: I14b431aa5a189b7dd1d3e2dfff767d15df20fde3
2016-06-02 06:01:25 +02:00
Jake Petroules a160bd4fcc Fix bugs causing Thin font weights to be ignored or mishandled.
Task-number: QTBUG-53196
Change-Id: If12b3cab3d8de5e0e452fca844b0a484c29e9e86
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2016-06-01 02:29:51 +00:00
Maurice Kalinowski bb30da895e winrt: fix compilation without drag and drop support
Change-Id: Ifd0d2238e8dacffe34753d95e12cccfd13519c55
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-31 11:54:08 +00:00
Maurice Kalinowski e8ff3c8cbc winrt: fix drag pixmap support
Previously dragging only displayed the type of operation provided by the
system. Now, in case a pixmap is specified, an image is shown.

Also incorporated some cleanups.

Task-number: QTBUG-50827
Change-Id: I471e2081eabfed014b08d189538d1d62cdb7248e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-31 11:54:03 +00:00
Maurice Kalinowski 94f319a2bb winrt: enable drag support
Allow applications to initiate drag operations.

Task-number: QTBUG-50827
Change-Id: I3c29b54756af1af24544f49803305f0c95d8b7f9
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-31 11:53:59 +00:00
Maurice Kalinowski 0ff45fbf1b winrt: Enable drop support
Allow Qt applications to receive drops. Dragging is not supported yet
and will be handled in a separate commit.

Task-number: QTBUG-50827
Change-Id: I684e3d5685ce73f74805691f6ac7bbc45e2d19ec
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-31 11:53:46 +00:00
Albert Astals Cid fe08545723 Remove checkEvent function no-one uses
It was confusing me until i found we have another one so i think it makes sense
to remove it if no-one uses it.

Change-Id: I49bdb8d795f7617c193c8b62690ee34dc154d2f8
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-05-31 06:42:56 +00:00
Thiago Macieira fae8ee8b42 Update the high scaling settings after an XCB screen is added
Without this, the newly-added screen will still have the
scaleFactorProperty unset, which means QScreen::devicePixelRatio will
return 1.0. That differs from what happens if the screen had been
detected when the application started.

This is part of the fix for the bug report, but insufficient.

Task-number: QTBUG-53500
Change-Id: Id3aab65533904562a6cbfffd14502365d86bd36d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-05-30 00:28:51 +00:00
Thiago Macieira 16864c42d6 Fix linking of the minimal platform plugin on OS X
platformsupport/fontdatabases/fontdatabases.pri disables all font
databases except CoreText on OS X, so this is required for
linking. Otherwise, we get undefined reference linker errors:

Undefined symbols for architecture x86_64:
  "vtable for QBasicFontDatabase", referenced from:
      QMinimalIntegration::fontDatabase() const in
  qminimalintegration.o

Change-Id: I31298e973803b4d6eedbf61607056114d1556584
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-05-29 18:49:04 +00:00
Richard Moe Gustavsen 0e70d35f15 iOS: Return correct QLocale from QIOSInputContext
Ensure we return a correct QLocale on iOS by overriding
QPlatformInputContext::locale().

A broader implementation involving subclassing QSystemLocale
will be done in dev.

Task-number: QTBUG-48772
Change-Id: I5250bdad320cbe66d63456926f6eab6fc2865424
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-27 11:20:56 +00:00
Thiago Macieira 5c2ff22ba1 Use void instead of uchar in the endian-swapping function parameters
This allows us to pass pointers to storage that is not an array of
uchar, which it hardly ever is.

Change-Id: Ifea6e497f11a461db432ffff14490d2c2df21906
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-26 18:02:49 +00:00
Liang Qi 2fb026d58b Merge remote-tracking branch 'origin/5.6.1' into 5.7.0
Conflicts:
	src/corelib/tools/qsimd_p.h
	src/network/socket/qnativesocketengine_winrt.cpp

Change-Id: I2765b671664c2a84839b2f88ba724fdf0c1fa7c6
2016-05-26 13:04:32 +02:00
Ralf Nolden 11353ea6a5 Compile fix: C++11 usage: Replace nullptr with Q_NULLPTR
Another compile fix when compiling qt with -stdc++ c++98 option. Replace
nullptr with Q_NULLPTR.

Change-Id: I7765905031fa91250dbbcc9768b9e8b109e7594d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-25 17:29:21 +00:00
Richard Moe Gustavsen 8c42837689 QIOSTextInputOverlay: fade-out handles upon focus transfer
Small adjustment to a76d709. Instead of removing the selection
handles immediately when an object loses focus, we choose to
animate them out the same way we do when we lose selection.

We do this by setting the handle visibility to false, which will
trigger the fade-out animation. Then we wait a for the animation
to finish before we remove and delete them fully.

Change-Id: Iaa93969af086000d9e1cf8a39bd12c6a8b70c89e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-25 14:20:02 +00:00
Timur Pocheptsov f75b78a92a Cocoa integration - fix QCocoaWindow::setContentView
- QCocoaWindow::setContentView calls -removeFromSuperView
and this is not valid for a view that is a content view for a NSWindow:
using it will release the view but not clear the window.contentView pointer.
Set contentView to nil instead.

Fixing this makes visible the second problem:

- QNSWindowHelper in its -handleWindowEvent: can access content view and assumes
it's QNSView - it is not always guaranteed and can result in invalid message
sent to a view, we can use m_qtView instead (it will be nil if it
has a type different from QNSView, the call will be noop then).

Task-number: QTBUG-53325
Change-Id: I0472eba8165a04b6a3f81b2171b3bb9827ff5681
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-05-25 12:55:58 +00:00
Andy Shaw 84ab88ce41 QWindowsPrintDevice: Handle return value of DocumentProperties correctly
If the return value is less than 0 which signifies an error then trying
to malloc that will cause an exception.

Change-Id: Ia0153d4cb7aac1dacb509280b45be149a093b7c4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-25 09:56:48 +00:00
Friedemann Kleint c96ddd9ee5 QWindowsTheme: Suppress error dialogs when calling SHGetFileInfo().
Set the error mode flag SEM_NOOPENFILEERRORBOX when calling Win32 API
SHGetFileInfo() to prevent it from prompting to insert media
as does QStorageInfoPrivate::mountedVolumes().

Task-number: QTBUG-32457
Task-number: QTBUG-48823
Change-Id: I01a2f99b5a75b39dd729509ca319f634e3dcd695
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-05-24 17:32:44 +00:00
Richard Moe Gustavsen 17a4384d12 iOS: ensure we don't break UIKit IM state when sending key events
We need to be careful about calling textDidChange on the input
delegate, since that will reset the internal IM state in UIKit
and stop any ongoing text composition or spell checking.

For that reason we set m_inSendEventToFocusObject to true whenever
we send an IM event to Qt, to not call the abovementioned method when
callbacks from UIKit is the reason for changing the text.

But until now we never applied the same protection for key events.
This lead to ligatures not working correctly (e.g when using Korean
IM), since UIKit composes ligatures by first selecting the characters
that can be truncated, then do a deleteBackwards, then insert the ligature.
And deleteBackwards leads us to send backspace key events, which
ends up in a textDidChange call, which confuses UIKit.

This patch will ensure we don't call textDidChange as a result of
sending key events.

Task-number: QTBUG-52486
Change-Id: Ida268edae517f55a5b5f975340a5d3821f7b8f52
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-24 12:32:22 +00:00
Gabriel de Dietrich b092f681cf QNSView: Reset the internal buttons state after dragging ends
We only track left and right mouse buttons when dragging. But
some applications may do this with other mouse buttons.

In this case, instead of tracking which button was pressed and
which one was released, we just ask Cocoa for the current state.

Change-Id: I0df7799b7ae6d7816377f881bc0ede867737d245
Task-number: QTBUG-53374
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-24 06:13:11 +00:00
Liang Qi 56d6e000f7 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	mkspecs/wince80colibri-armv7-msvc2012/qmake.conf
	qmake/generators/win32/msvc_vcproj.cpp
	src/corelib/global/qnamespace.h
	src/corelib/global/qnamespace.qdoc
	src/corelib/io/qfsfileengine_win.cpp
	src/corelib/tools/tools.pri
	src/network/ssl/qsslconfiguration_p.h
	src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
	src/plugins/platforms/windows/windows.pri
	src/src.pro
	src/tools/bootstrap/bootstrap.pro
	src/tools/uic/cpp/cppwriteinitialization.cpp
	src/widgets/dialogs/qfilesystemmodel.cpp
	tests/auto/testlib/selftests/expected_cmptest.teamcity
	tests/auto/testlib/selftests/expected_cmptest.txt

Change-Id: I4d2ac78f0dcc97f008186bbbc769c6fe588ab0e5
2016-05-23 21:09:46 +02:00
Laszlo Agocs bdb1c18e41 windows: Fall back to D3D9 when 11 fails
It is assumed that this happens automatically but that is not always the
case. Do not become stuck with a non-functional D3D11-backed EGL environment.
Instead, try again as if QT_ANGLE_PLATFORM=d3d9 was requested.

Task-number: QTBUG-52056
Change-Id: I12ac6ca5f1d06f9504d05120d8e1053e97edfab3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-23 12:37:23 +00:00
Friedemann Kleint b8a0c6e7c5 Windows QPA: Format window title correctly when creating a window.
Add convenience QWindowsWindow::formatWindowTitle() and use
that in QWindowsIntegration::createPlatformWindow().

Task-number: QTBUG-53394
Change-Id: I76ebade97c5af71ffa3d11075511b94a54a3dbf8
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-05-23 08:41:36 +00:00
Mike Krus 9fd407fc6a Fix tvOS build
QIOSTextInputOverlay was excluded from build not member variable was
not, leading to link errors

Change-Id: Ia9c09c503decb596907a17dc8fe8fd0f8d5f657f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-05-20 07:14:24 +00:00
Gabriel de Dietrich 9e3e987590 QNSView: Pass on the responder chain if deletion is pending
Change-Id: I7d098b61f6feb2ac38582c0efb1bbdf25a83e967
Task-number: QTBUG-53398
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-05-20 06:09:06 +00:00
Friedemann Kleint 6086c81e4d Windows QPA: Improve workaround for non-Areo theme GL rendering.
Reportedly, clearing the clip region is sufficient to fix the issue.
InvalidateRect() should be avoided when handling WM_PAINT as it
may cause events.

Task-number: QTBUG-7865
Change-Id: Id9a7c280fcc2c8242bb34c34e73e53c3146e7a6e
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-19 10:55:54 +00:00
Liang Qi 818014b449 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	configure
	src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
	src/network/access/qnetworkaccessmanager.cpp
	src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp
	src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h
	src/widgets/widgets/qlineedit_p.cpp
	src/widgets/widgets/qlineedit_p.h
	src/winmain/winmain.pro
	tests/auto/corelib/io/qstorageinfo/tst_qstorageinfo.cpp
	tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
	tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
	tests/auto/testlib/selftests/expected_cmptest.teamcity
	tests/auto/testlib/selftests/expected_cmptest.txt
	tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
	tools/configure/configureapp.cpp

Change-Id: Ib9997b0d0f91946e4081d36c0c6b696c5c983b2a
2016-05-19 12:55:27 +02:00
Liang Qi 640441882d Merge remote-tracking branch 'origin/5.6.1' into 5.6
Conflicts:
	src/network/socket/qnativesocketengine_winrt.cpp

Change-Id: I8edb72f8ba958d80c3d7993b3feaaae782ca8d9c
2016-05-19 06:31:06 +02:00
Urs Fleisch f162e29acc xcb: Fix dropping URL on Firefox window.
When a URL is dropped on a Firefox window, the "text/x-moz-url" data
takes precedence over the "text/uri-list". The "text/x-moz-url" is
interpreted as UTF16, however, the data from Qt 5 applications is not
in the correct format. The code to create correct UTF16 data exists,
but it is not called for two reasons: The atomName will never be
"text/x-moz-url" because it is changed to "text/uri-list" by
mimeAtomToString() and the InternalMimeData::hasFormatHelper() case is
already handled above and the else part will never be considered.
This patch fixes the check and brings it into the right order.

Task-number: QTBUG-49947
Change-Id: I5ebd31914cc6c1417c513c1ff09e0e858a16915d
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-18 18:20:11 +00:00
Urs Fleisch 1108291e1a xcb: Fix drop of text/uri-list and text/html.
When dropping URLs from Firefox or Chrome, the contents are encoded as
UTF16, but not correctly decoded. Moreover, the special handling of
"text/x-moz-url" drops does not work because this format is converted to
"text/uri-list" before. This fixes the handling for URL list and also
for UTF16 "text/html".

Task-number: QTBUG-47981
Change-Id: I1153f21ede07b2bfe4d104e0fe8bc8487ec5c165
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-18 18:20:09 +00:00
Laszlo Agocs 6e401ebc47 egl: Reshuffle headers to help less fortunate systems with X11
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.

In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.

Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.

However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.

Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.

This restores patch set 2 from the previously merged, and then reverted
commit. This here is safe since the egl.h include and the following undefs
are only done internally for eglfs and can have therefore no effect on
other code.

Task-number: QTBUG-52928
Change-Id: I383e783d5064dc8fb41f3ef56d2a4f4fcd31a6cf
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-17 16:13:42 +00:00
Friedemann Kleint 0d5b2422ce Windows QPA: Remove qtwindows_additional.h.
Clean up helper definitions required for old SDKs and MinGW and
move the remaining ones to the files that require them.
Ensure compilations with MinGW 4.9.

Task-number: QTBUG-51673
Change-Id: I607989dd1d9197f237c6d021209a2c94aeb84021
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-17 16:11:23 +00:00
Mike Krus 03e9c6f4a6 Add support for Apple tvOS
Pass -xplatform macx-tvos-clang to configure to build.
Builds device and simulator by default.

Added ‘uikit’ platform with the common setup.
Also added QT_PLATFORM_UIKIT define (undocumented).
qmake config defines tvos (but not ios).

tvOS is 64bits only (QT_ARCH is arm64) and requires bitcode to be
embedded in the binary. A new ‘bitcode’ configuration was added.
For ReleaseDevice builds (which get archived and push to the store),
bitcode is actually embedded (-fembed-bitcode passed to clang). For all
other configurations, only using bitcode markers to keep file size
down (-fembed-bitcode-marker).

Build disables Widgets in qtbase, and qtscript (unsupported,
would require fixes to JavaScriptCore source code).

Qpa same as on iOS but disables device orientation, status bar, clipboard,
menus, dialogs which are not supported on tvOS.

Change-Id: I645804fd933be0befddeeb43095a74d2c178b2ba
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-17 16:11:23 +00:00
Andy Shaw 6e928460bc Use QPlatformTheme for the context to translate the color dialog buttons
QDialogButtonBox does not have translations, it queries
QPlatformTheme for button texts. So in order to ensure
that the buttons added to QColorDialog natively are
translated it should be set to use QPlatformTheme instead.

Change-Id: I67d0e509398aa81f9de9b8785544c1e23bb596d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-16 20:16:05 +00:00
Shawn Rutledge 28fab27503 add AA_CompressHighFrequencyEvents to control compression on xcb
7edd10e6c added this compression feature, but some applications may
need to disable it.

[ChangeLog][X11] It's now possible to unset AA_CompressHighFrequencyEvents
to disable the new X event compression feature that was added in 5.6.0.
This is a replacement for the WA_NoX11EventCompression flag in Qt 4.

Task-number: QTBUG-44964
Change-Id: I37a9c8a4831f1c02eda0f03b54125f3255d25500
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-05-15 08:05:29 +00:00
Eirik Aavitsland 5316befba2 ICO image format: fix regression in writing when size >= 256
In commit c6c9304, the earlier size limit of 128 was raised to the
format's defined maximum of 256. But the required special storage of
this size in the image structures was not implemented. Hence,
attempting to store such big icons would result in invalid image
files.

Fix the size storing details, and add some autotests of ico format
writing since that was practically uncovered.

Task-number: QTBUG-53259
Change-Id: I00e17a04e90c32dcf1124ba5adaf53728fb74dc7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-13 04:37:15 +00:00
Thiago Macieira 29ac941c1e Bearer: replace the use of QMutexPool in the Windows plugin
Use a simple Q_GLOBAL_STATIC

Change-Id: Ifea6e497f11a461db432ffff1449b14b63628c12
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-05-12 18:31:17 +00:00
Oliver Wolff 864380639b ANGLE: fall back to warp mode in case of standard VGA driver
The combination of vendor and device ID being 0000 indicates, that the
standard VGA driver is used, and happens when using Qt in a:
  - Windows 7 machine without proper GPU drivers
  - Windows 7 machine with disabled GPU
  - HyperV vm

The default driver does neither support D3D9 nor D3D11 properly so that
we have to fall back to warp mode for ANGLE.

Change-Id: Ia766e32d680c910a50ec3d6b5002892cdb90fdbb
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-12 12:15:34 +00:00
Oswald Buddenhagen adf85c09b4 Merge 5.6 into 5.6.1
Change-Id: I22003b840f1a7ac685a1ec3353d7e7dbd84c3953
2016-05-12 11:17:23 +02:00
Liang Qi 990969655c Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	config_help.txt
	configure
	src/corelib/io/qprocess_wince.cpp
	src/plugins/platforms/windows/qwindowstheme.cpp
	src/plugins/platforms/xcb/qxcbbackingstore.cpp
	tests/auto/corelib/tools/qtimezone/BLACKLIST
	tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
	tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp

Change-Id: I26644d1cb3b78412c8ff285e2a55bea1bd641c01
2016-05-12 08:33:08 +02:00
Alexander Volkov 46f1c4c86b xcb: Properly interpret data.l[0] field of XdndStatus message
The standard https://freedesktop.org/wiki/Specifications/XDND/
states: "In order for the proxy window to behave correctly, the
appropriate field of the client messages, window or data.l[0],
must contain the ID of the window in which the mouse is located,
not the proxy window that is receiving the messages."

So compare it with the current target window instead of the
current proxy window.

Change-Id: Ie31fd3aeadebcf5a9be7b9a9194f35a4ec7bdebb
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-12 05:45:23 +00:00
Laszlo Agocs c46f74d325 eglfs: Support dynamic mouse cursor show/hide with DRM HW cursor
Task-number: QTBUG-52743
Change-Id: I0bea1451dfe7b049c129b11716d593115e3d8374
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-11 12:36:38 +00:00
Laszlo Agocs 834087c324 eglfs: Fix DRM+KMS backends
The native display was simply invalid.

Task-number: QTBUG-53225
Change-Id: I682fb1d91dbea3dab971a079060d181fc313da46
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
2016-05-10 23:24:54 +00:00
Marc Mutz df89dfee4f QEglFSKmsIntegration: use new QJsonObject::value(QLatin1String)
Allows to get rid of some QStringLiterals.

Change-Id: I546aace6876cf373b1cb67269fcc3d042dfd3aac
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-10 21:20:40 +00:00
Timur Pocheptsov ab3a8443fa QCocoaWindow - do not call resignKeyWindow
QCocoaWindow::setMouseGrabEnabled/setKeyboardGrabEnabled calls
resignKeyWindow. According to Apple's docs, we should _never_ call
this function (it's done by Cocoa automatically).
Calling this function leaves a window in weird state where it can
not become key again until you explicitly make another window key first.

Task-number: QTBUG-53050
Change-Id: I7a887659df8df11880328ffa2adc07c4a3af63e6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-05-10 19:06:58 +00:00
Maurice Kalinowski dbd81a0b9f winrt: Fix potential startup crash
Depending on the windowstate passed to QWinRTWindow constructor we might
act on the uiElement which has not been created yet. This happened
especially in release mode, probably due to timing.

Hence delay uiElement changes until we created it in the constructor and
can ensure it is valid.

Change-Id: I00daa9fcf8542a0535bbcb663a76d85c36e510e2
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-10 17:11:03 +00:00
Timur Pocheptsov 4e0b76d810 Cocoa integration - avoid dangling menuitem pointer
Since QCocoaMenu can live longer than its m_attachedItem pointer,
this pointer is becoming invalid after QCocoaMenuItem deleted
(and its 'm_native' was released).

Task-number: QTBUG-53251
Change-Id: I6d97b75b2c09e2443cd21415c5db94206d5d89ce
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-05-10 10:36:30 +00:00
Błażej Szczygieł d6cbf9efb7 xcb: Properly unset mousePressWindow()
In some cases the mouse release event won't arrive, i.e. when window is
minimized on button press. Check for mouse buttons state on mouse move
event and properly unset the mousePressWindow to avoid blocking
enter/leave events in this case.

Amends: c511466d74

Change-Id: I543a75104f528df1bf644bace13f78a6af017455
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-09 21:46:29 +00:00
Alberto Mardegan ab2cf73440 QXcbDrag: forward mouse release event to initiator window
The mouse release event which ends the drag and drop operation must be
forwarded to the window where the drag started, and not to the
QShapedPixmapWindow, which is not supposed to handle input events.

Task-number: QTBUG-52541
Change-Id: I24a7c7b331a06342ac28b420ff9467aa05fe00dd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-09 20:46:14 +00:00
Laszlo Agocs 844ea8beea linuxfb: Support transparency
Always clearing to opaque black makes it impossible to create
semi-transparent overlays with linuxfb. Instead, behave like other
platforms' backingstores: if the target image has an alpha channel,
clear to transparent instead and set the correct composition mode.

Task-number: QTBUG-52475
Change-Id: I2db4588e0112e200a3aa5eed49f806c37d7ca8b5
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-09 15:56:20 +00:00
James McDonnell 1e971f8555 Add FreeType libraries for Windows -system-freetype builds
Add a "CONFIG += qpa/basicunixfontdatase" to the -system-freetype block
so that the FreeType libraries are included in LIBS.

Task-number:  QTBUG-35767
Change-Id: I81e18e72e068d5ac240cba79bab880e50a033860
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-09 13:08:31 +00:00
Määttä Antti ed7845098f Fix threading issue in creating static opengl context
Add mutex lock for static opengl context creation.

Task-number: QTBUG-53202
Change-Id: Iba22339776ec8885efd82b13ae56f6781a426f4b
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-09 10:14:40 +00:00
Friedemann Kleint c0425f39d1 Windows Accessibility: Use QWindowsAccessibility::windowHelper().
Amends changes ee51638187,
d7a3b61459.

Task-number: QTBUG-52943
Change-Id: Icdf9d99c327bdd38dfb084e6cf77b14cd5ce073b
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2016-05-09 07:52:26 +00:00
Liang Qi 857912b605 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-05-06 22:20:08 +00:00
Friedemann Kleint ee51638187 Windows Accessibility: Recurse up to find a window.
Not all classes inheriting QAccessibleInterface implement
QAccessibleInterface::window(), so, go up the hierarchy to find
one that does.
The window is required to be able to determine the correct
scale factor for the screen when High DPI scaling is active.
Fixes multimonitor issues for QtWidgets.

Amends change d7a3b61459.

Task-number: QTBUG-52943
Change-Id: I81733765faee4d296bd6ea046bc2cecb018eb28d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2016-05-06 21:25:38 +00:00
Gabriel de Dietrich 6eb27afcdf Cocoa: Add QCocoaWindowPointer
This patch extends 5b54c352ed
by abstracting the watcher pattern. The class is specialized
for QCocoaWindow since it's aware of the QObject sentinel there.

We update the usage in QNSWindowHelper and extend it to the
forward window (this one is used for mouse coordinate conversion
when docking windows).

Change-Id: I628415527593daec835bbad1b6e83d13fe7b6703
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-06 21:25:28 +00:00
Gabriel de Dietrich e6c0373421 Cocoa: Clear the backing store pointer when changing window
If the geometry is being changed at some point while showing
the widget after reparenting, we set the Cocoa frame on the
QNSView. This results in Cocoa invalidating the view and
calling drawRect: before we get a chance to flush the backing
store.

This may be an issue if the previous parent toplevel window
has been deleted. In that case, the backing store pointer is
a dangling one, resulting in a crash.

Change-Id: I18b5dd7794a3bde8815daf3f84e4113a37aaea90
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-06 21:25:17 +00:00
Gabriel de Dietrich 939b7bfe66 QCocoaMenuBar: set the native item's title
Or, "Give Cocoa a Chance to do its Magic"

Some menubar items, like the "Edit" menu, get extra items added
at some point by Cocoa. Evidence points out to those extra items
being added right after the NSMenu holding the menubar is set as
the current menubar. At that point, both the child NSMenu and its
NSMenuItem (the entry in the menubar) must have their title set.

Therefore, we must set the menubar native item's title before
QCocoaMenuBar::updateMenuBarImmediately() sets the main menu.

Task-number: QTBUG-53085
Change-Id: Idd775cf0e3485739f38363a84cfed8d2db9cb662
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Marko Kangas <marko.kangas@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-06 19:45:59 +00:00
Tim Blechmann 5aeafcea46 compile fix for static qt with dynamic opengl
Change-Id: If78f6afeeeda5ea46a2ed17c6938fa25be9802fe
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-06 19:39:40 +00:00
Liang Qi dbef41f43e Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	examples/qtestlib/tutorial5/containers.cpp
	examples/widgets/tools/tools.pro
	src/corelib/io/qprocess.cpp
	src/corelib/io/qprocess_unix.cpp
	src/corelib/io/qprocess_win.cpp
	src/network/kernel/qdnslookup_unix.cpp
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/testlib/qtestcase.cpp
	tools/configure/configureapp.cpp

Change-Id: I838ae7f082535a67a4a53aa13a21ba5580758be8
2016-05-06 15:36:44 +02:00
Richard Moe Gustavsen a76d7094a4 iOS: Add text selection support from the platform plugin
This patch will add touch based text selection support
to Qt from the iOS plugin.

QIOSTextInputOverlay will listen to changes to the
focus object, and if IM enabled, create three different
gesture recognizers that tracks what the user is doing.

The first recogniser detects if the user does a press
and hold on the text when there is no selection. If
triggered, it will show a loupe that follows the touch
around together with the cursor.

The second recogniser will instead be active when text
is selected, and takes care of drawing a set of handles
on each side of the selection. If the user drags on any
of the handles, a loupe will show that follows the
touch/text line together with the handle.

The third recogniser detects if the user does a tap, and
depending on if there's a selection, or if the cursor didn't
move, it will show or hide the edit menu.

The handles and loupe are implemented as overlays using
Core Animation layers.

Change-Id: Idff6e40e12307a458c9c399b0487bb976fce29c8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-04 14:22:51 +00:00
Richard Moe Gustavsen e563273c22 iOS: set StyleHint::StartDragTime to 300
From testing on iOS, StartDragTime should be adjusted
slightly, from 500 (default in qplatformtheme.cpp) down
to 300. This will also affect how long the user needs
to press before the text selection magnifier shows
up for doing text selections.

Change-Id: I42ebfec6f0dc809b5d392412cf8f70d128ee6246
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-05-04 14:22:40 +00:00
Elena Zaretskaya b3e9144c3a Fix FPE under EGLFS_KMS if mesa-10.2.7
If mesa-10.2.7 is installed, gbm_bo_create returns NULL
(QEglFSKmsCursor ctor, qeglfskmscursor.cpp:80), but after
that the pointer m_bo is used in function QEGlFSKmsCursor::changeCursor
without verification.

Task-number: QTBUG-52404
Change-Id: I5b1b15d751e46a5200248e7a8642f7917dedd220
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-04 10:57:30 +00:00
Liang Qi 63ec10353d Revert "egl: Reshuffle headers to help less fortunate systems with X11"
This reverts commit ecf127505e.

ecf12750 breaks the build of qtwayland.

Change-Id: If8bf04f035aa47e4e867d201ec7d95b0d3e18317
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-04 09:00:34 +00:00
Shawn Rutledge 60cd1c6775 xcb: don't compress tablet motion events
7edd10e6c added this compression feature, but it's not a good idea for
drawing-tablet applications, because smooth drawing depends on receiving
every movement of the stylus.

Also show the device ID in qt.qpa.input.devices category logging.

[ChangeLog][X11] The new X event compression feature that was added in
5.6.0 no longer applies to motion events from drawing tablets.

Task-number: QTBUG-44964
Change-Id: Icd2ca8ca77d8f80c2f39160c74208db10e382501
Reviewed-by: Gatis Paeglis <gatis.paeglis@theqtcompany.com>
2016-05-04 04:06:31 +00:00
Gabriel de Dietrich 2422c1a227 Cocoa: Enable skipping Ctrl+LMB to RMB override
This can be enabled with QT_MAC_DONT_OVERRIDE_CTRL_LMB=1
environment variable. The goal is to provide consistent
cross-platform input when it's more desirable than full
platform comformance.

Change-Id: I3b96733077bd1c0367edeef21a98a44b15425807
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-03 20:20:04 +00:00
Laszlo Agocs 324e277687 Fix plugin name for eglfs' GBM backend
In 5.7 the Gbm prefix was added but the .pro file was not updated.
This breaks static builds.

Task-number: QTBUG-53136
Change-Id: I37af46ff768bf8c1dc9269892db25d61b76c0376
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-03 19:38:15 +00:00
Laszlo Agocs ecf127505e egl: Reshuffle headers to help less fortunate systems with X11
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.

In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.

Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.

However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.

Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.

Task-number: QTBUG-52928
Change-Id: I059f26b340b6e442e7296055915d18f5a1ce7a7f
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-03 14:38:14 +00:00
Edward Welbourne e6b1e918e1 QLinuxFbScreen: fix uninitialized member warnings
Prompted by Coverity CID 11720 (allegedly recently new in dev but
long-standing in 5.6).  Even assuming the class is used correctly -
test initialize() and only use if that succeeded - the destructor
would have passed uninitialized arguments to munmap() and ioctl().

Noticed a double close along the way: it's been fixed on dev but
should have been fixed in 5.6, too.  Documented why ioctl() failure in
switchToGraphicsMode() should at least do no harm.

Change-Id: Ie26a9eefa435b5ff5b1a02e03e29469b8db72d3c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-03 15:29:56 +00:00
Liang Qi 6357813207 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	configure
	src/3rdparty/double-conversion/include/double-conversion/utils.h
	src/corelib/global/qnamespace.qdoc
	src/corelib/tools/qsimd_p.h
	tests/auto/corelib/io/qfile/tst_qfile.cpp

Change-Id: I3ca1007bab5355d251c13002a18e93d81c254d34
2016-05-03 15:49:15 +02:00
Marc Mutz 5a76a3fb03 QtBase: use printf-style qWarning/qDebug where possible (II)
The printf-style version of QDebug expands to a lot less code than the
std::ostream-style version. Of course, you pay in type safety (but
compilers warn about it these days), you cannot stream complex Qt
types and streaming QStrings is awkward, but in many cases you
actually improve on readability.

But the main reason is that something that's not supposed to be
executed under normal operation has no business bloating executable
code size.

This is not an attempt at converting all qWarnings() to printf-style,
only the low-hanging fruit.

In this second part, replace
   qWarning() << "" << non-QString
with
   qWarning("..%.", non-QString).

QString (and QUrl etc) have special escaping handling when streamed
into QDebug, so leave those alone. They also seem to expand to less
code than the qPrintable() alternative, so there's no reason to
replace them.

Saves 2KiB, 3.4KiB, ~750b and ~450b in text size in QtCore, Gui,
Network and Widgets, resp., on optimized GCC 5.3 AMD64 builds.

Change-Id: Iae6823e543544347e628ca1060d6d51e3b04d3f4
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-05-03 04:35:06 +00:00
Oswald Buddenhagen be6a92ec09 remove redundant OTHER_FILES assignments
newer versions of qt creator understand QMAKE_EXTRA_COMPILERS and
INSTALLS, so there is no need to list the files twice.

Change-Id: Iccf3cc3248daf3422b8c366c2eb2d2f46c5f08d1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-02 18:34:47 +00:00
Tor Arne Vestbø 8badbd5040 iOS: Report correct physicalSize and physicalDotsPerInch for iPhone6+
On iPhone 6(s) Plus devices, or when display zoom is enabled in an iPhone 6,
the render buffer is scaled before being output on the physical display.
We have to take this into account when computing the physical size.

Task-number: QTBUG-50941
Change-Id: I318f3a866d039fccf0ba08f381fc9d8bcd676acd
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-05-02 17:27:06 +00:00
Urs Fleisch c6d041e7ca xcb: Fix drag and drop to Emacs.
Unfortunately, the improved patch for QTBUG-45812 fixed things for
Chromium, but did no longer work for Emacs. This fixes commit [269fdb]
to make it work for both Emacs and Chromium.

Task-number: QTBUG-45812
Change-Id: I2fca708503f27679681bc6959de1ad94943a063e
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-05-02 08:03:54 +00:00
Liang Qi 4679861105 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-05-02 07:03:53 +00:00
Andy Nichols c7b6e13450 Add QPlatformBackingStore::toImage() implementations
On platforms where it makes sense, add the implementation that makes
returning a QImage possible.  This makes it possible to grab raster
windows.

Change-Id: I89241728aa6f7811c56bb66cd86a64aa961d71f8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-30 20:20:31 +00:00
Louai Al-Khanji a1fd5d02bd xcb: support nested paint operations in remote scenarios
Recent changes to the xcb platform plugin added logic to paint to a
server-side X Pixmap when the MIT-SHM extension is unavailable. Those
changes also added logic to keep track of the dirty areas that need to
be flushed to the server from the backing store when the backing store
is flushed to a window.

Because a single QRegion was used to track those areas, nested paint
operations no longer accurately tracked all the dirty areas. Consider:

void Widget::paintEvent(QPaintEvent *) {
    QPainter p1(this);

    for (int i = 0; longRunningOperationInProgress(); i++) {
        QPixmap pixmap(size());
        QPainter p2(&pixmap);
        p2.drawText(pixmap.rect(), i & 1 ? "Working." : "Working..");
        p2.end();
        QBackingStore *bs = backingStore();
        bs->beginPaint(rect());
        p1.drawPixmap(0, 0, pixmap);
        bs->endPaint();
        bs->flush(rect(), windowHandle());
    }

    p1.fillRect(rect(), Qt::red);
    p1.drawText(rect(), "Done!");
}

While this code could be restructured, it is a common pattern in legacy
Qt applications which cannot be easily changed.

Change-Id: I3b919266abe41c96a584cb02f41cafac3f9d1d7c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-29 16:09:14 +00:00
Liang Qi b894a8def5 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	mkspecs/features/qml_module.prf
	mkspecs/features/qt_common.prf
	src/gui/text/qzip.cpp
	src/plugins/platforms/cocoa/qnsview.mm
	src/plugins/platforms/windows/array.h
	src/testlib/qtestcase.cpp
	src/widgets/dialogs/qfilesystemmodel.h

Change-Id: Ie41c5868415b81f7693c80e045497035504bb210
2016-04-29 17:55:20 +02:00
Marc Mutz b393641888 xcb: eradicate Q_FOREACH loops [needing qAsConst()]
... by replacing them with C++11 range-for loops.
To avoid detaches of these mutable Qt containers,
wrap the container in qAsConst().

Saves more than 2KiB in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: I9610e711edc01d2a1ba19fef65d6b000ffc77255
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-28 05:09:36 +00:00
Maurice Kalinowski 8a7311532b winrt: Refactor pointer device handling to support pen
In addition to pen events being handled as tablet events, we create
touch events. Same principle is used on other platforms as well. This
allows devices as Surfaces to use the pen with Qt applications.

Furthermore, the first update event does not have to be a press event,
as in a pen has proximity values describing a move without touch, but
also the HoloLens uses touch points as permanent pointer devices. They
all send an exit event once released or out of range. Hence, clean up
the internal touchpoint hash when the touch device is gone, not on
release.

Task-number: QTBUG-38681
Change-Id: I38acaa034a3cfe224098bfa36bfead5428f4db16
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-04-28 03:41:17 +00:00
Maurice Kalinowski 52e68d4e10 winrt: Fix memory leak for file reading
IInputStream::ReadAsync might create a separate buffer to fill in data.
Passing a buffer with GetAddressOf() can cause a memory leak of the size
of data to be read.

Instead, pass a separate buffer pointer and continue to use this one
after the async operation. This way, the OS can decide whether to switch
buffers or not, keeping ref counting in sync.

Task-number: QTBUG-52961
Change-Id: I9dfb627287142355ebcf74ca52427b4e8108e8d1
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-04-28 03:40:07 +00:00
Steve Mokris 2a995c77d4 Keep QColorDialog::ShowAlphaChannel from expanding the dialog on OS X.
Workaround for Apple rdar://25792119: If you invoke -setShowsAlpha:
multiple times before showing the color picker, its height grows
irrevocably.  Instead, only invoke it once, when we show the dialog.

Task-number: QTBUG-44620
Change-Id: I8ffc803b4216cdb466a651951f9f987a7b6c1f2e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-27 16:13:18 +00:00
Marc Mutz e81f52ecc7 xcb: eradicate Q_FOREACH loops [const-& returns]
... by replacing them with C++11 range-for loops.

The function QObject::children() returns by const-reference,
so its result can be passed to range-for without further changes.

Saves ~300B in text size on optimized GCC 6.0 Linux AMD64 builds.

Change-Id: I8360e946774b0d30233c0fa68f318872da61e867
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-27 15:29:34 +00:00
Marc Mutz a79c599df1 xcb: eradicate Q_FOREACH loops [already const]
... (or trivially marked const) local variables,
parameters, or data members, by replacing them with
C++11 range-for loops.

Saves ~1.5KiB in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: Ief6c0cbf08bcdcda28cb8ce6d72a13b7b6ac59c2
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-27 15:29:30 +00:00
Marc Mutz 654a5fe529 Optimize QXcbScreen::visualForFormat()
... by stopping the work when finding the first RGB candidate,
and otherwise only remembering the first candidate as a fall-back.

This way, we don't need to allocate memory as we did when collecting
the candidates in a QVector.

Saves more than 800b in text size on optimized GCC 6.0 Linux AMD64
builds.

Change-Id: I7d0cae69fa421fed881dd5a0f1aa45035d8f7461
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-04-27 15:29:27 +00:00
Marc Mutz 369572f892 xcb: don't iterate over .keys()
... iterate over the container itself instead. Avoids
temporary QList creation as well as the lookup cost
when actually calling value(key).

Saves more than 1KiB in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: If4b2fb7eada0e9cde72ab101a5f6e5cb1ba64054
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-27 15:29:24 +00:00
Liang Qi 23a36fd2bf Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/corelib/io/qprocess_win.cpp
	src/widgets/itemviews/qheaderview.cpp

Change-Id: I0a59ade9cd6e91f770fdf298a7d72a41e79fd761
2016-04-27 09:18:05 +02:00
Gabriel de Dietrich 6844f60dae QCocoaMenu: Have the menu delegate return the right amount of items
In some cases we move menu items around, therefore we should
not rely on QCocoaMenu::items() being the actual items inside
the menu. But, since the NSMenu is updated before hand, we can
rely on NSMenu.numberOfItems instead.

Change-Id: Icd4497beca4f52a6d38408eeaa2e6ec71b579685
Task-number: QTBUG-52931
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-27 06:07:59 +00:00
Marc Mutz 31c7b24aa5 Silence MSVC warnings when using certain std algorithms
The MSVC STL warns when passing naked pointers as non-bounded
iterators to algorithms such as std::equal and std::copy, in
an attempt to inform users that the range specified by that
iterator has an implicit minimum size that the caller of the
algorithm must ensure is met:

  warning C4996: 'std::_Equal1': Function call with parameters that may be unsafe - \
  this call relies on the caller to check that the passed values are correct. To \
  disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to \
  use Visual C++ 'Checked Iterators'

When building Qt, as well as when building user projects with
qmake (cf. 0a76b6bc7f), we
globally disable this warning (with -D_SCL_SECURE_NO_WARNINGS),
but since we started using STL algorithms in public headers (e.g.
in qvector.h), users get this warning in their own projects now,
unless they, too, define said macro. But such a requirement is
against the Qt policy to have headers that are warning-free as
much as possible.

The suggested way of fixing this warning is to wrap the naked
pointer in a stdext::unchecked_array_iterator before passing it
to the algorithm, cf. examples in

  https://msdn.microsoft.com/en-us/library/ttcz0bys%28v=vs.120%29.aspx

or, together with the capacity-made-explicit, in a
stdext::checked_array_iterator.

To avoid ifdefs for platforms that don't have these extensions
(which, incidentally, for the unchecked case, includes MSVC 2012),
wrap the calls in macros.

The end game here is to drop -D_SCL_SECURE_NO_WARNINGS, at least
for public headers, even though this commit also adds the wrapper
to implementation and private header files.

An alternative to the wrapper would have been the version of
std::equal that takes four iterators. However, that is a C++14
library feature, while this version of Qt still needs to compile
with a C++98 compiler, and, more importantly, there isn't, and
never will be, a corresponding 4-iterator version of std::copy.

Task-number: QTBUG-47948
Done-with: Stephen Kelly <steveire@gmail.com>
Change-Id: I1bbab257fb5f1c5042939c382a412b596112ff26
Reviewed-by: Stephen Kelly <ske@ableton.com>
2016-04-26 16:36:40 +00:00
Marc Mutz 40e4f75786 xcb: eradicate Q_FOREACH loops [rvalues]
... by replacing them with C++11 range-for loops.

This is the simplest of the patch series: Q_FOREACH took a
copy, so we do, too. Except we don't, since we're just
catching the return value that comes out of the function
(RVO). We can't feed the rvalues into range-for, because
they are non-const and would thus detach.

Change-Id: I982851f15868e62b7a191676ddf4ba6b92c0a42d
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-26 13:28:28 +00:00
Marc Mutz ee2e441018 QXcbConnection: add some qAsConst()
... to prevent hidden detach(es| attempts).

Saves ~160b in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: I74e1f1304c522b9a4349918e99f562853ec8684e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-26 13:28:19 +00:00
Marc Mutz 80fd691340 QXcbIntegration: simplify a switch
... by aggregating similar blocks under multiple case
labels, and caching functions's return values.

Even saves a few bytes in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: I5784567a09732b4e55b64163b69e7a946f0783ae
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-26 13:28:16 +00:00
Marc Mutz 1a7e5cdeab QXcbConnection: mark some more methods const
... because we can.

Change-Id: Ib5fd281a63ced9dce0de1f74fc849da6c6fc162a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-26 13:28:11 +00:00
Friedemann Kleint d7a3b61459 Windows QPA/High DPI: Scale accessibility coordinates.
Use High DPI when interfacing with the Accessibility API.

Task-number: QTBUG-52943
Task-number: QTBUG-50991
Change-Id: Ica4489222dca5d58864172470e634f709deb69f8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-26 13:12:07 +00:00
Shawn Rutledge 685dcd8527 OSX: mark mouse events from tablet devices as synthesized
This is equivalent to d7db6c6c19 on the
xcb platform.

Task-number: QTBUG-51617
Change-Id: I837a764c8382244307ba6aa02bd8bde12bd08bff
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-26 13:10:29 +00:00
Liang Qi 75d4742e04 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-04-26 11:08:23 +00:00
Liang Qi bb4b86618d Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	config.tests/unix/compile.test
	configure
	src/android/jar/src/org/qtproject/qt5/android/QtMessageDialogHelper.java
	src/corelib/global/qglobal.cpp
	src/widgets/kernel/qapplication.cpp
	src/widgets/styles/qwindowsvistastyle.cpp
	tests/auto/corelib/kernel/qobject/tst_qobject.cpp

Change-Id: I067083f34e5290aa5f7565e40c30a069cc37b83a
2016-04-25 14:03:45 +02:00
Marc Mutz 0d19a571cd Android: eradicate Q_FOREACH loops [rvalues]
... by replacing them with C++11 range-for loops.

This is the simplest of the patch series: Q_FOREACH took a
copy, so we do, too. Except we don't, since we're just
catching the return value that comes out of the function
(RVO). We can't feed the rvalues into range-for, because
they are non-const and would thus detach.

Change-Id: Ia086b1f3d072dd56c3545780490be03346df2880
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-04-25 07:42:48 +00:00
Oliver Wolff a1dec825f9 winrt: Skip context validation in ANGLE
The flag causes context validation to be skipped by ANGLE. If validation
is active nothing is rendered on Windows Phone (just a black screen) for
widget applications.
Everything works as expected without validation so we do without it.

Change-Id: I6f9ea249b653ba5a602bc33e75105c57b686b92d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-04-25 05:57:42 +00:00
Oliver Wolff e12ba07322 Update ANGLE to chromium/2651
Change-Id: I1cd32b780b1a0b913fab870e155ae1f4f9ac40d7
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-04-25 05:57:38 +00:00
Urs Fleisch 269fdbdd2b xcb: Fix drag and drop to applications like Emacs and Chromium.
Drops without matching time stamp do not work. I have fixed the issue by
reanimating the findXdndAwareParent() function (adapted to XCB) and
using it to find a matching transaction if all else fails.

Task-number: QTBUG-45812
Change-Id: Ibca15bbab02ccf2f25280418e9edf36972ebf9a0
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-04-25 05:47:46 +00:00
Shawn Rutledge 6e850af09d OSX: remove tablet->mouse event synth
The synthesis of mouse events for unhandled tablet events is now in
cross-platform code, so the platform plugins don't need to do it.

Task-number: QTBUG-47007
Change-Id: I948be398e4b1ab627a8dc97ca20c08dba4390238
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-25 05:22:42 +00:00
Marc Mutz bb71bd8de9 Android: eradicate Q_FOREACH loops [needing qAsConst()]
... by replacing them with C++11 range-for loops.
To avoid detaches of these mutable Qt containers,
wrap the container in qAsConst().

Change-Id: I9158c507f9249a7322b11c982bfcab1e6ed4a38a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-04-25 05:11:31 +00:00
Marc Mutz 54d26804d7 Android: eradicate Q_FOREACH loops [already const]
... (or trivially marked const) local variables,
parameters, or data members with trivial loop bodies,
by replacing them with C++11 range-for loops.

Change-Id: I25e9e2148abd7676305ebd18754dc647f217e48b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-04-25 05:11:28 +00:00
Maurice Kalinowski d9c187b390 winrt: emit application activation
Previously the user only got informed about the application getting
inactive or hidden, but not when the application was reactivated again.
This can cause problems with applications using for instance a camera as
that gets disabled when not being active and never return to a active
state again.

Change-Id: I5c1d8750db8e75043ecf261616a0bc98434a3863
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-04-23 06:26:54 +00:00
Błażej Szczygieł c511466d74 xcb: Properly process enter/leave events
Ignore enter/leave events when there is a window under mouse button.
Unset window under mouse button if other window is grabbed.
Smarter ignoring (un)grab ancestor enter/leave event.
Ignore ungrab inferior leave event.

Amends: b9f76db30d

Task-number: QTBUG-46576
Task-number: QTBUG-51573
Task-number: QTBUG-52332
Task-number: QTBUG-52488
Change-Id: I8d926309aa60bb8929728691c31ecf93d1e299ad
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-04-22 13:58:03 +00:00
Richard Moe Gustavsen 8586cccc07 iOS: (crash fix) ensure we don't clear focus object in a text responder transition
When IM hints changes (e.g as a result of transferring focus
between Qt objects), we sometimes need to reconfigure the keyboard.
And the way we do that is to create a new QIOSTextResponder that
matches the new configuration and tell it to become first responder.
And in that process we need to ensure that we don't clear the
focus object when the old text responder resigns. After all, it was
the one requesting the new IM configuration in the first place.

Since we set FirstResponderCandidate to point to the new text responder
just before telling the old one to resign, we can use that variable
to check if were in a first responder transition before clearing the
focus object.

Change-Id: I05bfb8180700a92a8f14f496044457583bcd38d3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-04-22 06:36:59 +00:00
Friedemann Kleint 9442b3a1c3 Windows QPA/GL: Avoid crash in GL driver.
QWindowsStaticOpenGLContext::doCreate(): Invoke
QWindowsOpenGLTester::supportedRenderers() only when needed; specifically,
do not unnecessarily call it when GLES/SW renderer is specified.
Amends change b4c8e15174.

Task-number: QTBUG-49541
Task-number: QTBUG-52693
Change-Id: I58d1c584d194f8e7fee35ee16b77575f86d3c22e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-22 06:32:09 +00:00
Timur Pocheptsov 5b54c352ed Cocoa integration - add a protection against dangling pointers
Backport watcher-sentinel trick (QPointer->QObject) from dev.

Task-number: QTBUG-42059
Change-Id: I9b2c7cde635c2ed9a3f667f216da62870d0b5ccb
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-04-22 01:20:44 +00:00
Karim Pinter b7ef2510d1 Adding notification feature to SQLite driver
This modification enables to use notification feature of SQLite with Qt
SQL driver, enables to subscribe for notifications and also to remove
notifications. close() is added to destructor to unregister
notifications in case it is used in multiple threads.

[ChangeLog][QtSql][SQLite] Adding notification feature to SQLite driver

Change-Id: I8b98787f5214a406357646a98711a8ff6045a0dd
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2016-04-21 10:56:24 +00:00
Friedemann Kleint e75bd17e3d QWindowsTheme::standardPixmap(): Do not create pixmaps with DPR.
The given size is mostly ignored and the resulting pixmaps typically end up
in a QIcon, which will clobber the DPR anyways when returning a pixmap
for a given size.
Moreover, returning a message box icon with a DPR > 1 when
high DPI scaling is active and Qt::AA_UseHighDpiPixmaps is not set
causes the pixmap to become too small due to some scaling error.

Task-number: QTBUG-52622
Change-Id: I8aaaa97667d6c168040e19b7edad9dfb7517f70f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-04-20 11:59:25 +00:00
Shawn Rutledge 12fe935bb6 xcb: remove tablet->mouse event synth; harmonize handle/report methods
The synthesis of mouse events for unhandled tablet events is now in
cross-platform code, so the platform plugins don't need to do it.

xi2HandleTabletEvent's signature included an eventListener which is
no longer needed; removing it makes it look needlessly inconsistent
with the signature of xi2ReportTabletEvent; and while we're at it,
might as well make the events const and deal with the repercussions.

Task-number: QTBUG-47007
Change-Id: I0f76c8ed2d2b0baed0652bc68286f1734b8b72ff
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-19 13:07:24 +00:00
Christian Stromme c22fcf03fb Android: Fix crash on startup
All internal settings are stored as strings, if the requested setting
value doesn't exist, or the type conversion fails, then an exception
is thrown. Instead of making use of the convenience functions we can
just get the original string an convert it ourself.

Task-number: QTBUG-52574
Change-Id: Ic410244a373318e167437eea4381335a907ccbf9
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2016-04-18 12:50:11 +00:00
Kai Koehne 4c6b0cf5d5 Xcb: Fix compilation with -no-c++11
nullptr (introduced in commit d7db6c6c19) is a C++11 keyword.

Change-Id: Id6aa639f5d2ddbe8b228f8648754c2b24ef53799
Reviewed-by: David Rosca <nowrep@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2016-04-17 18:28:17 +00:00
Friedemann Kleint 002f5fe52d Windows QPA: Fix top level flags for Qt::SplashScreen.
Set Qt::FramelessWindowHint so that the translucency logic triggers
correctly (raster windows). Fixes the splash screen of Qt Linguist
to be transparent.

Change-Id: I3d50129b7f15bee0eff6ce3318c7f0fec055dc45
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-04-16 09:41:29 +00:00
Lars Knoll dd22889ed6 Change the way we handle features that have sub-features
Make sure we always set the base feature as a flag in qtconfig, and
set the sub-feature in addition if it's being used.

Change-Id: Icfeb0ec1ac9e1a615b5b22eb5fcce47e0e7fc153
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-04-15 20:11:03 +00:00
Louai Al-Khanji 760b2929a3 xcb: Fix image scanline padding
Commit b9d386f2cc neglects to account for
the scanline padding requested by the X server. This can result in visual
artifacts if padding is required. This commit fixes this by factoring in
the X server's requested scanline padding when calculating image stride.

Change-Id: I082cb7101ec3a9c554b9b58a76f53f780b87d31e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-15 17:27:14 +00:00
Timur Pocheptsov 455f5df541 Fix gesture processing on OS X 10.11
Starting from 10.11 beginGestureWithEvent/endGestureWithEvent never
gets called, we must test event.phase instead (magnify/rotate gestures).
For a magnify/rotate gesture, we'll first test phase (on 10.11)
and manually call our begin/endGestureWithEvent.

Task-number: QTBUG-48666
Change-Id: I69752b3c6578360b98607ceea2cffb5c166bb7c9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-04-15 13:42:00 +00:00
Dominik Holland 224f31c0b5 Multi-screen handling for the eglfs_kms_egldevice backend
Separates the generic kms classes into a own kms static lib
called QtEglFsKmsSupport. The eglfs_kms plugin was changed
to use these base classes and got renamed accordingly to
QEglFSKmsGbm*.

The eglfs_kms_egldevice plugin got extended to also derive
from the kms base classed and by this provides multi-screen
support

Change-Id: I6de6a754e94cb8d52cf8e658b03c6bd6637674a1
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-15 11:20:28 +00:00
Jochen Seemann 1ce52b0ddd winrt: use visible bounds the get the visual area
On Windows Phone / Windows 10 Mobile, there are the status bar
and sometimes a navigation bar, which are hiding the visible
window area. In the Windows Phone code paths, the area of the
status bar was tracked and the visual area was dynamically shrinked.

This patch enables that we use ApplicationView::visibleBounds() on
every target (except Windows 8.1) to get the visible area of the
application. Its change event is now also used as a resize trigger
for manual resizing through user.

Task-number: QTBUG-51163
Change-Id: I7abe2a0978418cc941e118e212426852474c026a
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-04-15 04:33:33 +00:00
Timur Pocheptsov f942d82d14 Cocoa integration - invert 'masked out event' logic
If a mask region contains a point - the event is _not_ masked out.

Task-number: QTBUG-52533
Change-Id: I56d0276f5e3853479c2687addb95c2600edd3cda
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-04-13 19:45:37 +00:00
Tor Arne Vestbø b808c0099a OS X: Fix available geometry at startup when menu bar is hidden
Later versions of OS X allow you to auto-hide the menu bar, which should
free up 22 pixels vertically at the top of the screen in the available
geometry. Due to how the NSScreens are invalidated (asynchronously), we
pick up this geometry change too late, resulting in QWindows maximizing
as if the menu bar was still there.

To work around this we explicitly tell the system to apply the default
presentation options before initializing the QScreen properties, which
results in the NSScreen being invalidated synchronously and having the
right available geometry.

Change-Id: I40d6ef2211165d53e0825173e3b6c6c17a5a954e
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
2016-04-13 15:46:56 +00:00
Alexander Volkov d8667fde18 xcb: Fix interpretation of the size from RRCrtcChangeNotify
The size in RRCrtcChangeNotify is a size of the mode and it is
not rotated. At the same time when we call RRGetCrtcInfo, it
returns a rotated size, which is then passed to
QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation).

So to pass the expected size to QXcbScreen::updateGeometry()
after receiving RRCrtcChangeNotify, we should rotate the size
according the screen rotation.

Change-Id: If5b5b52403b077d3cd64b9a05d938bb9ac00b1e0
Reviewed-by: Daniel Vrátil <daniel.vratil@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-13 09:54:41 +00:00
Rolland Dudemaine 9b35b0e8dc Make the eglfs and eglfs-viv detection and build work for INTEGRITY.
The majority of these changes is about #ifdef-ing the Linux-specific use
of /dev/fb0.
The display handle is also acquired using fbGetDisplay(), which is
equivalent to fbGetDisplayByIndex(0) but is also portable.

Change-Id: I6f460edc9c06ae7461a6aab2a816ac6f645208c4
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2016-04-13 08:14:40 +00:00
Liang Qi eb3e3853c4 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-04-13 09:45:58 +00:00
Eskil Abrahamsen Blomfeldt 33044b83c2 Add color font support on Windows
Detect if DirectWrite 2 is available, and support color fonts if possible.
One limitation worth mentioning is that if the color font contains regular,
monochrome glyphs as well, then these will be drawn in black, and not in the
pen color. Fixing this would require some elaborate rewrites in the font
rendering system, since we would have to have two font caches per
color font (one for mono and one for colors), or do some sort of trick where
we make argb(r, g, b, 0) mean subpixel alpha instead, and detect glyphs that
are not correctly premultiplied when blitting to the screen.

Another limitation is that the approach does not work with distance field
rendering. In principle we could support this on Windows, since the
format is vector based, but it would also require substantial work and
it is not possible to support for Apple/Google fonts anyway, so it would
just lead to code which is not cross-platform.

[ChangeLog][Windows] Added support for color fonts (color emojis) when
DirectWrite 2 is available.

Change-Id: I6a608dd5d2aa3a7e762a06830902bddac7c550a5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-04-13 07:30:35 +00:00
Liang Qi b94773c9c8 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	config.tests/unix/compile.test
	src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
	src/testlib/qtestcase.cpp
	src/testlib/qtestcase.qdoc

Change-Id: Ied3c471dbc9a076c8de33d673bd557e88575609d
2016-04-13 06:55:37 +02:00
Lars Knoll 53412df398 Fix the naming of the CFLAGS/LIBS for Gtk3
The feature is called gtk3, so the naming of the CFLAGS/LIBS should reflect that.
At the same time, remove the unused QMAKE_LIBS_QGOBJECT variable.

Change-Id: I565a098aaa80f380de0da534d058f315e77a33f6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-04-12 11:07:17 +00:00
Gabriel de Dietrich 5f41d344e9 QNSView: Disable focus ring
Not only we don't need Cocoa to display it for us, but it also
seems to take a lot of time after the call to -[NSView
setNeedsDisplayInRect:].

While resizing a large and busy widgets window, we can decrease
the relative time spent in -[QNSView flushBackingStore:region:
offset:] from over 15% down to around 3%.

Change-Id: I2a8d51be28b77c4c3da2588d9a14e461e7910167
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-04-11 20:37:51 +00:00
Elena Zaretskaya 3f73ecd59a Fix 2 cursors under EGLFS_KMS
Don't create hwcursor if it is disabled in QT_QPA_EGLFS_KMS_CONFIG.

Task-number: QTBUG-52403
Change-Id: I4e6f45d5b773dc2d50cd012179cd23452d910537
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-11 15:00:43 +00:00
Liang Qi f34e73a16a Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	src/corelib/kernel/qobject.cpp
	src/gui/painting/qpaintengine_raster.cpp

Change-Id: I74e1779832f43d033708dcfd6b666c7b4f0111fb
2016-04-11 09:12:36 +02:00
Louai Al-Khanji b9d386f2cc xcb: Optimize non-shm backing store flushing
Unfortunately the functions in xcb-image are quite slow, both for the
subimage generation and the byte order swapping. xcb_image_subimage is
implemented as a pixel by pixel copy, and the xcb byte swapping is done
manually without utilizing potential CPU instructions to accelerate the
swap.

Replace both with their Qt equivalents.

Change-Id: I1fe1fe5d9576fdf2bab4a8c401d2a6bb842c2727
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-10 18:29:06 +00:00
Louai Al-Khanji 5f39a0ef8d X11: Better support non-32bit visuals
This patch improves support for non-32bit screen configurations on X. The
patch mostly touches the xcb platform plugin but the changes to the glx
convenience functions do affect e.g. the offscreen plugin as well.

Since QWindow instances are now by default of type RasterGL instead of
Raster the majority of all windows are in fact instances of QXcbGlxWindow.
This means that the eventual QSurfaceFormat that we use is chosen based on
the available OpenGL configurations. Here the GLX config resolution code
did not do a very good job in trying to find the closest match relative to
the requested QSurfaceFormat, instead preferring higher bit depths.

This is an issue since many configurations support 32-bit windows even
if the screen itself has a root window with depth 16. In particular,
servers supporting both GLX and Render are very likely to have such
visuals. Particularly affected are remote X connections - even if the
application itself makes no use of OpenGL at all!

The changes introduced by this patch are as follows:
 1. Improve the GLX visual selection logic
 2. Improve the xcb visual selection logic
 3. Remove duplicated visual lookup for OpenGL-enabled windows
 4. Configure the default QSurfaceFormat to match the primary screen depth

Change-Id: Id1c176359e63a4581410e20350db5ac2c083e1cf
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-09 05:17:27 +00:00
Anton Kudryavtsev 8903460093 QtBase: use erase and std::remove_if with QList and QVector
... instead of using removeAt in a loop, with quadratic complexity.

Change-Id: I38b49e56b12c396db9fc0f1b75d8fb43c503a7f6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-04-08 19:35:26 +00:00
Shawn Rutledge f931e5e72d add cross-platform tablet->mouse event synth; enable on Android
It's urgent to fix the issue that on Android, it became impossible
to interact with any widget or MouseArea which handles only mouse
events but not tablet events, using the stylus, because stylus events
are sent only as QTabletEvents.  Before 5.6 (change
01d78ba86a) they were sent as
touch events, and mouse events were synthesized from those.  Whereas
on other platforms, every QTabletEvent is followed by a synthesized
QMouseEvent.

This fix proceeds in the direction that event synthesis should be done
in cross-platform code so that platform plugins don't have to repeat it,
following the same pattern as for touch->mouse synthesis.  Just as
in that case, the application can disable it, and the platform plugin
can also report that it's unnecessary for Qt to do the synthesis
because the platform already does.

So QTBUG-51618 is fixed, but QTBUG-47007 requires us to remove the
tablet->mouse synthesis from all platform plugins, because the plugin
does not know whether the tablet event was accepted or not, so it does
not have enough information to decide whether to synthesize a mouse
event.  Synthesis has been unconditional until now, which contradicts
what the documentation says: the mouse event should be sent only if
the tablet event is NOT accepted.  We can now gradually make this
promise come true.

[ChangeLog][QtCore][Tablet support] A synthetic mouse event will
no longer be sent after every QTabletEvent, only after those which are
not accepted (as documented).

Task-number: QTBUG-47007
Task-number: QTBUG-51618
Change-Id: I99404e0c2b39bbca4377be6fd48e0c6b20338466
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-08 19:33:28 +00:00
BogDan Vatra b2c0e5af18 By default use native menu bar
Task-number: QTBUG-52010
Change-Id: I8f5feacc41719b1c084ec5a8763e597c1dab716c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-04-08 12:45:18 +00:00
Shawn Rutledge 282ebf9bd2 xcb: replace qt.xcb.glintegration logging category with qt.qpa.gl
This is more concise, consistent with Windows, and fits the pattern
that all logging categories in QPA plugins should begin with qt.qpa.

Change-Id: Ica169b547cb3d816e6e2c0449f0e4a0c58883b9a
Reviewed-by: Gatis Paeglis <gatis.paeglis@theqtcompany.com>
2016-04-08 07:25:39 +00:00
Oliver Wolff a064bcf883 winrt: mimic desktop Window's "QKeyEvent::isAutoRepeat" behavior
We should mimic desktop Qt's behavior as close as possible. That means,
that a key release event is triggered between auto generated press
events for most keys. For some keys like modifiers, caps lock, scroll
lock etc. there are no auto repeated events if the key is held down.

The "last" release event after having held the key and several events
are triggered does not have the isAutoRepeat flag set so we should not
have that flag in this case either.

Task-number: QTBUG-52055
Change-Id: I001a73416c4b2072d307ee5d87c7cb8406c9575f
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-04-08 05:57:22 +00:00
Oliver Wolff fe4fad790e winrt: Fix QKeyEvent::isAutoRepeat
When keeping a key pressed CorePhysicalKeyStatus'
RepeatCount stays 1 while WasKeyDown changes from
false to true. Thus WasKeyDown should be used to
determine the auto repeat status of the key event.

Task-number: QTBUG-52055
Change-Id: I7cde6b92473bd5335e85418c2b92cfe8f338975c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-04-08 05:57:20 +00:00
Lars Knoll 211f888a9f Consistent naming for Xinput2 related defines
The feature is called xinput2, so the defines should have this in their name as well.

Change-Id: I661dd3ea3726f4a0954e788d5f0083ace10bbe89
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-04-07 16:18:53 +00:00
Lars Knoll da95152dfb Unify naming of LIBS/CFLAGS for 3rd party libraries
Most libs use QMAKE_LIBS/CFLAGS, but some have other naming
conventions. Unify them into using QMAKE_LIBS/CFLAGS.

Change-Id: I39b188adc1f9a223a83b294c5315c3095a9c68de
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-04-07 16:18:03 +00:00
Shawn Rutledge 5f136bccd8 QTouchEvent: add uniqueId and rotation; TUIO: support fiducial tokens
TUIO supports tracking tagged physical objects on touchscreens by
various means (QR codes, RFIDs etc.)  It can detect both position
and rotation.  Likewise, it may be possible for some touchscreens or
drivers to detect orientation of the fingers.  So, just as QTabletEvent
has rotation, each touchpoint needs to include the rotation value.

When using tokens, each object has a permanent unique ID, whereas
QTouchEvent::TouchPoint::id() is a transient ID which usually auto-
increments each time a finger is pressed to the device.  So we need to
make that available too, to identify each token.  Different platforms
may use different kinds of IDs (int, UUID, QR code etc.); however for
TUIO 1.x, the unique IDs are just 32-bit integers.  QPointerUniqueId
is added, storing only a qint64 for now (like QTabletEvent::uniqueId())
but able to be expanded as necessary later on.

Task-number: QTBUG-51844
Change-Id: I04182042f47fa2954728079139a4664a31184b54
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-04-07 12:35:03 +00:00
Gatis Paeglis 5e38706624 Reduce verbosity for QT_XCB_GL_INTEGRATION=none
When QT_XCB_GL_INTEGRATION=none we were printing:

1) qt.xcb.glintegration: QT_XCB_GL_INTEGRATION is set to "none"
2) qt.xcb.glintegration: Choosing xcb gl-integration based on following priority ()
3) qt.xcb.glintegration: Failed to create xcb gl-integration

Omit line 2 (useless) and line 3 (misleading).

Change-Id: If5e65a5bc8cc4a1fa97858049a26aac9a9535950
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-04-07 11:32:56 +00:00
Lars Knoll 0452c25aed Always compile sql drivers as plugins
Compiling the drivers into Qt Sql does not make a lot of sense
anymore, as we handle plugins well enough in the build system
these days.

[ChangeLog][Build system] SQL drivers are now always compiled as plugins.

Change-Id: I364b82a480849399d1fafe4b20e9f08922569260
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-04-07 09:08:53 +00:00
Lars Knoll 00ca784be6 Always build JPEG and GIF support as plugins
Our handling of plugins when Qt is build statically is
nowadays good enough, so we don't need to build the
JPEG and GIF support directly into Qt for static builds.
Let's simply always build them as plugins.

Also simplify the logic in configure, and get rid of the
no-gif, no-jpeg and no-png config variables.

[ChangelLog][Build system] JPEG and GIF image support is now
always built as a plugin. Removed -imageformat-[jpeg|gif]
arguments to configure.

Change-Id: Ic01559ff406c966807b3be8761252e8802adcdf7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-04-07 09:08:41 +00:00
Liang Qi ee0951d69b Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/network/access/qftp.cpp
	src/widgets/itemviews/qheaderview.cpp
	src/widgets/itemviews/qlistview.cpp
	tests/auto/network/access/qftp/tst_qftp.cpp

Change-Id: I9f928f25d45d8944dd60bb583f649fc1615bc5d9
2016-04-07 10:47:20 +02:00
Friedemann Kleint e4e62496ac Windows QPA: Scale hotspot of custom cursors correctly.
Separate factors in QWindowsCursor::createPixmapCursor()
and apply factor to the hotspot.

Task-number: QTBUG-52276
Change-Id: Ia5a5db39ddc2bc4215a23ff8625431af9b4a76d8
Reviewed-by: Adam Light <aclight@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-04-06 18:28:00 +00:00
Friedemann Kleint c7ec317822 Direct2D QPA: Fix build with clang-cl.
Remove overzealous constexpr triggering errors like:

in file included from .\qwindowsdirect2dpaintengine.cpp:44:
./qwindowsdirect2dhelpers.h(58,37) :  error: constexpr function never produces a constant expression [-Winvalid-constexpr]
Q_DECL_CONSTEXPR inline D2D1_RECT_F to_d2d_rect_f(const QRectF &qrect)
                                    ^
./qwindowsdirect2dhelpers.h(60,12) :  note: non-constexpr function 'RectF' cannot be used in a constant expression
    return D2D1::RectF(qrect.x(), qrect.y(), qrect.x() + qrect.width(), qrect.y() + qrect.height());
           ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\d2d1helper.h(160,5) :  note: declared here
    RectF(
    ^

Task-number: QTBUG-50860
Change-Id: I0bb4d17b7a7db69c5cc7e286ef0b8ff104f72b2e
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-04-06 18:24:39 +00:00
Friedemann Kleint 4701af32df Direct2D QPA: Fix build.
Directly link against DwmApi and fix breakage introduced by refactoring
QRegion.

Change-Id: I45cd696de630aebb5347130560ab69530eefbcdb
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-04-06 14:42:01 +00:00