summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
...
| | * OSX: mark mouse events from tablet devices as synthesizedShawn Rutledge2016-04-262-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is equivalent to d7db6c6c1944894737babf3958d0cff1e6222a22 on the xcb platform. Task-number: QTBUG-51617 Change-Id: I837a764c8382244307ba6aa02bd8bde12bd08bff Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | * xcb: Fix drag and drop to applications like Emacs and Chromium.Urs Fleisch2016-04-251-11/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drops without matching time stamp do not work. I have fixed the issue by reanimating the findXdndAwareParent() function (adapted to XCB) and using it to find a matching transaction if all else fails. Task-number: QTBUG-45812 Change-Id: Ibca15bbab02ccf2f25280418e9edf36972ebf9a0 Reviewed-by: Błażej Szczygieł <spaz16@wp.pl> Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | | xcb: support nested paint operations in remote scenariosLouai Al-Khanji2016-04-292-5/+14
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recent changes to the xcb platform plugin added logic to paint to a server-side X Pixmap when the MIT-SHM extension is unavailable. Those changes also added logic to keep track of the dirty areas that need to be flushed to the server from the backing store when the backing store is flushed to a window. Because a single QRegion was used to track those areas, nested paint operations no longer accurately tracked all the dirty areas. Consider: void Widget::paintEvent(QPaintEvent *) { QPainter p1(this); for (int i = 0; longRunningOperationInProgress(); i++) { QPixmap pixmap(size()); QPainter p2(&pixmap); p2.drawText(pixmap.rect(), i & 1 ? "Working." : "Working.."); p2.end(); QBackingStore *bs = backingStore(); bs->beginPaint(rect()); p1.drawPixmap(0, 0, pixmap); bs->endPaint(); bs->flush(rect(), windowHandle()); } p1.fillRect(rect(), Qt::red); p1.drawText(rect(), "Done!"); } While this code could be restructured, it is a common pattern in legacy Qt applications which cannot be easily changed. Change-Id: I3b919266abe41c96a584cb02f41cafac3f9d1d7c Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | xcb: eradicate Q_FOREACH loops [needing qAsConst()]Marc Mutz2016-04-285-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. To avoid detaches of these mutable Qt containers, wrap the container in qAsConst(). Saves more than 2KiB in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: I9610e711edc01d2a1ba19fef65d6b000ffc77255 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | xcb: eradicate Q_FOREACH loops [const-& returns]Marc Mutz2016-04-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. The function QObject::children() returns by const-reference, so its result can be passed to range-for without further changes. Saves ~300B in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: I8360e946774b0d30233c0fa68f318872da61e867 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | xcb: eradicate Q_FOREACH loops [already const]Marc Mutz2016-04-272-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | ... (or trivially marked const) local variables, parameters, or data members, by replacing them with C++11 range-for loops. Saves ~1.5KiB in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: Ief6c0cbf08bcdcda28cb8ce6d72a13b7b6ac59c2 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Optimize QXcbScreen::visualForFormat()Marc Mutz2016-04-271-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by stopping the work when finding the first RGB candidate, and otherwise only remembering the first candidate as a fall-back. This way, we don't need to allocate memory as we did when collecting the candidates in a QVector. Saves more than 800b in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: I7d0cae69fa421fed881dd5a0f1aa45035d8f7461 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | xcb: don't iterate over .keys()Marc Mutz2016-04-271-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | ... iterate over the container itself instead. Avoids temporary QList creation as well as the lookup cost when actually calling value(key). Saves more than 1KiB in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: If4b2fb7eada0e9cde72ab101a5f6e5cb1ba64054 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-04-277-20/+78
|\| | | | | | | | | | | | | | | Conflicts: src/corelib/io/qprocess_win.cpp src/widgets/itemviews/qheaderview.cpp Change-Id: I0a59ade9cd6e91f770fdf298a7d72a41e79fd761
| * winrt: emit application activationMaurice Kalinowski2016-04-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously the user only got informed about the application getting inactive or hidden, but not when the application was reactivated again. This can cause problems with applications using for instance a camera as that gets disabled when not being active and never return to a active state again. Change-Id: I5c1d8750db8e75043ecf261616a0bc98434a3863 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * xcb: Properly process enter/leave eventsBłażej Szczygieł2016-04-223-15/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ignore enter/leave events when there is a window under mouse button. Unset window under mouse button if other window is grabbed. Smarter ignoring (un)grab ancestor enter/leave event. Ignore ungrab inferior leave event. Amends: b9f76db30d261421e4da58f29053181af04ceb4d Task-number: QTBUG-46576 Task-number: QTBUG-51573 Task-number: QTBUG-52332 Task-number: QTBUG-52488 Change-Id: I8d926309aa60bb8929728691c31ecf93d1e299ad Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
| * Windows QPA/GL: Avoid crash in GL driver.Friedemann Kleint2016-04-221-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | QWindowsStaticOpenGLContext::doCreate(): Invoke QWindowsOpenGLTester::supportedRenderers() only when needed; specifically, do not unnecessarily call it when GLES/SW renderer is specified. Amends change b4c8e1517455becb138876c08b3bdd880a80770d. Task-number: QTBUG-49541 Task-number: QTBUG-52693 Change-Id: I58d1c584d194f8e7fee35ee16b77575f86d3c22e Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| * Cocoa integration - add a protection against dangling pointersTimur Pocheptsov2016-04-222-2/+10
| | | | | | | | | | | | | | | | Backport watcher-sentinel trick (QPointer->QObject) from dev. Task-number: QTBUG-42059 Change-Id: I9b2c7cde635c2ed9a3f667f216da62870d0b5ccb Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | xcb: eradicate Q_FOREACH loops [rvalues]Marc Mutz2016-04-264-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. This is the simplest of the patch series: Q_FOREACH took a copy, so we do, too. Except we don't, since we're just catching the return value that comes out of the function (RVO). We can't feed the rvalues into range-for, because they are non-const and would thus detach. Change-Id: I982851f15868e62b7a191676ddf4ba6b92c0a42d Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QXcbConnection: add some qAsConst()Marc Mutz2016-04-261-7/+7
| | | | | | | | | | | | | | | | | | | | ... to prevent hidden detach(es| attempts). Saves ~160b in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: I74e1f1304c522b9a4349918e99f562853ec8684e Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QXcbIntegration: simplify a switchMarc Mutz2016-04-261-11/+19
| | | | | | | | | | | | | | | | | | | | | | ... by aggregating similar blocks under multiple case labels, and caching functions's return values. Even saves a few bytes in text size on optimized GCC 6.0 Linux AMD64 builds. Change-Id: I5784567a09732b4e55b64163b69e7a946f0783ae Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QXcbConnection: mark some more methods constMarc Mutz2016-04-262-6/+6
| | | | | | | | | | | | | | ... because we can. Change-Id: Ib5fd281a63ced9dce0de1f74fc849da6c6fc162a Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7Liang Qi2016-04-269-149/+116
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-04-259-149/+116
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test configure src/android/jar/src/org/qtproject/qt5/android/QtMessageDialogHelper.java src/corelib/global/qglobal.cpp src/widgets/kernel/qapplication.cpp src/widgets/styles/qwindowsvistastyle.cpp tests/auto/corelib/kernel/qobject/tst_qobject.cpp Change-Id: I067083f34e5290aa5f7565e40c30a069cc37b83a
| | * QWindowsTheme::standardPixmap(): Do not create pixmaps with DPR.Friedemann Kleint2016-04-201-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The given size is mostly ignored and the resulting pixmaps typically end up in a QIcon, which will clobber the DPR anyways when returning a pixmap for a given size. Moreover, returning a message box icon with a DPR > 1 when high DPI scaling is active and Qt::AA_UseHighDpiPixmaps is not set causes the pixmap to become too small due to some scaling error. Task-number: QTBUG-52622 Change-Id: I8aaaa97667d6c168040e19b7edad9dfb7517f70f Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| | * Xcb: Fix compilation with -no-c++11Kai Koehne2016-04-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | nullptr (introduced in commit d7db6c6c194) is a C++11 keyword. Change-Id: Id6aa639f5d2ddbe8b228f8648754c2b24ef53799 Reviewed-by: David Rosca <nowrep@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Uli Schlachter <psychon@znc.in>
| | * Windows QPA: Fix top level flags for Qt::SplashScreen.Friedemann Kleint2016-04-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Set Qt::FramelessWindowHint so that the translucency logic triggers correctly (raster windows). Fixes the splash screen of Qt Linguist to be transparent. Change-Id: I3d50129b7f15bee0eff6ce3318c7f0fec055dc45 Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
| | * Fix gesture processing on OS X 10.11Timur Pocheptsov2016-04-151-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Starting from 10.11 beginGestureWithEvent/endGestureWithEvent never gets called, we must test event.phase instead (magnify/rotate gestures). For a magnify/rotate gesture, we'll first test phase (on 10.11) and manually call our begin/endGestureWithEvent. Task-number: QTBUG-48666 Change-Id: I69752b3c6578360b98607ceea2cffb5c166bb7c9 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| | * winrt: use visible bounds the get the visual areaJochen Seemann2016-04-153-139/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows Phone / Windows 10 Mobile, there are the status bar and sometimes a navigation bar, which are hiding the visible window area. In the Windows Phone code paths, the area of the status bar was tracked and the visual area was dynamically shrinked. This patch enables that we use ApplicationView::visibleBounds() on every target (except Windows 8.1) to get the visible area of the application. Its change event is now also used as a resize trigger for manual resizing through user. Task-number: QTBUG-51163 Change-Id: I7abe2a0978418cc941e118e212426852474c026a Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
| | * OS X: Fix available geometry at startup when menu bar is hiddenTor Arne Vestbø2016-04-131-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Later versions of OS X allow you to auto-hide the menu bar, which should free up 22 pixels vertically at the top of the screen in the available geometry. Due to how the NSScreens are invalidated (asynchronously), we pick up this geometry change too late, resulting in QWindows maximizing as if the menu bar was still there. To work around this we explicitly tell the system to apply the default presentation options before initializing the QScreen properties, which results in the NSScreen being invalidated synchronously and having the right available geometry. Change-Id: I40d6ef2211165d53e0825173e3b6c6c17a5a954e Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
| | * xcb: Fix interpretation of the size from RRCrtcChangeNotifyAlexander Volkov2016-04-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The size in RRCrtcChangeNotify is a size of the mode and it is not rotated. At the same time when we call RRGetCrtcInfo, it returns a rotated size, which is then passed to QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation). So to pass the expected size to QXcbScreen::updateGeometry() after receiving RRCrtcChangeNotify, we should rotate the size according the screen rotation. Change-Id: If5b5b52403b077d3cd64b9a05d938bb9ac00b1e0 Reviewed-by: Daniel Vrátil <daniel.vratil@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | | Android: eradicate Q_FOREACH loops [rvalues]Marc Mutz2016-04-254-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. This is the simplest of the patch series: Q_FOREACH took a copy, so we do, too. Except we don't, since we're just catching the return value that comes out of the function (RVO). We can't feed the rvalues into range-for, because they are non-const and would thus detach. Change-Id: Ia086b1f3d072dd56c3545780490be03346df2880 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* | | winrt: Skip context validation in ANGLEOliver Wolff2016-04-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The flag causes context validation to be skipped by ANGLE. If validation is active nothing is rendered on Windows Phone (just a black screen) for widget applications. Everything works as expected without validation so we do without it. Change-Id: I6f9ea249b653ba5a602bc33e75105c57b686b92d Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | | Update ANGLE to chromium/2651Oliver Wolff2016-04-252-2/+1
| | | | | | | | | | | | | | | Change-Id: I1cd32b780b1a0b913fab870e155ae1f4f9ac40d7 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | | OSX: remove tablet->mouse event synthShawn Rutledge2016-04-253-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | The synthesis of mouse events for unhandled tablet events is now in cross-platform code, so the platform plugins don't need to do it. Task-number: QTBUG-47007 Change-Id: I948be398e4b1ab627a8dc97ca20c08dba4390238 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | | Android: eradicate Q_FOREACH loops [needing qAsConst()]Marc Mutz2016-04-253-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | ... by replacing them with C++11 range-for loops. To avoid detaches of these mutable Qt containers, wrap the container in qAsConst(). Change-Id: I9158c507f9249a7322b11c982bfcab1e6ed4a38a Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Android: eradicate Q_FOREACH loops [already const]Marc Mutz2016-04-255-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | ... (or trivially marked const) local variables, parameters, or data members with trivial loop bodies, by replacing them with C++11 range-for loops. Change-Id: I25e9e2148abd7676305ebd18754dc647f217e48b Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | iOS: (crash fix) ensure we don't clear focus object in a text responder ↵Richard Moe Gustavsen2016-04-221-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | transition When IM hints changes (e.g as a result of transferring focus between Qt objects), we sometimes need to reconfigure the keyboard. And the way we do that is to create a new QIOSTextResponder that matches the new configuration and tell it to become first responder. And in that process we need to ensure that we don't clear the focus object when the old text responder resigns. After all, it was the one requesting the new IM configuration in the first place. Since we set FirstResponderCandidate to point to the new text responder just before telling the old one to resign, we can use that variable to check if were in a first responder transition before clearing the focus object. Change-Id: I05bfb8180700a92a8f14f496044457583bcd38d3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | xcb: remove tablet->mouse event synth; harmonize handle/report methodsShawn Rutledge2016-04-193-40/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The synthesis of mouse events for unhandled tablet events is now in cross-platform code, so the platform plugins don't need to do it. xi2HandleTabletEvent's signature included an eventListener which is no longer needed; removing it makes it look needlessly inconsistent with the signature of xi2ReportTabletEvent; and while we're at it, might as well make the events const and deal with the repercussions. Task-number: QTBUG-47007 Change-Id: I0f76c8ed2d2b0baed0652bc68286f1734b8b72ff Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | xcb: Fix image scanline paddingLouai Al-Khanji2016-04-151-15/+22
| | | | | | | | | | | | | | | | | | | | Commit b9d386f2ccd69c7f6a766a6d90a6024eeb48e90a neglects to account for the scanline padding requested by the X server. This can result in visual artifacts if padding is required. This commit fixes this by factoring in the X server's requested scanline padding when calculating image stride. Change-Id: I082cb7101ec3a9c554b9b58a76f53f780b87d31e Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Multi-screen handling for the eglfs_kms_egldevice backendDominik Holland2016-04-1525-610/+1247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Separates the generic kms classes into a own kms static lib called QtEglFsKmsSupport. The eglfs_kms plugin was changed to use these base classes and got renamed accordingly to QEglFSKmsGbm*. The eglfs_kms_egldevice plugin got extended to also derive from the kms base classed and by this provides multi-screen support Change-Id: I6de6a754e94cb8d52cf8e658b03c6bd6637674a1 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Cocoa integration - invert 'masked out event' logicTimur Pocheptsov2016-04-131-2/+2
| | | | | | | | | | | | | | | | | | If a mask region contains a point - the event is _not_ masked out. Task-number: QTBUG-52533 Change-Id: I56d0276f5e3853479c2687addb95c2600edd3cda Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
* | Make the eglfs and eglfs-viv detection and build work for INTEGRITY.Rolland Dudemaine2016-04-133-2/+18
| | | | | | | | | | | | | | | | | | | | The majority of these changes is about #ifdef-ing the Linux-specific use of /dev/fb0. The display handle is also acquired using fbGetDisplay(), which is equivalent to fbGetDisplayByIndex(0) but is also portable. Change-Id: I6f460edc9c06ae7461a6aab2a816ac6f645208c4 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* | Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7Liang Qi2016-04-134-7/+49
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-04-134-7/+49
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java src/testlib/qtestcase.cpp src/testlib/qtestcase.qdoc Change-Id: Ied3c471dbc9a076c8de33d673bd557e88575609d
| | * QNSView: Disable focus ringGabriel de Dietrich2016-04-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only we don't need Cocoa to display it for us, but it also seems to take a lot of time after the call to -[NSView setNeedsDisplayInRect:]. While resizing a large and busy widgets window, we can decrease the relative time spent in -[QNSView flushBackingStore:region: offset:] from over 15% down to around 3%. Change-Id: I2a8d51be28b77c4c3da2588d9a14e461e7910167 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| | * Fix 2 cursors under EGLFS_KMSElena Zaretskaya2016-04-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Don't create hwcursor if it is disabled in QT_QPA_EGLFS_KMS_CONFIG. Task-number: QTBUG-52403 Change-Id: I4e6f45d5b773dc2d50cd012179cd23452d910537 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| | * By default use native menu barBogDan Vatra2016-04-081-0/+3
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-52010 Change-Id: I8f5feacc41719b1c084ec5a8763e597c1dab716c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| | * winrt: mimic desktop Window's "QKeyEvent::isAutoRepeat" behaviorOliver Wolff2016-04-081-4/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should mimic desktop Qt's behavior as close as possible. That means, that a key release event is triggered between auto generated press events for most keys. For some keys like modifiers, caps lock, scroll lock etc. there are no auto repeated events if the key is held down. The "last" release event after having held the key and several events are triggered does not have the isAutoRepeat flag set so we should not have that flag in this case either. Task-number: QTBUG-52055 Change-Id: I001a73416c4b2072d307ee5d87c7cb8406c9575f Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| | * winrt: Fix QKeyEvent::isAutoRepeatOliver Wolff2016-04-081-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When keeping a key pressed CorePhysicalKeyStatus' RepeatCount stays 1 while WasKeyDown changes from false to true. Thus WasKeyDown should be used to determine the auto repeat status of the key event. Task-number: QTBUG-52055 Change-Id: I7cde6b92473bd5335e85418c2b92cfe8f338975c Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* | | Add color font support on WindowsEskil Abrahamsen Blomfeldt2016-04-134-63/+232
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Detect if DirectWrite 2 is available, and support color fonts if possible. One limitation worth mentioning is that if the color font contains regular, monochrome glyphs as well, then these will be drawn in black, and not in the pen color. Fixing this would require some elaborate rewrites in the font rendering system, since we would have to have two font caches per color font (one for mono and one for colors), or do some sort of trick where we make argb(r, g, b, 0) mean subpixel alpha instead, and detect glyphs that are not correctly premultiplied when blitting to the screen. Another limitation is that the approach does not work with distance field rendering. In principle we could support this on Windows, since the format is vector based, but it would also require substantial work and it is not possible to support for Apple/Google fonts anyway, so it would just lead to code which is not cross-platform. [ChangeLog][Windows] Added support for color fonts (color emojis) when DirectWrite 2 is available. Change-Id: I6a608dd5d2aa3a7e762a06830902bddac7c550a5 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | xcb: Optimize non-shm backing store flushingLouai Al-Khanji2016-04-101-21/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately the functions in xcb-image are quite slow, both for the subimage generation and the byte order swapping. xcb_image_subimage is implemented as a pixel by pixel copy, and the xcb byte swapping is done manually without utilizing potential CPU instructions to accelerate the swap. Replace both with their Qt equivalents. Change-Id: I1fe1fe5d9576fdf2bab4a8c401d2a6bb842c2727 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | X11: Better support non-32bit visualsLouai Al-Khanji2016-04-0912-129/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch improves support for non-32bit screen configurations on X. The patch mostly touches the xcb platform plugin but the changes to the glx convenience functions do affect e.g. the offscreen plugin as well. Since QWindow instances are now by default of type RasterGL instead of Raster the majority of all windows are in fact instances of QXcbGlxWindow. This means that the eventual QSurfaceFormat that we use is chosen based on the available OpenGL configurations. Here the GLX config resolution code did not do a very good job in trying to find the closest match relative to the requested QSurfaceFormat, instead preferring higher bit depths. This is an issue since many configurations support 32-bit windows even if the screen itself has a root window with depth 16. In particular, servers supporting both GLX and Render are very likely to have such visuals. Particularly affected are remote X connections - even if the application itself makes no use of OpenGL at all! The changes introduced by this patch are as follows: 1. Improve the GLX visual selection logic 2. Improve the xcb visual selection logic 3. Remove duplicated visual lookup for OpenGL-enabled windows 4. Configure the default QSurfaceFormat to match the primary screen depth Change-Id: Id1c176359e63a4581410e20350db5ac2c083e1cf Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | QtBase: use erase and std::remove_if with QList and QVectorAnton Kudryavtsev2016-04-081-8/+7
| | | | | | | | | | | | | | ... instead of using removeAt in a loop, with quadratic complexity. Change-Id: I38b49e56b12c396db9fc0f1b75d8fb43c503a7f6 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | add cross-platform tablet->mouse event synth; enable on AndroidShawn Rutledge2016-04-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's urgent to fix the issue that on Android, it became impossible to interact with any widget or MouseArea which handles only mouse events but not tablet events, using the stylus, because stylus events are sent only as QTabletEvents. Before 5.6 (change 01d78ba86a631386a4d47b7c12d2a359da28f517) they were sent as touch events, and mouse events were synthesized from those. Whereas on other platforms, every QTabletEvent is followed by a synthesized QMouseEvent. This fix proceeds in the direction that event synthesis should be done in cross-platform code so that platform plugins don't have to repeat it, following the same pattern as for touch->mouse synthesis. Just as in that case, the application can disable it, and the platform plugin can also report that it's unnecessary for Qt to do the synthesis because the platform already does. So QTBUG-51618 is fixed, but QTBUG-47007 requires us to remove the tablet->mouse synthesis from all platform plugins, because the plugin does not know whether the tablet event was accepted or not, so it does not have enough information to decide whether to synthesize a mouse event. Synthesis has been unconditional until now, which contradicts what the documentation says: the mouse event should be sent only if the tablet event is NOT accepted. We can now gradually make this promise come true. [ChangeLog][QtCore][Tablet support] A synthetic mouse event will no longer be sent after every QTabletEvent, only after those which are not accepted (as documented). Task-number: QTBUG-47007 Task-number: QTBUG-51618 Change-Id: I99404e0c2b39bbca4377be6fd48e0c6b20338466 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>