summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-1116-190/+284
|\ | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/src/hb-private.hh src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/sql/doc/src/sql-driver.qdoc Change-Id: I38f0e82fcd37926cbf3c1915e009a731040d4598
| * Fix license headersJani Heikkinen2018-01-1113-182/+260
| | | | | | | | | | | | | | | | Remove usage of outdated header.LGPL21 and replace those with proper one (header.LGPL in src, header.GPL-EXCEPT in tests) Change-Id: Ia4d1c0d84b77f09787fe7c30670747a1fe2aff29 Reviewed-by: Liang Qi <liang.qi@qt.io>
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-091-6/+8
| |\ | | | | | | | | | Change-Id: I840849c072075a69819eb185b20bc42c3de0f825
| | * Avoid providing bad pixelDeltas on X11Allan Sandfeld Jensen2018-01-091-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With libinput we now get a hardcoded resolution that is unrelated to the hardware. So avoid using that as a real pixel delta and document pixel deltas as being driver specific and unreliable on X11. Task-number: QTBUG-59261 Change-Id: I9fe86d80e7ccd290ed2e4091d7eafa52cb537d34 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Marco Martin <mart@kde.org> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * | sqlite: Bind duplicated named placeholders correctlyAndy Shaw2018-01-081-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sqlite will reuse the index for bound parameters when the named placeholder is duplicated so we only need to call bind one time for each placeholder. Therefore we need to have just one instance of each value when doing the bind. Task-number: QTBUG-65150 Change-Id: I75c4bcc4563e43c180a59a7a4cbb770dbe994642 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-071-1/+1
| |\| | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp Change-Id: Ib6dd965a7eb6f59103e276b3407739147ecd37b2
| | * Change use of qDebug to qCDebugMårten Nordheim2018-01-051-1/+1
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-65532 Change-Id: I8b6b8f04f5f6b63eb3c80f140710c8c05291986a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | | SQL plugins: Fix warnings about deprecated constructor of QSqlErrorFriedemann Kleint2018-01-106-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | Use the constructor taking a string and convert number unless it is -1. Change-Id: I18d1ba2c8e0d3f4af01b7955863967f75051746b Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | | Fix custom page size handling in the Unix print dialogAlbert Astals Cid2018-01-091-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were several problems that i've fixed in a single commit since they are very interwinded * The dialog used QPageSize::Custom for two things, the custom sizes coming from the printer and the "user can write whatever size they want" size. Now only the printer custom sizes use QPageSize::Custom and we use m_realCustomPageSizeIndex for the "user can write whatever size they want" one. * The dialog stored the QPageSize id as the combo userData, that doesn't work when the printer has multiple custom sizes since they all share QPageSize::Custom so now it stores the QPageSize itself Task-number: QTBUG-58733 Change-Id: Ie640a07bb5e24b753db83c091c836e8af4ff126c Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | | Small optimalization for NULL valuesRobert Szefner2018-01-091-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | No need to call PQgetvalue() before PQgetisnull(). Change-Id: Ie83ee577b082dbe9d9ca2e86212a281abebdde6e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | | QWindowsXPStyle: Speed up level window loop in helper winId()Friedemann Kleint2018-01-091-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrite the loop using QGuiApplication::allWindows() to avoid the creation of temporary containers by QApplication::topLevelWidgets() and expensive checks. Task-number: QTBUG-64072 Change-Id: I56ef29b12f7bcbe274f3e00a6007d75d33f22b10 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | | Fix support for flatpak FileChooser portalJan Grulich2018-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Properly parse filters. First captured substring in QRegularExpression is at index 1, with index 0 you access the full captured string. Change-Id: I68b6e314171536a08c606e5acd0f7211c1c3c254 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add a tech preview eglfs device integration for VSP2 compositionJohan Klokkhammer Helsing2018-01-0816-1/+2301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This creates a new device integration for eglfs, eglfs_kms_vsp2, that's very similar to eglfs_kms_gbm, but includes an extra step for doing VSP2 hardware compositing. The main Qt content is drawn to double buffered off-screen GBM buffers which are converted using drmPrimeHandleToFD so we get DMA buffer file descriptors that can be used by the VSP2 blending hardware. The blending hardware writes to double buffered DRM dumb buffers, which are flipped with drmModePageFlip. Communicating with the VSP2 is done using the Video4Linux2 (V4L2) streaming API. There are two steps in creating abstractions for this. First, there is the QLinuxMedia class that consists of a Qt style wrapper for V4L2 without anything VSP2 specific. Second, there is QVsp2BlendingDevice which hides some of the streaming details of the VSP2 and has some level of error recovery. Both classes include a fair bit of logging and error reporting. The patch is written with Wayland compositors in mind, but should work for other use cases as well. This is just the basic support to make compositing work, additional features may be added in subsequent patches, i.e: - Auto-detect VSP2 (-feature-vsp2 currently needs to be explicitly enabled). - Support for setting the alpha value of a layer. - Support clipping layers. - Support for scaling layers. - Support for other output formats than RGBA32. - Hardware cursor support. - Support foreign layers below the main Qt layer. - Support for memory mapped and user pointer buffer types (currently only DMA buffers are supported). Change-Id: I1917d2dbdbaeded0d9c021baaa799d56afe1a9bd Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | XCB: Undef KeyPress and KeyRelease also when not using xinput2Ulf Hermann2018-01-081-0/+2
| | | | | | | | | | | | | | | | | | | | | The defines come from X.h here, which is included via Xutil.h. Change-Id: I19887424cff28567fcbb1c352b42bb9d750b1928 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | | QPSQL: Add support for multiple result setsRobert Szefner2018-01-081-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds support for multiple result sets in PostgreSQL. [Important Behavior Changes] The QPSQL driver now supports multiple result sets. Since QPSQL previously did not support multiple result sets, there may be some compatibility issues with the existing code that executed several queries as one and were expecting to get the results of the last one. In this case use QSqlQuery::nextResult() to move to the last result set. [ChangeLog][QtSql][QPSQL] Added support for multiple result sets Change-Id: I2bfc91f512c4dac83116f3aa42833839a6da084c Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | | Cocoa: Make AA_MacDontSwapCtrlMeta workAndy Shaw2018-01-081-5/+15
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-22775 Task-number: QTBUG-51293 Change-Id: If615426001a1ea482f854f49cbae33ca1c954e9a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | | Send NET_WM_SYNC on swapBuffers when using EGLDavid Edmundson2018-01-071-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a user is using EGL on X, we need to reply to sync requests in the same way that we do in the GLX backend. Change-Id: I950de284685dc0ead896688c434828ab1b9c673f Reviewed-by: Aleix Pol Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | QPSQL: Add support for forward-only queriesRobert Szefner2018-01-061-30/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change, it is possible to significantly reduce memory consumption of applications that fetch large result sets from databases. The implementation is based on the new functionality called "single-row mode" that was introduced in PostgreSQL version 9.2: https://www.postgresql.org/docs/9.2/static/libpq-async.html It also uses asynchronous commands PQsendQuery(), PQgetResult(): https://www.postgresql.org/docs/9.2/static/libpq-single-row-mode.html [ChangeLog][QtSql][QPSQL] Added support for forward-only queries (requires libpq version 9.2 or later) [Important Behavior Changes] The QPSQL driver now supports forward-only queries. To use this feature, you must build QPSQL plugin with PostreSQL client library version 9.2 or later. See the Qt SQL documentation for more information about QPSQL limitations of forward-only queries (sql-driver.html). [Important Behavior Changes] If you build the QPSQL plugin with PostgreSQL version 9.2 or later, then you must distribute your application with libpq version 9.2 or later. Otherwise, the QPSQL plugin will fail to load. Task-number: QTBUG-63714 Change-Id: I15db8c8fd664f2a1f719329f5d113511fa69010c Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* | | QWindowsXPStyle: Remove unused codeFriedemann Kleint2018-01-052-41/+0
| | | | | | | | | | | | | | | | | | | | | | | | Fixes a deprecation warning about QDesktopWidget::screenGeometry(). Change-Id: Ib56b2d3f62ddca60d84b4f626571b5e444304804 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | CUPS: Fix conflict handlingAlbert Astals Cid2018-01-051-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous code assumed that ppdMarkOption returning non zero (i.e. it has conflicts) also meant that the option wasn't applied at the ppd level, but it actually is. What we need to do is after calling ppdMarkOption parse the tree again looking to see if any option is conflicting and mark it as such in the UI. Change-Id: I836f1902d14dc8c176bb06776471cbf4ed11786f Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | | Add an option to scroll the QComboBox on macOS with the mouse wheelAndy Shaw2018-01-051-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since there may be some applications that want to make their comboboxes scrollable or not with the mouse wheel then a style hint is added to make this toggable. It defaults to true for all platforms except macOS to keep it in line with existing behavior. [ChangeLog][QtWidgets][QStyle] Added SH_ComboBox_AllowWheelScrolling as a style hint to enable/disable the use of the mouse wheel in a QComboBox. This defaults to true in all styles except the macOS one so there is no change in existing behavior. Task-number: QTBUG-53094 Change-Id: I6eb61e1990bfc79e3b3ea82d7b91ee39096fa077 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | Direct2D: Replace class Direct2DVersion by QVersionNumberFriedemann Kleint2018-01-041-104/+38
| | | | | | | | | | | | | | | Change-Id: Iad8c659a301c6d71b26964d84a67a51352712218 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | Support legacy X11 keymapsFrank Richter2018-01-042-3/+321
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not all X server vendors support the XKB protocol. Furthermore, while X.org seems to use keycodes that match the usual keyboard scancodes, other vendors may not do so. This means that using an XKB keymap suitable for an X.org server results in garbled input with servers for other vendors. Both of these issues are addressed by using the core keycode information as a fallback. [ChangeLog][X11] Fall back to X11 core keycode information if an XKB keymap could not be determined through the connection. Task-number: QTBUG-44938 Change-Id: I64568aa31113d5a3fd90f70c63320a497db21477 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-043-3/+8
|\| | | | | | | | | | | Change-Id: I644cd82b0d952b7d139e0228bf5017f147db77e7
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-042-2/+7
| |\| | | | | | | | | | Change-Id: I3fa5c9e216201bdf7da260c395f65d7fb95cba0b
| | * Fix the iOS/tvOS platform plugin build on tvOSJake Petroules2018-01-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | This fixes a regression from ba44cdae38406c429c7fb43863a6883bd0f79cf5. Task-number: QTBUG-65516 Change-Id: I989b075d3f96170660042349437e4a6a4a115cf9 Reviewed-by: Liang Qi <liang.qi@qt.io>
| | * Cocoa: make "Send correct mouse buttons for tablets" optionalShawn Rutledge2018-01-021-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add an env variable QT_MAC_TABLET_IGNORE_BUTTON_MAPPING which, if set, reverts to the old behavior. The issues that it fixes are: 1) With a Genius tablet, it's not possible to generate a middle-click at all, regardless of preferences, unless you set this variable 2) With a Wacom mouse (passive mouse used with an Intuos 3), the side-buttons (normally mapped to forward and back buttons) do not work unless you set this variable [ChangeLog][macOS][Tablet support] If you have changed the button mapping of your Wacom tablet in System Preferences, it will be respected in Qt applications. To revert to the old behavior, set the environment variable QT_MAC_TABLET_IGNORE_BUTTON_MAPPING Task-number: QTBUG-57487 Task-number: QTBUG-54160 Change-Id: I0a1c9c6550e4dfe6ee2daa2d993f22691430826c Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * | windows: Link to libversion.a with a lowercase nameMartin Storsjö2018-01-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MinGW's headers and libraries are lowercase, and MSVC is generally run on a case-insensitive file system. Referring to libraries with a lowercase name is more compatible. This fixes cross-building using MinGW, and matches a similar change for headers in dfaa32a945. Change-Id: I728376f239a23c700416643cae98e271bbcdff32 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | xcb: fix and optimize QXcbConnection::xi2SetMouseGrabEnabledGatis Paeglis2018-01-033-54/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | What was broken: - m_xiGrab on successful ungrab (XIUngrabDevice) was never set to 'false'. Which means that we would unnecessarily call XIAllowTouchEvents, even when we are not grabbing (this did not have any apparent side effects). What was non optimal: - Redundant XIQueryDevice calls. XIQueryDevice with XIAllMasterDevices flag already returns all required devices. Calling XIQueryDevice for every id again does not make sense. - Querying for master pointer info on every grab is unnecessary. Simply cache ids of master devices whenever hierarchy changes. What remains to be investigated some time later (or never): The original and the re-factored code grabs all master pointer devices. Not sure if that is the expected behavior on MPX (Multi-pointer X) systems. Could there be two context menus, each dismissed separately? MPX concept was introduced in XI2.0, but testing shows that this setup is not very well supported even on modern desktop environments. Tested on Ubuntu 16.04, where multiple pointers is enough for crashing a terminal. Also AFAIK there isn't any bug reports about broken MPX support in Qt. Change-Id: I53f99c6efd44abc43a0985e15cff8aae7ebba8f1 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Liang Qi2018-01-0261-290/+1306
|\ \ \ | | | | | | | | | | | | refs/staging/dev
| * | | Merge remote-tracking branch 'origin/5.10' into devLars Knoll2018-01-0261-290/+1306
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf sc/corelib/io/qfsfileengine_p.h src/corelib/io/qstorageinfo_unix.cpp src/platformsupport/eglconvenience/qeglpbuffer_p.h src/platformsupport/input/libinput/qlibinputkeyboard.cpp src/platformsupport/input/libinput/qlibinputpointer.cpp src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/ios/qiosscreen.h src/plugins/platforms/ios/qioswindow.h src/plugins/platforms/ios/quiview.mm src/printsupport/dialogs/qpagesetupdialog_unix_p.h src/printsupport/dialogs/qprintpreviewdialog.cpp src/printsupport/widgets/qcupsjobwidget_p.h src/widgets/widgets/qmenu.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp Change-Id: Iecb4883122efe97ef0ed850271e6c51bab568e9c
| | * | sqlite: Check that there are values to be set when bindingAndy Shaw2018-01-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the values vector is empty then we know already that the paramCount will still be invalid, so we should just accept that and not check the reused named placeholders. Task-number: QTBUG-64923 Change-Id: Ifaa755540c4574f1f76d3f9f129bf0f66b837b70 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10Lars Knoll2017-12-3039-166/+1064
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf mkspecs/win32-g++/qmake.conf src/corelib/global/qglobal_p.h src/corelib/global/qoperatingsystemversion_p.h src/corelib/io/qfilesystemengine_win.cpp src/network/bearer/qbearerengine.cpp src/platformsupport/input/libinput/qlibinputpointer.cpp src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/widgets/kernel/qwidget_p.h src/widgets/kernel/qwidgetwindow.cpp src/widgets/styles/qfusionstyle.cpp tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp Change-Id: I80e2722f481b12fff5d967c28f89208c0e9a1dd8
| | | * iOS: Don't send all touch events asyncTor Arne Vestbø2017-12-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 77942a1bdf9 introduced the QScopedValueRollback, but without assigning it to a local temporary, so the value was rolled back immediately, resulting in always sending touch events async. Change-Id: Ic7f65c3d38c46813ff06694e883dae3df138b9d4 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | * Fix pps and imf support for QNX buildsKarim Pinter2017-12-193-29/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Change from config to feature in the json and pro files. Change-Id: I58ddac3c4ad739253bae010f1d5023fc1d481047 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| | | * Disable WiFi bearer plugins on macOS and WindowsMorten Johan Sørvig2017-12-151-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Scanning for WiFi networks is causing network disruptions in the form of higher latency, sometimes globally for all running applications. In practice, the default configuration selection algorithm in QNetworkConfigurationManager prefers configurations from the generic bearer plugin, due to the way the plugins are ordered. Removing the platform WiFi bearers should have no effect on default network configuration selection. Task-number: QTBUG-40332 Change-Id: I778281c41a1aaec1949c220a9266677bd788a57a Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| | | * Add EGLFS integration plugin for Salvator-X on INTEGRITY MultivisorTimo Aarnipuro2017-12-156-0/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This plugin uses the Renesas RISP Window Manager. Change-Id: If813c46ab8d39e966c0a969610841867885dd473 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | | * Android: Set correct input hints when queried through getCursorCapsModeJohan Klokkhammer Helsing2017-12-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | getCursorCapsMode() now matches the Java implementation in QtActivityDelegate.showSoftwareKeyboard() which is given to the Android keyboard on InputConnection creation. The reason we only saw this bug with some Android keyboards was that many keyboards never call getCursorCapsMode and just rely on the initial hints. Task-number: QTBUG-51865 Change-Id: I2aae024d9c77ea14e087e3f51a413d15a684179c Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | | * xcb: update libXi version requirement in the README fileGatis Paeglis2017-12-132-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... from 1.7.4 to 1.7.5 (released Sep, 2015). Some more locking issues were fixed after 1.7.4. Testing for a prolonged period of time has showed that 1.7.5 does not cause a system lock-up. [ChangeLog][Platform Specific Changes][X11 / XCB] Minimal libXi version requirement has been updated from 1.7.4 to 1.7.5. This is because XIAllowTouchEvents is known to deadlock with libXi 1.7.4 and earlier. When touch events are never received, this is not an issue. Plain mouse / keyboard systems are not affected. Task-number: QTBUG-62224 Change-Id: Ie70264b9af0390df33c417f660350d4bce48c6d3 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | | * Teach QPlatformWindow about safe area margins and implement for iOSTor Arne Vestbø2017-12-133-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The safe area margins of a window represent the area that is safe to place content within, without intersecting areas of the screen where system UI is placed, or where a screen bezel may cover the content. QWidget will incorporate the safe area margins into its contents margins, so that they are are never smaller than the safe area margins. This can be disabled by unsetting the Qt::WA_ContentsMarginsRespectsSafeArea widget attribute, which is set by default. QLayouts will automatically use the contents area of a widget for their layout, unless the Qt::WA_LayoutOnEntireRect attribute has been set. This can be used, along with a contents margin of 0 on the actual layout, to allow e.g. a background image to underlay the status bar and other system areas on an iOS device, while still allowing child widgets of that background to be inset based on the safe area. [ChangeLog][iOS/tvOS] Qt will now take the safe area margins of the device into account when computing layouts for QtWidgets. Change-Id: Ife3827ab663f0625c1451e75b14fb8eeffb00754 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * qwindowsopengltester.cpp: Fix -Wclazy-strict-iteratorsFriedemann Kleint2017-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: Id22096197aa5bf406ea1f072e8b5ca2a90578eec Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| | | * Allow the users to disable the text handlesBogDan Vatra2017-12-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The user can set QT_QPA_NO_TEXT_HANDLES to 1 to disable the text handles. Change-Id: I974af4d79c86259288035fe20b6a9d0c6d047af8 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| | | * [ChangeLog][QPA][eglfs] Fix crash when using cursors and multiple GL contextsSimon Hausmann2017-12-123-23/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hash from QOpenGLContext* to cursor texture/shader data can accumulate dangling pointers if the program uses multiple contexts on the same screen. This is fixed by moving the cursor data into the platform context. The code for deleting the texture and shader program is omitted as it is tied to the life time of the context and the GL context deletes its resources automatically upon destruction. Task-number: QTBUG-65119 Change-Id: Ic3b8e5669d14949af811bdf047e7d47000216180 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | | * iOS: Ensure that the cursor rect doesn't trigger an inverted scrollTor Arne Vestbø2017-12-111-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the cursor is at the top of the screen, it may end up with a cursor rect that extends beyond the screen after we pad it. We need to make sure it's constrained by the screen geometry before checking if it's within the available geometry. Task-number: QTBUG-65041 Change-Id: I115f49d359b3c2e10219a6b8aa5ad051f44256a7 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * iOS: Implement QIOSScreen::refreshRate to account for 120Hz displaysTor Arne Vestbø2017-12-112-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-64968 Change-Id: If96f6cde8f2fc6d91beb842d82a881fe057260b5 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | * iOS: Harden logic for when it's safe to use the graphics hardwareTor Arne Vestbø2017-12-073-10/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix QTBUG-52493 we tied the exposed state of a window to the application being in the foreground. This has the result of a visible flash of black between hiding the launch screen and showing the first frame of the application, as the application is still waiting for UIApplicationStateActive to begin rendering, which happens after iOS hides the launch screen. According to the iOS OpenGL ES Programming Guide, it should be safe to render GL in UIApplicationStateInactive as well, and even in UIApplicationStateBackground, as long as the rendering finishes before the UIApplicationDidEnterBackgroundNotification returns. To ensure that we catch any bugs in this area, checks have been added that verify that no rendering happens while in the background state. Task-number: QTBUG-63229 Task-number: QTBUG-52493 Task-number: QTBUG-55205 Change-Id: Ib42bedbeddd7479ab0fb5e5b7de9f5805658e111 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * iOS: Ignore view layouts while in the backgroundTor Arne Vestbø2017-12-062-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Despite the OpenGL ES Programming Guide telling us to avoid all use of OpenGL while in the background, iOS will perform its view snapshotting for the app switcher after the application has been backgrounded; once for each orientation. Presumably the expectation is that no rendering needs to be done to provide an alternate orientation snapshot, just relayouting of views. But in our case, or any non-stretchable content case such as a OpenGL based game, this is not true. Instead of continuing layout, which will send potentially expensive geometry changes (with isExposed false, since we're in the background), we short-circuit the snapshotting. iOS will still use the latest rendered frame to create the application switcher thumbnail, but it will be based on the last active orientation of the application. To ensure that we pick up the right geometry when rotating the device while the app is in the background, we treat applicationWillEnterForeground as Qt::ApplicationInactive, which matches the recommendations of the OpenGL ES Programming Guide to "re-create any objects and restart your animation timers". Change-Id: Ia9c27f85f996ecf30284c825b43447aa7099224e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * iOS: Harden application state change logicTor Arne Vestbø2017-12-063-66/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure we catch application state changes as early as possible, and deal properly with any changes delivered before we have an app to send them to. Change-Id: I6d0ea0398f9fab88fc182342769b075cb144227f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * iOS: Try to detect and deal with delayed touch delivery due to gesturesTor Arne Vestbø2017-12-063-2/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A UIGestureRecognizer may have its delaysTouchesBegan or delaysTouchesEnded properties set, which causes iOS to not deliver touch events to the view until the recognizer has failed recognition of its gesture. In that case, the touch event is not delivered via [UIWindow sendEvent:] as usual, but via _UIGestureEnvironmentSortAndSendDelayedTouches. The latter function is apparently not reentrant, as opening a native alert dialog in response to the touch delivery will result in the dialogs's buttons to stop working, probably because they themselves use gestures. Unfortunately iOS maintains two internal gesture recognizers on iPad, of type _UISystemGestureGateGestureRecognizer, probably related to the swipe-from-bottom gesture used for multitasking. Without any workaround, these two recognizers will result in any tap on the bottom part of the screen to be delivered delayed, which may introduce stuck alert dialogs as described above. UITouch has a gestureRecognizers property, but unfortunately this property does not give us any information in the cases where we need it, so we have to use an heuristic involving a UIWindow subclass to detect the case where event delivery is delayed. As there is no way to prevent the user from recursing into an event loop when delivering the event, our only hope is to deliver the event asynchronously. Task-number: QTBUG-64577 Change-Id: I11d9caa8c4542dc80426a9e58ea555914bed433e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | | * iOS: Implement QPlatformScreen::name for easier debuggingTor Arne Vestbø2017-12-062-0/+12
| | | | | | | | | | | | | | | | | | | | Change-Id: I077bec93fe2086c38ebe986b322977a50a1ab27d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>