Commit Graph

6024 Commits (4700a32f214eaa54ae4ddddd06936d6ca85dd72f)

Author SHA1 Message Date
Thiago Macieira 524f39db89 gtk3: Fix use of dangling pointers
QString::toUtf8() returns QByteArray, which got implicitly converted to
C strings and promptly deleted. Instead, return the QByteArray to the
caller.

Found by ASAN:
==13935==ERROR: AddressSanitizer: heap-use-after-free on address 0x6060000dffb8 at pc 0x7f764f27320b bp 0x7ffd49b11bb0 sp 0x7ffd49b11358
READ of size 7 at 0x6060000dffb8 thread T0
    #1 0x7f7649d174e2 in g_strdup (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x684e2)
    #2 0x7f763f7abe5b  (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x39e5b)
    #3 0x7f763f78915a in g_object_new_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x1715a)
    #4 0x7f763f789520 in g_object_new (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x17520)
    #5 0x7f7640f6bcb0 in gtk_dialog_add_button (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x186cb0)
    #6 0x7f7640f8d2c9 in gtk_file_chooser_dialog_new (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x1a82c9)
    #7 0x7f7641727281  (/opt/Qt5.8.0/5.8/gcc_64/plugins/platformthemes/libqgtk3.so+0x13281)

Task-number: QTBUG-59611
Change-Id: I37cc967e689f4523b504fffd14adbf944b53b754
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2017-03-22 06:40:47 +00:00
Liang Qi 65faf45655 Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	src/plugins/platforms/eglfs/eglfs-plugin.pro

Change-Id: Id76cdbb41b7758572a3b8ea4dcb40d49bac968db
2017-03-21 19:07:53 +01:00
Michael Jabbour ac74abdf50 PostgreSQL: fix datetime format when system locale doesn't use arabic numerals
psql driver was previously using QDateTime::toString() function which is locale-depndent.

Task-number: QTBUG-59524
Change-Id: I7f50f95b5c82e66476abfee24ad28b78b3257041
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-18 19:37:35 +00:00
Serge Lysenko 9ef14bcc3a Fix Windows DnD: Wrong qApp mouse buttons state after external DnD
An QApplication::mouseButtons() value could stay outdated after external
DnD operations, e.g. dragging an object outside Qt application or vice
versa. Also user can cancel DnD with Escape key.

Task-number: QTBUG-55885
Task-number: QTBUG-59539
Change-Id: Ia6deb4ae5ccfe77e6d6c2464de40cd06fc71f9b8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-03-18 17:08:42 +00:00
Oleg Yadrov 38a55c7813 QCocoaWindow: fix geometry issue when only minimumSize is set
When only minimumSize was set and it matched to the size NSView was
created with, viewDidChangeFrame() was not called for the window and
it's internal geometry value was still (0, 0) what led to unpleasant
side effects such as QML content was not displayed until something
caused an update.

Task-number: QTBUG-58963
Change-Id: Ib12d36d405969971e7ff62b79b50c3d78928a649
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2017-03-18 16:42:01 +00:00
Allan Sandfeld Jensen 6cd8a90d29 Include missing errno.h
Fixes linux-clang-libc++ builds.

Change-Id: Id75c35d858123193e7d29b0bbb113d2c109a7560
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-03-18 00:50:37 +00:00
Peter Seiderer e9a7739e77 eglfs: fix x11 header related compile failure
Add egl config and QT_EGL_NO_X11 define (as all other eglfs project
files do).

Task-number: QTBUG-59427
Change-Id: Ifbb11eae0fdf0e58c0b7feecb9a7914a889c8f77
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-03-17 11:43:46 +00:00
Thiago Macieira f418d1b26a Remove a Q_GLOBAL_STATIC with QMutex in favor of QBasicAtomicInt
Much simpler, no memory allocation, no locking.

Change-Id: Iae839f6a131a4f0784bffffd14a9e70c7b62d9a7
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-03-17 06:10:16 +00:00
Gabriel de Dietrich 99adabdb7e QNSView: Harden logic around platform window access
Some users have reported crashes in -[QNSView mouseEnteredImpl:]
which we believe are due to null m_platformWindow. The stack
traces are like the one below or similar:

    0 libqcocoa_dylib   QNSView                 mouseEnteredImpl_ 0x1F
    1 appkit            NSTrackingArea          _dispatchMouseEntered_ 0xA2
    2 appkit            NSApplication           sendEvent_ 0xF4D
    3 libqcocoa_dylib   QNSApplication          sendEvent_ 0x4E
    4 libqcocoa_dylib   QCocoaEventDispatcher   processEvents 0x184
    5 qtcore            QEventLoop              exec 0x19C
    6 qtwidgets         QDialog                 exec 0x20B

Moreover, since 2f505b79a4, that
member is a QPointer, so we should do more systematic checks.

Change-Id: Iced447515a4ae07a62734e587f5b08d46d313071
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-03-16 21:41:52 +00:00
Konstantin Ritt b21069d6fa Android: Fix Accessibility items positioning with QHighDpi enabled
the View's position and metrics are in pixels, not points

Change-Id: I285d5378db98187f54019bff9b8a1cde05dc3b35
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-03-16 20:05:34 +00:00
Jeremy Katz 3e0355014e warn of blacklisted GLX OpenGL renderers and vendors
Notify users when multithreaded OpenGL is disabled due to the
renderer or vendor blacklist.

Change-Id: I16a80568afe87b227575102ca839f18050613e90
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-03-16 18:55:52 +00:00
Gatis Paeglis c75e3f70b4 xcb: cleanup QXcbWindow::relayFocusToModalWindow()
- recursion is not needed for walking up the parent chain;
- use camel-case, modal_window -> modalWindow;

Change-Id: I4b7697f2388fd16f11be67ba475bd63ad249d89e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-03-14 11:41:32 +00:00
Shawn Rutledge 550d7930d1 xcb: send keyboard modifiers with every QTabletEvent
Task-number: QTBUG-59415
Change-Id: If64a6513131fd85189e3621cb2a105e80e919ecf
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-03-14 09:11:44 +00:00
Liang Qi d51c3ecf8e Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	examples/network/network.pro
	mkspecs/features/mac/default_post.prf
	src/corelib/io/qfilesystemengine_win.cpp
	src/corelib/io/qprocess.cpp
	src/corelib/io/qprocess.h
	src/corelib/io/qprocess_p.h
	src/corelib/io/qprocess_unix.cpp
	src/corelib/io/qprocess_win.cpp
	src/corelib/thread/qmutex.cpp
	src/platformsupport/fontdatabases/windows/windows.pri
	src/plugins/platforms/eglfs/eglfsdeviceintegration.pro
	tests/auto/corelib/io/io.pro

Change-Id: I8a27e0e141454818bba9c433200a4e84a88d147e
2017-03-13 15:55:44 +01:00
Samuli Piippo edf0be818c Use lowercase name for iphlpapi library
Cross-compilation on linux with mingw-w64 failed, since it provides
all libraries in lowercase name.

Change-Id: I8e82a4504d4ec9d3047af6b1d6a11945754f182d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-03-13 09:39:19 +00:00
Jocelyn Turcotte 8afc6146be Windows QPA: Better recover from removed screens when fullscreen
QWindowsWindow::handleResized would call isFullScreen_sys which checks
if the window's screen geometry matches the one of the window. When
switching back from fullscreen, Windows will have set the geometry to
fill the next window, but we don't switch QScreen until later in that
function, inside handleGeometryChange. This would result in our window
to take the whole screen geometry, but the FullScreen state wouldn't
be transferred to the new screen.

Fix the issue by using screenForGeometry and check if we are fullscreen
on any screen.

Also make sure that we check the validity of m_savedFrameGeometry when
restoring after a screen remove, since we would previously restore to an
area not covered by any screen anymore.

Change-Id: I43bc02738007918e9a26c1d27a699c51d3365034
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-03-08 09:23:44 +00:00
Oswald Buddenhagen 473248df14 put load(qt_plugin) at end of project file
amends a28364bc1.

Change-Id: I8e6044abcbfffde8688d87cd3aa722c0c362534c
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-03-06 18:43:26 +00:00
Ulf Hermann d6330a19b2 Use QT_CONFIG(library) instead of QT_NO_LIBRARY
For the windows file system engine, we add an extra macro to use
library loading if configured to do so, but avoid it on WinRT, as
none of the symbols would be found.

We also QT_REQUIRE_CONFIG(library) in the library headers and
exclude the sources from the build if library loading is disabled.
This, in turn, makes it necessary to clean up some header inclusions.

Change-Id: I2b152cb5b47a2658996b6f4702b038536a5704ec
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-03-06 11:27:20 +00:00
Shawn Rutledge 46bf3d71e5 xcb: stringify enums for tablet qt.qpa.input.events qCDebug
It's a bit easier to read, not having to look up TabletDevice and
PointerType enum values manually.

Change-Id: I53353be4dcea3e2cb875f04250502ffe802fc971
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-03-03 20:24:31 +00:00
Albert Astals Cid 0cd15fd94d Make "finger touch" not be a tablet
Otherwise QTouchDevices::devices() doesn't return the touchscreen on my Thinkpad Yoga 460

Change-Id: Ibb829df95f92152a77c512e4325522825901074e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-03-03 08:14:44 +00:00
Paul Olav Tvete 259adc5e77 Fix build with -no-opengl
Change-Id: I6fb61944ef88e328a94ea6b7ab42db271828a602
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-03-03 08:05:03 +00:00
Kai Koehne 00696c32bc BSD plugins: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I27cee9135228dabcf1ece5dcf15db18a2aa536f9
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-03-03 07:26:25 +00:00
Kai Koehne 3ffb0b50a4 GTK3 plugin: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I6e925378ef4e82bdc739d23186d2dd6f23370d7a
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-03-03 07:26:17 +00:00
Maurice Kalinowski 66e1d20537 winrt: Fix potential warning
fix warning about non-portable-includepath due to case insensitivity on
windows file system.

Change-Id: Ib92db836910c2b9d06a18c841e7c6f0c2e9abab4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-03-03 06:59:11 +00:00
Maurice Kalinowski 374e0223c2 winrt: Fix compiler warning
The drag event handler classes should have virtual destructors.

Change-Id: Ia011856eec37ed303649a1eda036c52f5fa9f8e5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-03-03 06:59:05 +00:00
Gatis Paeglis 1a5deb7e0e xcb: fix misuse of xcb_send_event
This fixes the following Valgrind warning:

"Syscall param writev(vector[...]) points to uninitialised byte(s)
Uninitialised value was created by a stack allocation"

The xcb_send_event() requires all events to have 32 bytes.
It calls memcpy() on the passed in event. If the passed in
event is less than 32 bytes, memcpy() reaches into unrelated
memory. And as it turns out, this behavior is actually
described in the xcb_send_event function's documentation.

This patch adds a macro that declares an event for safe
usage with xcb_send_event.

Change-Id: Ifcaab5e9a3b52b7f64ac930b423e0c7798bbfedb
Done-with: Uli Schlachter
Task-number: QTBUG-56518
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-03-01 15:15:18 +00:00
Paul Olav Tvete 432fd5a5af Make VNC a proper feature
Change-Id: Iffae3f4d77f46bbf7ac38e7c9bc916f060606dd9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-03-01 09:01:23 +00:00
Paul Olav Tvete 1399cacb6b Fix build with -no-feature-cursor
Change-Id: I971dbe7827adf0cf06337348a0d011632c364725
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-03-01 09:01:19 +00:00
Paul Olav Tvete 782e1caa9f Fix build with -no-feature-tabletevent
Change-Id: I5f16db38a3a54acaa76f764b9d4d7167640587c9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-03-01 09:01:11 +00:00
Kai Koehne a244636817 Windows QPA: Replace LGP21 with LGPL license header
Also use canonical contact url.

Change-Id: I58c7f5309883fa775d1bf7b56692e4c237a3f5a4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-28 15:34:46 +00:00
Kai Koehne 3ea8102343 Integrity plugin: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I7faf9b329f4dd2c2a422d02e171bc2d39c359ed3
Reviewed-by: Rolland Dudemaine <rolland@ghs.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-02-28 15:34:40 +00:00
Kai Koehne 5590d84062 bsdfb plugin: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: Iaf22c48d0a548efaccd816132e8730cbb6e0bb5d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-28 15:34:35 +00:00
Kai Koehne 2ef1d48be7 IOS: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: Id1d8328e6cc9aab82a30e0ee3a971e6935341b42
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-02-28 15:34:27 +00:00
Joni Poikelin e7f019011a Fix wrong codec with MySQL plugin in newer versions
Since MySQL now properly supports UTF-8 through utf8mb4 option, it
caused regression on systems which did not use UTF-8 encoding by default
which caused queries to fail as they were converted into system codec.
To fix this, simply use UTF-8 encoding for queries when MySQL supports
it.

Task-number: QTBUG-59176
Change-Id: I21cc9102b15df15a31bc7c74469321c44a257946
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-02-28 05:10:47 +00:00
Shawn Rutledge 2b2fefb336 xcb: correct conversion of AbsX/AbsY to tablet width and height
This was a mistake in cb37ab8298

Change-Id: I5897ceb34ab4aa1655efd20697d0e761cf7796b1
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
2017-02-27 15:45:29 +00:00
Oswald Buddenhagen 0d7ed8f5f3 streamline libdl detection and linking
instead of having a library and a test, use a library with two sources,
the first being empty (i.e., just libc). this allows us doing away with
the "libdl" feature, and using just the "dlopen" one.

subsequently, replace all LIBS+=$$QMAKE_LIBS_DYNLOAD with
QMAKE_USE+=libdl.
the definitions of QMAKE_LIBS_DYNLOAD remain in the qmakespecs for
backwards compat only. n.b.: the only specs where it is not empty or
"-ldl" (i.e., what we support now) are the hpux ones, where the library
is called 'dld'.

technically, the "library" feature should depend on '!unix || dlopen', but
that's for a later patch.

Change-Id: Ib8546affc4b7bc757f1a76729573ddd00e152176
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-02-27 12:20:44 +00:00
Liang Qi de49839df8 Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	mkspecs/features/moc.prf

Change-Id: Ia71c8e3b3185f7c999bf226d0675051b10b8740b
2017-02-24 20:01:42 +01:00
Shawn Rutledge ea615b421b handle TabletMove events during stylus hover
The main reason for this is to get feedback about the stylus orientation
(angles and rotation) before the user presses it.  For example an application
might provide an image of the brush which rotates along with the stylus.  As
with mouse events, applications can distinguish hovering by the fact that no
buttons are pressed.

On the xcb platform we need to stop blocking the hover events, and in
QWidgetWindow we need to send the event to the widget being hovered, while
keeping the existing "grab" behavior: after pressing the stylus (or any button
on the stylus or on the tablet), keep sending the events to the same widget
until release.

Task-number: QTBUG-26116
Change-Id: Iaed8b3b94961290dbb29b5fd2ea892fed7221685
Reviewed-by: Dmitry Kazakov <dimula73@gmail.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-02-23 10:42:23 +00:00
Eskil Abrahamsen Blomfeldt 440ccba0ab Android: Fix OpenGL shader compilation on updated emulator
In 0ae4b948515af904dba397448839056d9b7965af, we added a work-around
specifically for the Android emulator, causing it to override the
precision qualifiers in shader code, since the emulator would send
the shader code directly to the host OpenGL driver and thus there
was no guarantee that the qualifiers would be supported.

Since then, the original issue with the emulator has been fixed,
so now Qt applications are failing because of the work-around.

[ChangeLog][Android] Removed old work-around which was causing
OpenGL shader compilation to fail on updated Android emulators.

Task-number: QTBUG-44697
Change-Id: I0da879b3a8fbe7cb2d0969cdf45664d0b3499891
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-23 07:56:14 +00:00
Tor Arne Vestbø 53c0568924 macOS: Make sure NSResizableWindowMask is set when toggling fullscreen
Instead of setting the mask in toggleFullScreen(), which is only hit
when going to fullscreen via our own API, we do it in the window
notification callbacks, which also includes going to full screen via
the native macOS title bar buttons. This allows making customized
windows without Qt::WindowMaximizeButtonHint full screen with the
full geometry of the screen.

Change-Id: I63c3e4582ea7c4fe8c0008265793c5f656b830b2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-22 07:58:20 +00:00
Tor Arne Vestbø c585802e94 QWindow: Remove "_q_foreignWinId" dynamic property
The platform plugins reading this out of the QWindow was a layering
violation, and propagates the notion that a window can shape shift
into representing a new native handle, while none of the platform
plugins support this.

A foreign QWindow is created via the factory function fromWinId(),
at which point we can pass the WId all the way to the platform
plugin as function arguments, where the platform will create a
corresponding platform-window.

The platform window can then answer the question of whether or
not it's representing a foreign window, which determines a few
behavioral changes here and there, as well as supplying the
native window handle back for QWindow::winId();

[ChangeLog][QtGui][QWindow] The "_q_foreignWinId" dynamic property
is no longer set nor read.

[ChangeLog][QtGui][QPA] The function createForeignWindow() has been
added to QPlatormIntegration and is now responsible for creating
foreign windows. The function isForeignWindow() in QPlatformWindow
has been added, and platforms should implement this to return true
for windows created by createForeignWindow().

Task-number: QTBUG-58383
Change-Id: If84142f95172f62b9377eb5d2a4d792cad36010b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-22 07:58:07 +00:00
Tor Arne Vestbø 2fbe54472e macOS: Retain foreign windows
Regression after 89842b97d7, where the retain was part of setView.

We release m_view in the destructor, regardless of how the view was
acquired, and the non-foreign window retains by being the one creating
the view.

Task-number: QTBUG-59001
Change-Id: I6d9621a63ea6ec2cee008986b0ab72ff61110ad7
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-20 13:56:12 +00:00
Marc Mutz 9965e92e4f Make better use of new QStringList::join(QLatin1String) overload
It was added in Qt 5.8.

Change-Id: I7194fbfaef9219110604f3b03a893a658c996c06
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-19 08:46:00 +00:00
David Faure cfe1a295fc qeglfskmsegldevicescreen.cpp: add errno.h include
Compilation failed with clang 3.9.1:
qeglfskmsegldevicescreen.cpp:104:27: error: use of undeclared identifier 'errno'
            qErrnoWarning(errno, "drmModeSetCrtc failed");

Change-Id: I7cf08494359092b9cdac10bb013ac56c3ddf5597
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-18 10:53:18 +00:00
Shawn Rutledge 6f64bfa654 fix VNC platform plugin build on big-endian machines
Task-number: QTBUG-58734
Change-Id: I3e44ee4be5003acaba2f1b8ed2658a3ff1bd700e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
2017-02-17 16:17:28 +00:00
Florian Bruhin 1d6700171c Respect XDG_CONFIG_HOME when getting ibus socket location
Task-number: QTBUG-58687
Change-Id: I97ea8b7d7caf922227a92348fb914aead1ecd312
Reviewed-by: Tinu Weber
Reviewed-by: Takao Fujiwara <takao.fujiwara1@gmail.com>
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-02-17 10:14:39 +00:00
Dmitry Kazakov abc79baa70 xcb: support graphics tablets with the "uc-logic" name
Similar to support for the other Genius tablets.
https://bugs.kde.org/show_bug.cgi?id=359642

Task-number: QTBUG-52626
Change-Id: I3e2033d547d8bab4b6fb93be3a172bdce4fc5666
Reviewed-by: Dmitry Kazakov <dimula73@gmail.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-02-17 09:41:20 +00:00
Liang Qi e5c3700a61 Merge "Merge remote-tracking branch 'origin/5.8' into 5.9" into refs/staging/5.9 2017-02-17 10:36:32 +00:00
Friedemann Kleint a81dfb32d6 Windows QPA: Call QWSI::flushWindowSystemEvents() from WM_PAINT for full update only
It was introduced by 0719142321
(macOS QML fix) for apparently historical reasons and has been found to
cause various problems:
- Flicker when using QGLWidget in a QSplitter
- (obscure) crashes due to flushing out input events in setVisible().

Task-number: QTBUG-38327
Task-number: QTBUG-39842
Change-Id: I18081da5f4645271774a51f1d6a88e778adbd6ac
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-17 08:22:16 +00:00
Oleg Yadrov d9c3d2301d macOS: use active window device pixel ratio for drag pixmap
In QCocoaDrag::dragPixmap, it treats QDrag::source as a QWindow, but it
is not - it's just a generic QObject* of some kind (which QQuickDrag
sets to the originating QQuickItem, and the widgets stack sets to a
QWidget). This failure means that dpr stayed at 1.0.

Unfortunately it’s not possible to receive a pointer on QWindow directly
from QQuickItem because QtWidgets and QtQuick do not share the sources,
but we can use the same dpr as current focused window has because drag
can only start from active window - press on a window which is not
focused should activate it first.

Task-number: QTBUG-57942
Change-Id: Id358c181d03d519188caaa83fb4226033b8ed1ea
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
2017-02-17 00:50:10 +00:00
Tor Arne Vestbø d19bd1feb6 macOS: Move NSWindow creation properties into createNSWindow()
Allows the block in recreateWindowIfNeeded() that calls createNSWindow()
to focus on how to (re)parent windows/views, while createNSWindow() takes
care of how to set up the window. Dynamic properties that may change later
on are handled in e.g. setWindowFlags().

Change-Id: Ice0e44d004bd2608b2b54e6dde0f404a1e07dc10
Reviewed-by: Mike Krus <mike.krus@kdab.com>
2017-02-16 23:16:28 +00:00
Liang Qi c577f6edaf Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	src/corelib/plugin/qlibrary_unix.cpp
	src/plugins/platforms/xcb/qxcbconnection.cpp
	tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp

Change-Id: I632c400d909f8c204f55743aadc7886af2f15dfb
2017-02-16 21:51:11 +01:00
Marc Mutz cad9c7cbc9 Use static initialization for QBasicAtomics
A default-constructed static QBasicAtomicInt at function scope
will be dynamically initialized. It will still be zero-initialized,
but at least GCC adds guard variables for such objects.

When using aggregate initialization, the guard disappears.

Amends 04d6495bf7.

Change-Id: Id9335cffdd43094cafb231fdde2523d013abe1d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-16 19:26:46 +00:00
Olivier Goffart cd2b5f1ada Resize the window when the screen's dpi changes
That's what the MSDN documentation say one should do in the handler
for WM_DPICHANGED

[ChangeLog][QtGui][Windows] Windows are now automatically resized
when they are moved on a screen to adapt to the new pixel ratio.

Task-number: QTBUG-55510
Task-number: QTBUG-48242
Change-Id: I7688f12165f76585d75686e2e94b0fc562627be2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-16 15:31:38 +00:00
Tor Arne Vestbø ef32f16fc2 macOS: Rewrite window state handling
Instead of relying on specific notifications to change the window
state we now evaluate the state based on the current window state.

This allows us to get rid of windowShouldZoom in the window delegate,
making window state handling work for foreign windows as well, and
also allows us to re-evaluate the state in more places, such as
when moving a window, which may bring it out of maximized state.

The full screen state is tracked by a helper category that doesn't
just rely on the styleFlag, but also on the full screen notifications.
This is needed as macOS will complain if you try to go in or out of
fullscreen while a transition is in effect.

The differentiation between performFoo: and foo: has been removed,
as the latter works in both cases and doesn't rely on the button
being visible/enabled.

These changes fixes many observed quirks in the window state handling
that also resulted in making it hard to write tests that relied on
the fullscreen/maximized operations always working.

Change-Id: I0538c42d9223a56f20ec9156f4939288e0750552
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-02-16 14:32:00 +00:00
Alexander Volkov bee82432eb xcb: Allow to disable XInput 2 support by setting QT_XCB_NO_XI2 env var
Use of XInput 2 may result in regressions. For example we call
XISelectEvents for each window every time a device plugs/unplugs.
It causes significant delays when there are many native windows.

Change-Id: I60b799bb667d0e4bca1f9c52cdaa07b04bcc749f
Task-number: QTBUG-57013
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-02-16 09:53:50 +00:00
Marc Mutz 04d6495bf7 Make some atomic counters zero-based
A variable of static storage duration that is not zero-initialized
takes up space in the DATA segment of the executable. By making the
counters start at zero and adding the initial value afterwards, we
move them over to the BSS segment, which does not take up space in
the executable.

Wrap atomics used across function boundaries into small functions,
to avoid code duplication and to increase readability.

Change-Id: Ida6ed316ecb8fe20da62a9577161349e14de5aed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-15 20:14:27 +00:00
Tor Arne Vestbø 666b91fb8f macOS: Don't hide NSWindowZoomButton when window can go into fullscreen
The button in the title bar is used both for going into full screen and
maximizing (zooming) the window. We can't hide/disable it unless both
Qt::WindowFullscreenButtonHint and Qt::WindowMaximizeButtonHint are
off.

This means that when Qt::WindowMaximizeButtonHint is off, it's still
going to be possible to Option-click the button to maximize the
window, but this is less of a concern than hiding the full screen
button when Qt::WindowFullscreenButtonHint is set.

Change-Id: I70dbe27b3197fe22c1781277f8bf9a818d71d04d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-15 15:23:47 +00:00
Olivier Goffart 1037eebc0b Windows QPA: Use the native algorithm to find out the window's screen
QPlatformWindow::screenForGeometry uses the screen where the center
of the window is, but native application use the one which intersects
with the bigger area. It might not be the same.

Change-Id: I831a5fcaea0e293e9f0f93ef5e562cce57fae2f4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-15 14:19:12 +00:00
Olivier Goffart 9e3a3250e0 Windows QPA: Fix compilation with QT_NO_OPENGL
Compilation error introduced in 7780ee9e5f

Change-Id: Ia770ca207cdd25bb15c74d681ece391a844791a7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-14 12:09:47 +00:00
Liang Qi 27432d40f2 Merge remote-tracking branch 'origin/5.8' into 5.9
Change-Id: I2bd2e61bae1eab4fc74fa6accd741ed9ae1f0669
2017-02-14 11:33:02 +01:00
Friedemann Kleint e8a2a9bf30 Windows QPA: Include GL header depending on presence of dynamic GL
Amends change 7780ee9e5f.

Task-number: QTBUG-58178
Change-Id: I0b6e064dfdbdafb7fba9c20c56cfd873fa594c44
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-13 12:04:39 +00:00
Tor Arne Vestbø b5068a2831 macOS: Don't try to cast foreign windows to QNSView
Change-Id: I08a4d76310a689c3c855d4c8306f9d7aa5cecadc
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-11 21:49:14 +00:00
Tor Arne Vestbø 0b18d51b89 macOS: Handle window state changes directly in QCocoaWindow
Now that notification callbacks are delivered directly to QCocoaWindow,
it doesn't make sense to then send them to QPA via QNSView. By skipping
the QNSView roundtrip we also enable window state notifications for
foreign windows.

As an optimization we no longer flush all window system events, but use
the new synchronous API to deliver the window state change event.

Change-Id: I529b625fbe22e664c34a51bcd4448d1bf0392e6b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-11 21:48:45 +00:00
Andy Nichols dee16fe491 Blacklist Intel HD Graphics IronLake (Arrandale) on Windows
More poor quality Intel OpenGL drivers causing issues when using OpenGL
in Qt.

Change-Id: I76ad023a1f1e92d57dc0b081c665a3b066206068
Task-number: QTBUG-53888
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-09 14:15:34 +00:00
Tor Arne Vestbø a57f2128b1 Add QPlatformWindow::isForeignWindow()
Simplifies code at call sites and allows for refactoring how to decide
if a window is foreign or not at a later point.

Change-Id: Icc51a83bac187f4975535366b53b4990832b6c82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:17 +00:00
Liang Qi dd756011da Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	configure.json
	mkspecs/win32-icc/qmake.conf

Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
2017-02-08 15:49:18 +01:00
Frederik Gladhorn ee34897565 Fix regression preventing VoiceOver following the keyboard focus
In fafdb171e0 a potential nullptr deref
was fixed, but it changed the hierarchy of accessible objects.
The new hierarchy would prefer to send a parent object that represents
the application, but macOS needs the window to be in the hierarchy for
VoiceOver to behave as expected.
Tweak it so that we give the window as parent again, not the app.

Change-Id: I5f7f59b07d0966c8bcf96968e4ed65eba9e05be6
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-02-07 11:50:19 +00:00
Vyacheslav Koscheev d0b8356e7e Android: Fix data race in QAndroidEventDispatcherStopper
Change-Id: If5f8406d7af2d91e267a0ba380e73287feabac9f
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-07 08:40:40 +00:00
Samuli Piippo 3de596a321 kms: calculate physical size if actual size is unknown
Use the default dpi of 100 to calculate physical size of the display,
if KMS output returns 0 as the size and the size was not set via
environment variable.

Change-Id: If310592b2694a46d2fab464b21ec1765a5033933
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-06 20:37:18 +00:00
Marc Mutz bbd091ac58 QGtk3Menu: fix compilation with Clang 3.8
Clang complained about a missing override:

  qgtk3menu.h:58:14: error: 'tag' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]

Change-Id: I681cdeb93d35848ae39c1af289973b436e8ea60e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-06 10:12:36 +00:00
Oliver Wolff 71183726ae Win: Fixed identification of bearerType with more friendly interface name
The interface name is used inside the bearer plugin to obtain
additional information about the interface. Calling CreateFile with the
more friendly name fails (file not found) so we use the Luid and gather
information from its type.

Task-number: QTBUG-51543
Change-Id: I09b7f124657a0bbccf36da6f43b36a3c50b5fde0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-02 11:19:11 +00:00
Oswald Buddenhagen dcd5cb9736 Merge remote-tracking branch 'gerrit/dev' into HEAD 2017-02-01 21:00:55 +01:00
Liang Qi 3cd1c3cb70 Fix libs build with msvc on Chinese locale on Windows
Chinese locale means Code Page 936 here. It's also related with
removing C4819 warnings.

And it's also following Conventions in Qt source code: All code
is ascii only (7-bit characters only, run man ascii if unsure)

See also http://wiki.qt.io/Coding_Conventions

Task-number: QTBUG-56155
Task-number: QTBUG-58161
Change-Id: I37fa7a0e6a82a16eaf80e1cc99be801099ab87de
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: jian liang <jianliang79@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-01 08:35:42 +00:00
Gabriel de Dietrich f6c17c37ba QCursor: Remove old pixmaps and use native cursor on macOS
The DragCopyCursor part is a regression from ed55c4a14c.

Change-Id: Id98a40c372e48f09d8c1824a4c2c1df2a3bdd052
Task-number: QTBUG-58378
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2017-01-31 18:34:12 +00:00
Liang Qi 246799d8a7 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	examples/network/network-chat/peermanager.cpp
	src/widgets/util/qsystemtrayicon.cpp
	src/widgets/util/qsystemtrayicon_qpa.cpp
	src/widgets/util/qsystemtrayicon_win.cpp
	src/widgets/util/qsystemtrayicon_x11.cpp

Change-Id: I1c026df83818c0ccaf956980370e7522960627db
2017-01-30 12:46:20 +01:00
Friedemann Kleint 1aea3c1229 XCB: Use member initialization
Shorten or remove constructors accordingly.

Change-Id: I9c8bcf512c922c3c72be8a965d9557589bc9874f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-01-27 22:32:07 +00:00
Jake Petroules 944110089d Build Qt libraries with -fapplication-extension
This ensures at compile-time that Qt libraries do not use any APIs that
are not safe for use in application extensions, and fixes warning
messages that appear when linking to Qt libraries that are not built
with this flag, when used in an application extension.

This is especially important on watchOS where *all* "applications" are
actually application extensions, and on other Apple platforms if
application extensions are developed using Qt.

Task-number: QTBUG-40101
Change-Id: I022046f2584e0222253d33052b0abc221d7c93d6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-27 22:10:01 +00:00
Andy Shaw c6ecbd4762 Win: If the combined key is unknown then fall back to the original key pressed
When pressing a combination of keys it is possible that it ends up being
seen as a Key_unknown and as a result it can give strange results when
used. Therefore if the key is Key_unknown in that case then it should
fallback to the unmodified key. For example on a French keyboard, this
means it will correctly allow CTRL+< as a shortcut instead of showing
it as CTRL+\.

Task-number: QTBUG-58304
Change-Id: Iae4c11a1e6e2d4343134ed1e3f9049b6df2613af
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-27 16:15:50 +00:00
Allan Sandfeld Jensen d03ba0e895 Optimize debug builds when -Og is available
Enables optimizing with -Og if GCC has the option available, this
should produce faster debug binaries without compromising debugability.

Is a privateConfig to limit it to the default Qt build.

Includes two fixes for false positives of maybe_uninitialized triggered
by -Og on gcc 4.9.

Change-Id: I466d7a4070295714189024369312e6cbd36cfacf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-01-26 17:47:25 +00:00
Friedemann Kleint b6967d0c11 XCB QPA: Fix QScreen::grabWindow(0) to return the current screen
Previously, the code queried the window to be grabbed for the geometry
and thus returned the entire virtual desktop for multi screen setups.

Use the QPlatformScreen's geometry in case of WID = 0.

Task-number: QTBUG-58110
Change-Id: I3a9c0b0b3ea057f5e58f272f5c3fd40fafc073ba
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-01-26 10:36:38 +00:00
Liang Qi 398a7e736c Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2017-01-26 00:37:14 +00:00
Liang Qi a23d705e18 Merge remote-tracking branch 'origin/5.8.0' into 5.8
Conflicts:
	src/plugins/platforms/android/qandroidinputcontext.cpp

Change-Id: I80f35a3d722f1e218ff338b6652e551da45c38e7
2017-01-25 22:39:42 +01:00
Liang Qi 318b58562a Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	.qmake.conf
	mkspecs/common/msvc-desktop.conf
	mkspecs/common/msvc-version.conf
	mkspecs/common/winrt_winphone/qmake.conf
	mkspecs/features/mac/default_post.prf
	mkspecs/features/mac/sdk.prf
	mkspecs/features/qt.prf
	mkspecs/features/uikit/default_post.prf
	mkspecs/features/winrt/default_pre.prf
	mkspecs/winphone-arm-msvc2013/qmake.conf
	mkspecs/winphone-x86-msvc2013/qmake.conf
	mkspecs/winrt-arm-msvc2013/qmake.conf
	mkspecs/winrt-x64-msvc2013/qmake.conf
	mkspecs/winrt-x86-msvc2013/qmake.conf
	qmake/generators/win32/msvc_vcproj.cpp
	src/gui/kernel/qwindowsysteminterface.cpp
	src/network/kernel/qhostaddress.cpp
	src/plugins/platforms/mirclient/qmirclientplugin.cpp
	src/plugins/platforms/mirclient/qmirclientplugin.h
	src/widgets/util/qsystemtrayicon.cpp
	tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
	tools/configure/Makefile.mingw
	tools/configure/Makefile.win32

Done-with: Jake Petroules <jake.petroules@qt.io>
Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Change-Id: I4be3262d3994e11929d3b1ded2c3379783797dbe
2017-01-25 20:06:06 +01:00
Thiago Macieira d3671555cc Rename "interface" to "iface:" there's a #define in windows.h
Change-Id: Ibe5b1b60c6ea47e19612fffd149cd2d07116584b
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-25 16:39:03 +00:00
Friedemann Kleint 0c415793b9 Windows QPA: More fine-grained suppression of geometry/state change events
When switching windows from fullscreen to maximized, move and resize events are
triggered when changing the window decorations, ending up in
QWindowsWindow::handleResized(), QWindowsWindow::handleMoved() which then may
call handleGeometryChange().

Change 917ef57874 blocks the emission of events
depending on flag WithinSetStyle from handleGeometryChange() for Windows CE.
This has issues which become visible when switching from fullscreen to
maximized repeatedly:

- State change events are still sent from QWindowsWindow::handleResized(),
  QWindowsWindow::handleMoved() when changing the window style programmatically
  causing the maximized state to be lost after a few cycles(QTBUG-53368).
- Geometry change events are actually needed on the desktop for proper redrawing
  (QTBUG-53577).

Make this more fine-grained by suppressing all state changed events while
WithinSetStyle is set and allowing geometry changes.
Amends 917ef57874.

Task-number: QTBUG-53368
Task-number: QTBUG-53577
Change-Id: Icc8dc935cfc29b314aab2d6fac02c97174c79c3e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-25 09:44:12 +00:00
Tasuku Suzuki 64e977cfac Fix build without features.temporaryfile
Change-Id: I3f26f122a20aa8e59baaf3f33b89cc776865ff8b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-01-25 04:54:58 +00:00
Allan Sandfeld Jensen 21f27c9a4d Enable gamma-correction on a face-by-face basis
Changes how we control if gamma-correction is done, and enables it for
the freetype CFF engine when stem-darkening is available.

The new code replaces existing hacks to force gamma-correction off
when using Freetype on X11 and Windows.

Change-Id: Ic703ca6965a3d81b204349e10f406c991b292edd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-01-24 20:42:32 +00:00
Jake Petroules c1cece8e54 Fix deprecated API usage
Change-Id: I62448507f80daf6be72994ee99f0fb1aa107eb78
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-24 19:40:40 +00:00
Alexandru Croitor 1b1686d194 Fix mouse extra button mapping on macOS
Previously extra mouse buttons apart from left, right and middle
buttons, were mapped incorrectly with an offset of -1. This resulted in
the first extra button being recognized as the middle button, the
second extra button as the first extra button, etc.

Fix consists in using a binary shift with proper offset to create
the corresponding Qt::MouseButton value.

[ChangeLog][macOS] Fixed extra mouse buttons to be mapped to
correct Qt::MouseButton values.

Change-Id: I9e6084586cd4737a172b7706a805211f0edff749
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-24 13:10:52 +00:00
Gerry Boland c28fde3fda Mirclient: update based on upstream development in lp:qtubuntu
This is based on revision 360 of lp:qtubuntu.

Main features/bugs fixed:
- fix QQuickWidget-based app rendering
- wire up Qt window types to Mir to enable desktop-based applications
  to function with a window manager
- use QEGLPlatformContext and QEGLPBuffer instead of custom code
- correctly populate and update list of QScreens
- support for switching keyboard layouts
- improve window resizing to fix visual glitching

Change-Id: If816a858eb10b6356275d4b80c89a72562b3c29f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Matti Paaso <matti.paaso@qt.io>
2017-01-24 05:52:52 +00:00
Jocelyn Turcotte dd52fd0024 Ensure a pixel density of at least 1 for Qt::AA_EnableHighDpiScaling
Very large 1080p TVs or any display which is running at an abnormally
low resolution can have a DPI lower than 48, which means that
qRound(dpi/96) will result in a 0 pixel density, causing critical
issues for applications using Qt::AA_EnableHighDpiScaling.

Make sure that we always have a pixel density of at least 1 to allow
applications not having to worry about such displays.

Task-number: QTBUG-56140
Change-Id: I1dafbf7794a99ae6f872984c0337d8ff0d1fc1c0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-23 18:42:26 +00:00
Friedemann Kleint 79352528a1 Windows QPA: Prevent usage of child windows as transient parent
When using foreign window integrations such as MFC/winmigrate,
it is possible that a child window is found which can cause issues
with modality. Loop up to top level.

Task-number: QTSOLBUG-71
Task-number: QTBUG-57159
Change-Id: Ib36e0f8f4f6b1e22ba1240013871facef2c0c1ab
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-01-23 15:36:54 +00:00
Oleg Yadrov 4d49f94060 Cocoa: fix bug when left mouse button release event delivered as right
The regression was introduced during refactoring by 820e69d6c and the
initial change that added this logic is adc3ef97d.

This condition had become redundant and wrong after refactoring because
m_sendUpAsRightButton flag is set in the proper way in
QNSView::mouseDown() which later calls QNSView::handleMouseEvent()
anyway.

Task-number: QTBUG-58219
Change-Id: I1951cf4067af6f0c1837c1c15b8a09dfe7939493
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Pavol Markovic
2017-01-20 17:44:16 +00:00
Friedemann Kleint 7780ee9e5f Windows QPA: Call InvalidateRect() in WM_PAINT/GL Software rendering
Bring back the call to InvalidateRect() removed by change
6086c81e4d since it seems that GL Software rendering
requires it (also for single buffer mode).

Task-number: QTBUG-58178
Change-Id: I197a1b3c3906c4afa43943db30dbc07dfb656cc7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-19 20:44:18 +00:00
Oleg Yadrov 3edeb5c909 Cocoa: fix regression preventing windows from showing up
The regression was introduced by 593ab63860 which fixed another bug
related to window modality. To determine whether the window needs to be
(made key and ordered front) or just (ordered front), instead of calling
currentModalSession() which might change internal state of event
dispatcher we just check if cocoaModalSessionStack is empty or not.

Task-number: QTBUG-57991
Task-number: QTBUG-56166
Change-Id: I6c4f92860d8c93decd44e572af1690ed7be6f1f0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-01-19 17:55:25 +00:00
Friedemann Kleint 45f80a52c2 Windows platform headers: Add isTabletMode()
Add a bool function querying Windows 10 tablet mode.

Task-number: QTBUG-56831
Change-Id: Ief728a7d80a11ba79f7859033ff4be6ef79bbd4e
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-18 15:24:18 +00:00
Laszlo Agocs a0bc9d0027 DRM/KMS config: add support for specifying the primary screen
Not having a way to say that a given output should be registered as the
primary screen (meaning it comes first in the QGuiApplication::screens() list,
emits primaryScreenChanged() signal etc.) can be a problem for some systems.

The order of the outputs array in the JSON configuration file is not relevant
in this respect since screens are registered either in the original DRM connector
order, or, when the virtual desktop layout is specified via virtualIndex, in the
order specified by virtualIndex. The primary screen status is independent from this.

Therefore, add a new, optional boolean property: primary. For example, the following
forces the QScreen corresponding to the VGA output to be the primary screen on the
Renesas R-Car H2 board, even though by default it is the HDMI one that happens to
be reported first by the system.

{
    "device": "/dev/dri/card0",
    "outputs": [
        { "name": "HDMI1", "mode": "1280x720" },
        { "name": "VGA1", "mode": "1280x720", "primary": true },
        { "name": "LVDS1", "mode": "off" }
    ]
}

In addition, improve the quality of the logging output.

[ChangeLog][Platform Specific Changes] Added support for specifying the primary screen
in the JSON config file in QT_QPA_EGLFS_KMS_CONFIG when running on DRM/KMS with eglfs.

Task-number: QTBUG-57980
Change-Id: Iba490800dee3b7162c68c4d40b0822f3f6d81b69
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-01-18 14:48:35 +00:00
Friedemann Kleint 49dc9aa409 Windows QPA: Do not return QPlatformIntegration::ShowIsMaximized in tablet mode
The hint is not appropriate for Windows 10 tablet mode as it affects
only main windows. Dialogs should still show up in normal size.

Partially reverts change d377f14fd5.

Task-number: QTBUG-58227
Change-Id: If9cf4990eb40913904cd97e17a7622bc6cbe84ca
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-01-18 14:20:58 +00:00
Paul Olav Tvete 88932d4339 Android: transform input rectangle correctly
QRect::setX/setY will change both position and size. In this case,
the width and/or height of the input rectangle could end up
negative. The correct functions to use are moveLeft/moveTop which
will preserve the size when changing the position.

Task-number: QTBUG-58179
Change-Id: I71a2e38958754dc53e062ad1c780e2337f72ec32
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-01-18 14:20:38 +00:00
Kimmo Ollila daf2aa0047 Add eglfs-viv support for INTEGRITY
Change-Id: I5ea23eeac930dcc628047e3322061d543bddb643
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Nikola Velinov <nvelinov@ghs.com>
2017-01-18 13:04:38 +00:00
Maurice Kalinowski d3eec16862 Remove support for WinRT 8.1 and Windows Phone 8.1
[ChangeLog][QtBase][General] Removed support for WinRT/Windows Phone 8.1.

Task-number: QTBUG-57288
Change-Id: Ifd6d6780cbbdb710d99556ba3d2fb2e514d4f789
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-18 12:38:56 +00:00
Friedemann Kleint 23ba2f073c Windows QPA: Fix QScreen::grabWindow(0) for non-primary screens
Previously, the code grabbed the client rectangle of GetDesktopWindow(),
which is always the primary screen. Fix by using the geometry of
the QPlatformScreen. In addition, subtract x, y from the effective
size when sizes < 0 were passed in as does XCB.

Task-number: QTBUG-58110
Change-Id: I6ed439d2e1da8affd0a1475717d5570017fb1f2b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-18 10:26:19 +00:00
Tor Arne Vestbø 2fe9f30512 macOS: Keep reference to NSScreen via index instead of pointer
Manual revert of 73e68a9c0f, which was flawed. macOS can, and will,
dealloc and realloc NSScreen instances for a given screen index, for
example when deallocing an NSWindow, which has the screen as an
auxiliary resource. This is also documented for +[NSScreen screens],
which states that "The array should not be cached".

Task-number: QTBUG-58128
Change-Id: I926513a26cb7af52acd7fc5ee9380ef29ede65e6
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
2017-01-17 22:18:22 +00:00
Tasuku Suzuki 21306bccc4 Fix build without feature.tabletevent
Change-Id: I13950e184453318671e4cac6dac844e76771f430
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-15 04:21:52 +00:00
Kimmo Ollila 01cade5050 Fix build for INTEGRITY
Change-Id: I2c41295688e962eb263f2180bebfd1dd37613804
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-13 07:52:16 +00:00
Alexander Volkov dcec1420ea Use QString::asprintf(), QStringBuilder, and the multi-arg overload of QString::arg()
... instead of sequential .arg(const QString &) callings.
It saves memory allocations and prevents unexpected results
if replacing strings contain place markers.
Found with clazy's qstring-arg check.

Change-Id: I3912275a6e11c6fb7559ff5623f2e8cde9b7f07a
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-12 17:54:28 +00:00
Joni Poikelin 483ee17419 xcb: Fix colormap memory leak
Change-Id: I54880c10dc089c2cd17184dcbab17fde3af6452c
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-01-12 05:05:41 +00:00
Gabriel de Dietrich a50ed8685f QCocoaWindow: Fix 10.10 sheet API deprecation warning
'beginSheet:modalForWindow:modalDelegate:didEndSelector:
contextInfo:' is deprecated: first deprecated in macOS
10.10 - Use -[NSWindow beginSheet:completionHandler:]
instead [-Wdeprecated-declarations]

Similarly, although it won't emit any warning, we replace
the usage of -[NSApplication endSheet:] wit -[NSWindow
endSheet:].

Change-Id: Iae71247f818b7183d09c6831fa4cb1b71a54a87a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-01-12 02:14:25 +00:00
Oleg Yadrov 63baad4a3d macOS: convey correct mouse coordinates on drag release
Task-number: QTBUG-57129
Change-Id: I6eb60c35bfaf63199d0f637bf2d579fadab0a644
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-01-11 21:05:36 +00:00
Friedemann Kleint 5865e582fd Windows QPA/Open file dialog: Copy non-filesystem items
With the introduction of the new IFileDialog interfaces in Qt 5,
the open file dialog no longer was able to open items on
MTP mounted devices.

The Win32 API GetOpenFileName() used in Qt 4 would hide this
by creating a local copy of the file in the INetCache folder.

Add code to emulate the behavior in
QWindowsNativeOpenFileDialog::dialogResult().

Task-number: QTBUG-57070
Change-Id: I88cccfbf9697585225356cc864df67c86a912c91
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-11 14:40:41 +00:00
Friedemann Kleint 1d2a32d1c0 Windows QPA: Refactor conversion of IShellItem
Introduce a light wrapper class around IShellItem which
hides its idiosyncracies.

Task-number: QTBUG-57070
Change-Id: I60a825ea7a826d67859ab82537d614ecc3367692
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-01-11 14:40:36 +00:00
Dmitry Chmerev c5332859c8 Fix QRect calculation in inputItemRectangle
Because of QRect's width and height are caluculated values, they got
spoiled after x and y values setting.

This bug affects, in particular, Android software keyboard appearance:
it could overlap focused input field.

Change-Id: I27ccca27111219818722951fe6f463388d76c702
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-01-11 14:08:34 +00:00
Tor Arne Vestbø 80bbaf6fad iOS: Detect mismatched calls to IM::update() before IM::setFocusObject()
The focus object should be updated, resulting in a reset(), before any
manual calls to update() from client code. To be on the safe side we
try to detect when this assertion fails and manually fix the situation,
so that we show/hide the keyboard correctly based on the new focus item.

Change-Id: I15a614cc9553b0a26b0dc7f7beefb56a84645861
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-11 11:36:34 +00:00
Andy Shaw 64666b9ee0 Windows: Check if the fallback key matches the shift modifier case too
There are some keyboard layouts where pressing shift will give something
different to what the expected key would be. For example, on a French
keyboard layout, pressing SHIFT+! gives 1 as opposed to SHIFT+1 giving
! on a US keyboard layout. Therefore it should check against both cases
to ensure it does not end up adding a new entry.

Task-number: QTBUG-57938
Change-Id: I11c52619c048b98500f2d79876bb912720af6e65
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-11 07:39:27 +00:00
Ulf Hermann 0dc85f7808 Don't build SQL driver plugins if we are not building Qt SQL
Change-Id: I60fb0d7c05652fbad9884b19e612cfef6156d9ae
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-01-10 16:14:38 +00:00
Andy Shaw 25b00c88b6 cocoa: Account for getting a keyboard using input methods correctly
When a keyboard is using an input method then the layout for it needs to
be retrieved with TISCopyInputMethodKeyboardLayoutOverride(). For cases
where it is not using an input method this will return null and in that
case we can use the original approach as before.

Task-number: QTBUG-53804
Task-number: QTBUG-57934
Change-Id: I6283785bf002602113e208bb38d5eb2a9a7ceb36
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-10 15:49:33 +00:00
Jesus Fernandez 2005b9fae1 Remove unreachable code
The unknown types are treated as strings by default.

Coverity-Id: 59489
Change-Id: Ib0eaf5c27d3afaf694c8a2acca42bef6808c8a9f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-01-10 15:32:16 +00:00
Friedemann Kleint d135acfa43 Windows QPA: Implement setting the "Cancel" button text of file dialogs
The functionality was missing in IFileDialog. As of Windows 7;
IFileDialog can be queried for IFileDialog2, which provides it.

Task-number: QTBUG-44112
Change-Id: I0c0345d516bbc36f9bb519545f5eda1289c9ef23
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-10 07:21:52 +00:00
Alexander Volkov 7991a70d28 vnc: Replace Q_DECL_OVERRIDE by override
Change-Id: Id06dfc73d1ad41822b2f07b585f32e9e6e5d08f2
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-01-09 10:21:44 +00:00
Jake Petroules 6b7e633248 Remove compatibility code paths for macOS < 10.10 and iOS < 8.0
Change-Id: I11bec0efc2b4d86adf64a58990260fee70f050ac
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-09 10:11:48 +00:00
Pier Luigi Fiorini 747e569597 eglfs: Activate the window on the primary screen
Having the window on the last screen focused is inconvenient since the
main application UI is likely to be shown on the primary screen.

Change-Id: I2e7945a903cb432d3428c773ac89c662374632c9
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-01-09 09:59:30 +00:00
Tor Arne Vestbø 5da5586a96 iOS: Ensure that QPlatformBackingStore can clean up textures in dtor
We are using QPlatformBackingStore::composeAndFlush, which allocates
textures on our behalf using the context that we pass in, so we need
to keep the context alive (and make it current) for the duration of
the QPlatformBackingStore destructor, otherwise we're leaking textures
every time a window (dialog e.g.) is closed.

Change-Id: I1450fa0ff7a170d13ec59920566e4401b50cd513
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-06 16:30:00 +00:00
Tor Arne Vestbø 3c99bddb84 iOS: Center IM cursor rectangle within available space when showing keyboard
The cursor rectangle is translated into screen coordinates, and compared
against the screen geometry after subtracting the future keyboard rect
(which is already in screen coordinates). If the two do not overlap
completely, the root view is shifted accordingly so that the cursor
rectangle is placed in the center of the available space.

A future improvement would be to first check if centering the input
item's clip rectangle would bring the cursor within the available
geometry, before falling back to using the cursor rectangle. This
would look better for multi-line text inputs where the cursor is
not in the center.

Task-number: QTBUG-46747
Change-Id: If9b551b4d297e2a1f6d7f84b81628fa65c08edfd
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-06 16:29:48 +00:00
Tor Arne Vestbø bc80cef1d4 iOS: Limit duration of FirstResponderCandidate to becomeFirstResponder
We only need the FirstResponderCandidate for the duration of the call to
[super becomeFirstResponder]. Keeping it around longer means that when
emitting window activation events, which may result in changing the
first responder again, we may wrongly conclude that we're not allowed
to change the responder due to the FirstResponderCandidate still being
alive.

Change-Id: I8203e795cdde4128776283fe63a1907eb6ebc151
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-06 13:31:26 +00:00
Alexander Volkov 6a81145414 vnc: Add missing override
... to fix build with clang.

Change-Id: I1ddc1ed3c17f9c0b4ad0d983a28fe821a813e444
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-01-06 12:59:01 +00:00
Frederik Gladhorn d330ae0da2 Accessibility macOS: check for valid interfaces
There are a few places that did not check if the returned interface is valid.

Task-number: QTBUG-52536
Change-Id: I56ca0952fec0b44dfd4b3991aa94554e9c829642
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-05 19:45:21 +00:00
Frederik Gladhorn fafdb171e0 Accessibility macOS: fix parentElement
Try to return the immediate parent first, nothing else makes sense. The
original code relied on the window pointer usually being nullptr, which
is not reliable.

Make sure to check the validity of the handle returned, since it's
possible to have the platform window being nullptr. It's not quite clear
to me how to end up with a null window though.

Task-number: QTBUG-52304
Change-Id: Id3e70cdab980fb0a86cebbb7c10d824d8a7dd80b
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-05 15:17:54 +00:00
Tor Arne Vestbø 2ac50ac156 Split QPlatformWindow::isEmbedded into isAncestorOf to separate concerns
The function was doing two things, both checking window ancestry and
whether or the window was a direct child of non-Qt window. The former
has now been split of in a QPlatformWindow::isAncestorOf(), which
simplifies the code in e.g. QApplicationPrivate::isWindowBlocked().

Change-Id: I259a190e03ef8def23356005474eeeee74c9ae89
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-05 12:07:35 +00:00
Andy Shaw 47de2ef27f QOCIDriver: Ensure the where clause is correctly setup
Commit 88e043a8 introduced two bugs:

1. When constructing the WHERE clause, the closing ' around the owner
   name was dropped.
2. When constructing QLatin1Strings for comparison with system owners,
   a size of -1 was passed, with the comment "force strlen call". But,
   unlike QString, QLatin1String does not invoke strlen(), but stores
   the negative length unchanged, making the comparisons always fail.

Change-Id: Ie2835b76877c31ee32c900f67eb0853df7110dbb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-01-05 10:32:14 +00:00
Andy Shaw af5c8d04fb Win: Account for windows which are WindowTransparentForInput
Task-number: QTBUG-57864
Change-Id: I8793aaa3719fbcf97f95ae462135cbf6b5823097
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-05 09:31:32 +00:00
Shawn Rutledge 80fa5f6e76 Android: populate TouchPoint rotation and axes correctly
We model each TouchPoint contact patch as an ellipse now, which is
consistent with Android APIs.

Change-Id: I4edfbebfb5e1ab6686dba0ec924bfcfbbd6ff0f4
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-01-04 14:46:25 +00:00
Tor Arne Vestbø 8ba5fe1562 macOS: Don't update screen for child windows
Results in 'Attempt to set a screen on a child window' warning from
QWindow.

Change-Id: Ib421bada07d2085c33a4dcb62e705b2c8e2ba1c4
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-04 13:16:45 +00:00
Alexander Volkov 73dafaf265 xcb: Ignore XI2 LMB mouse events from touch screens
157ee01a8d was trying to
minimize some side effects of the bug in the evdev driver
(https://bugs.freedesktop.org/show_bug.cgi?id=98188) by
not changing mouse button state on motion.
Unfortunately it resurrected bugs that were fixed by
76de1ac0a4.
Filter out mouse events from touch screens instead.
This change reverts 157ee01a8d.

Task-number: QTBUG-32609
Task-number: QTBUG-35065
Task-number: QTBUG-43776
Task-number: QTBUG-44166
Task-number: QTBUG-44231
Task-number: QTBUG-56156
Change-Id: Ie17710d94beabeb08681d669a9d8309be9b44e73
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-28 15:02:03 +00:00
Andrew Knight dfaa32a945 windows: use lowercase #include
MinGW's headers are lowercase, and MSVC is generally run on a case-
insensitive file system. Including in the lowercase is the more
compatible option.

Change-Id: I288cecb77ddd8029bb3925e613a830dd9ce96a6c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-28 06:14:03 +00:00
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