summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsdrag.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Replace QWindowsComBase with QComObjectPavel Dubsky2024-02-271-1/+2
| | | | | | | | | | | | Currently with have two base classes for COM-objects that implement basic IUnknown functionality and the idea is to remove duplication and keep just one. Since QComObject supports more features than QWindowsComBase, such as multiple inheritance and intermediate interface querying, we should switch to the former one. Change-Id: Ief6567496de9f547b936de91d634c6998ba59a75 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix hang issue during drag and drop in windowsSanthosh Kumar2023-12-141-1/+2
| | | | | | | | | | | | | | | | During drag and drop operation, we used to get window under mouse and process events for that window after the patch set 9ff5b886fade489b7cc268626f518145650f6b2c. But this sometimes cause hang issue in GetMessage() when the respective window doesn't capture mouse event and we are required to process mouse events. This patch fixes this issue by considering whether the window under mouse has capture. Fixes: QTBUG-115260 Pick-to: 6.7 6.6 6.5 6.2 Change-Id: I748936e4ce23e60abce51d34c1326cfb105b06cb Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QWindowsDrag: remove unused member variable and method isDraggingDavid Faure2023-11-171-4/+0
| | | | | Change-Id: If2b10c31cb3d201395d121e6b20ac19e01128b2f Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* Include what you need: <QPointer>Marc Mutz2023-10-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | All these TUs relied on transitive includes of qpointer.h, maybe to a large extent via qevent.h, though, given that qevent.h is more or less the only public QtBase header that includes qpointer.h, something else seems to be at play here. Said qevent.h actually needs QPointer in-name-only, so a forward declaration would suffice. Prepare for qevent.h dropping the include. The algorithm I used was: If the TU mentions 'passiveGrabbers', the name of the QEvent function that returns QPointers, and the TU doesn't have qpointer.h included explicitly, include it. That may produce False Positives, but better safe than sorry. Otherwise, in src/, add an include to all source and header files which mention QPointer. Exception: if foo.h of a foo.cpp already includes it, don't include again. Task-number: QTBUG-117670 Change-Id: I3321cccdb41ce0ba6d8a709cea92427aba398254 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Implement QWindowsKeyMapper in terms of QPlatformKeyMapperTor Arne Vestbø2023-10-091-1/+2
| | | | | Change-Id: I060ca9613d49bb85a2cf8d4f808b2b5b1c0bdcd5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix button state validation in windows platform during drag and dropSanthosh Kumar2023-06-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | The button state from windows when we use GetAsynckeyState() provides both MK_LBUTTON and MK_RIGHTBUTTON at the same time. This creates an issue when we validate only with single state to determine DRAGDROP_S_DROP operation. Normally, The MK_RBUTTON will be delivered when we have long press during drag. But sometimes (no definitive reason identified) the key state from windows contains both the key state (MK_LBUTTON | Mk_RBUTTON) during drag and drop operation with touch. This patch set fixes the issue by validating all key state instead of a particular state. Fixes: QTBUG-112995 Pick-to: 6.6 6.5 Change-Id: I67bf5f4956b68279ecc5fbeca8e8e7aef46d0482 Reviewed-by: Timothée Keller <timothee.keller@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Windows drag&drop: Use correct window for drag target processingOliver Wolff2023-02-271-1/+2
| | | | | | | | | | | | | | GetFocus will return the window that currently has keyboard focus. This is not what we want for drag and drop handling though. Use the window under mouse and process events for that window when doing the touch/pen input workaround. If no window is found we fall back to the focus window. Followup to 31e7790102b260344893eaa8bf8b7b1a0f95e3b7 Fixes: QTBUG-111149 Pick-to: 6.5 6.4 6.2 Change-Id: Ib8233debc267df0cc19b21c1dc5c6881d018d84a Reviewed-by: Timothée Keller <timothee.keller@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows QPA: Remove tablet->mouse synth and fix Drag&Drop with touch/penAndré de la Rocha2022-10-281-1/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch avoids synthesizing mouse messages in the QPA for touch/pen input, and lets the GUI do mouse event synthesis for unhandled touch/pen events, if required, like in other platforms. This requires a workaround to avoid breaking drag and drop with touch/pen (or making it worse). DnD on Windows is based on the DoDragDrop() Win32 API, which does not work with touch/pen input, which in some cases cause a DnD operation started with touch/pen to hang until the mouse is moved. To avoid it we process pointer messages for touch/pen and generate mouse input through SendInput() to trigger DoDragDrop(), which then seems to work as expected. So now we inform QtGui that the Windows platform no longer sends synth-mouse events after tablet events (unsetting the flag added in f931e5e72d4617023bbea46cba2c0d61bb1efa4f); this completes what was attempted in 8ada0633cd58e0608df2e16880f1293286025504. Fixes: QTBUG-106368 Fixes: QTBUG-57577 Fixes: QTBUG-100788 Task-number: QTBUG-77414 Task-number: QTBUG-104594 Pick-to: 6.4 6.3 6.2 Change-Id: I46db3c74be2a95cf2d94ba930398e58dc930d2db Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Use SPDX license identifiersLucie Gérard2022-05-161-38/+2
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Always include qt_windows header firstVolker Hilsheimer2022-02-221-1/+1
| | | | | | | | | | qt_windows takes care of setting NOMINMAX, which prevents native headers from defining `min` and `max` as macros, breaking the build. So include that header always as the first header. Pick-to: 6.3 Change-Id: I82cd8b21d263102000e6e66f135465bc2c126db4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qwindowsdrag: Fix typo in documentationJonas Kvinge2021-10-121-1/+1
| | | | | | Pick-to: 5.15 6.2 Change-Id: I4bd8ff5b4ddeee1760b012bd603b014d535534ed Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* Windows QPA: Fix omitted Drop eventAndre de la Rocha2020-08-131-17/+6
| | | | | | | | | | | | | | | In some rare cases, when a mouse button was released while the mouse was static, a drag and drop operation would not be completed until the mouse was moved. Probably due to a Windows bug, the mouse button state supplied through the arguments of the IDropSource callbacks, called from the internal DoDragDrop() loop, would not reflect the actual mouse button state in this case. This change makes the callback implementation use the actual mouse button state provided by GetAsyncKeyState(). Fixes: QTBUG-85300 Pick-to: 5.15 Change-Id: I3405bdf7076ddc46415cd274a502434bdc0d2f3f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix build with mingw gcc 9 and -Wsuggest-overrideKai Koehne2020-08-101-2/+2
| | | | | Change-Id: I780b0761a7f6b19022116b738efa7aca1378b715 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qpa: Remove references to lighthouseTor Arne Vestbø2020-04-031-5/+0
| | | | | Change-Id: I37646113f626c878883cff49f4e186ec71bcfa15 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Windows QPA: Fix clang warnings about repetitive type namesFriedemann Kleint2019-06-131-3/+3
| | | | | | | | | | Fix warning like: warning: use auto when initializing with new/reinterpret_cast to avoid duplicating the type name [modernize-use-auto] Change-Id: Ieb7f052919173f6923e68de9f9e849dee45e36e7 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Prefix textstream operators with Qt::Lars Knoll2019-05-021-4/+4
| | | | | | | As the non prefixed variants are deprecated Change-Id: I2ba09d71b9cea5203b54297a3f2332e6d44fedcf Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Windows QPA: Generate proper event when dragging item outside windowAndre de la Rocha2019-02-251-7/+18
| | | | | | | | | | | When an item was dragged outside the window, the mouse release event was not being properly delivered and the item would stick to mouse cursor after moving it back into the window. Fixes: QTBUG-72994 Change-Id: Ibce990390c866e16d58f7d969673dd05e862d97e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows/Direct2d QPA: Use nullptrFriedemann Kleint2019-01-281-6/+6
| | | | | Change-Id: I6ce01caa58de78e0eb61e243ee1e7b05cc1f5568 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows QPA: Fix Drag&Drop from touchscreen/penAndre de la Rocha2018-10-181-0/+4
| | | | | | | | | | | | | | | | | | | | The Drag&Drop functionality had stopped working with touchscreen/pen after the WM_POINTER-based input handling was added. The Drag&Drop functionality internally uses the DoDragDrop() WIN32 call which, according to Microsoft docs, is not supported for invocation inside handlers for touch/pen messages, and should be invoked in handlers for mouse messages that are synthesized by the OS afterwards. The result was that when DoDragDrop (which is a blocking function with its own event loop) was called it would hang ignoring all touch/pen messages until a mouse/touchpad message arrived. This change implements a workaround for this issue by enqueuing Qt touch/pen events that would be generated inside the pointer message handler, and that could start a Drag&Drop operation, and only producing them after the OS sends the associated mouse messages. Task-number: QTBUG-70887 Change-Id: Id45e0ecc70358ba250de9b3268856781ed21c9dd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QWindowsCursor: fix typo and change enum CursorState into enum classAnton Kudryavtsev2018-09-251-2/+2
| | | | | Change-Id: I55b539da99254d3f7318193669c409552e429a6a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Windows QPA: Fix clang-tidy-warnings about class definitionsFriedemann Kleint2018-08-061-1/+1
| | | | | | | | | | - Use ' = default' for trivial constructors/destructors - Remove unneeded destructors - replace virtual by override or add override where applicable - Add Q_DISABLE_COPY Change-Id: Ic7a61579dbc845769beada4fc79bb5dd310e5e52 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-06-071-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/corelib/kernel/qeventdispatcher_cf.mm src/gui/kernel/qguiapplication_p.h src/gui/kernel/qwindowsysteminterface.cpp src/gui/kernel/qwindowsysteminterface.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/cocoa/qnswindowdelegate.mm src/plugins/platforms/ios/qioseventdispatcher.mm src/plugins/platforms/windows/qwindowsdrag.h src/plugins/platforms/windows/qwindowsinternalmimedata.h src/plugins/platforms/windows/qwindowsmime.cpp src/plugins/platforms/winrt/qwinrtscreen.cpp Change-Id: Ic817f265c2386e83839d2bb9ef7419cb29705246
| * Make sure we can build with -no-feature-draganddropJoerg Bornemann2018-05-291-0/+1
| | | | | | | | | | | | | | | | | | We move QInternalMimeData to a separate file, because this class is used, even if draganddrop is disabled. From now on, include qinternalmimedata_p.h instead of qdnd_p.h for QInternalMimeData. Change-Id: I594e08e2e90d574dc445119091686b4b69e4731b Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | Windows QPA: Fix Qt include statementsFriedemann Kleint2018-05-231-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | Change #include <QtCore/QDebug> to #include <QtCore/qdebug.h> according to the coding style. Change-Id: I6ba8a7424c548ddde1d18f3f6f4f87e30973d710 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Windows QPA: Use new QPA Dnd APIFriedemann Kleint2018-05-051-29/+22
|/ | | | | | | Task-number: QTBUG-57168 Task-number: QTBUG-56244 Change-Id: I84cf811d9e886369a659ecb33ce1778207660922 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Windows QPA: Fix sending of the mouse release in case of a DropFriedemann Kleint2018-03-071-1/+2
| | | | | | | | | | | | Use the new API of QWindowSystemInterface to send the release event which does not depend on the state of QGuiApplicationPrivate::mouse_buttons. Amends 1f6bd8bfb2206480ca5b5c267da38659e6cff20e. Task-number: QTBUG-66447 Change-Id: Iae889ea416b633c9307da9535dfb51ad1dbf288e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Windows QPA: Ensure a mouse release event is sent after DnDFriedemann Kleint2018-02-261-1/+15
| | | | | | | | | | Windows does not send a mouse release by itself, which can leave Quick controls believing the mouse is still pressed. Synthesize an event. Task-number: QTBUG-66447 Change-Id: Ia865edddc0c77a1b42b9ad2c38323379e74b6704 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Windows QPA: Avoid 'large' mouse cursors over RDPFrank Richter2018-01-211-1/+13
| | | | | | | | | | | | On some combinations of RDP client and server a large mouse cursor results in a hang of the RDP session. However, the 'touch' drag facility (creating a transparent window) works just fine, so use that when encountering a large cursor on RDP. (The threshold of 96 for a 'large' cursor was extracted from the spec, as that is the largest supported size mentioned.) Change-Id: I9782c45e8bd6640f36bb5a392961681a99e214e6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows: Make dropped files be opened or attachedAndre de la Rocha2017-09-051-2/+2
| | | | | | | | | | | | | | | | | | Adds QWindowsDropDataObject as a QWindowsOleDataObject subclass specialized for handling Drag & Drop, which only allows "text/uri-list" data to be exported as CF_HDROP, to allow files dragged from Qt applications and dropped into other applications to be recognized as attachments or opened. Otherwise, files would be imported as URLs and inserted as local hyperlinks. [ChangeLog][Important Behavior Changes][Windows] On Windows, a drag & drop operation of local files URIs, like QListView items backed by a QFileSystemModel, will result in the attachment or opening of the files by the target application, instead of the creation of hyperlinks. Task-number: QTBUG-62662 Change-Id: I51efa4a56574b5e5fb3ee736ede14b5da24caac4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-06-191-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qprocess_unix.cpp src/corelib/io/qprocess_win.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/windows/qwindowscontext.cpp src/plugins/platforms/windows/windows.pri src/tools/uic/cpp/cppwriteinitialization.cpp src/widgets/doc/src/widgets-and-layouts/gallery.qdoc Change-Id: I8d0834c77f350ea7540140c2c7f372814afc2d0f
| * Windows QPA: Port to new feature systemFriedemann Kleint2017-06-081-1/+1
| | | | | | | | | | | | | | | | | | Replace all checks for DEFINES in windows.pri by proper configure system checks as they no longer seem to work. Task-number: QTBUG-61192 Change-Id: I625c9de0812fd376d06eacb065d3a32a499b6b00 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-03-201-23/+36
|\| | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qfilesystemengine_win.cpp src/gui/text/qdistancefield.cpp src/plugins/platforms/xcb/qxcbconnection.h Change-Id: I1be4a6f440ccb7599991159e3cb9de60990e4b1e
| * Fix Windows DnD: Wrong qApp mouse buttons state after external DnDSerge Lysenko2017-03-181-23/+36
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Windows: Introduce helper class for implementing COM interfacesFriedemann Kleint2017-02-171-68/+1
|/ | | | | | | Task-number: QTBUG-43190 Change-Id: I565e3c57631c32a88ac7598758526c349ddf3312 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows: Replace Q_DECL_OVERRIDE by overrideAlexander Volkov2016-12-081-1/+1
| | | | | | | | We can use 'override' directly since Qt 5.7. Also remove redundant 'virtual'. Change-Id: Ib478f19381d53642e1ed1c2a589d6b9c4d663e3c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows QPA plugin: Use member initializationFriedemann Kleint2016-11-301-6/+2
| | | | | | | | Use C++ 11 member initialization in value-type structs. Task-number: QTBUG-51673 Change-Id: I668389b4a0ad1d862a505b740d67357cb9c2a3dc Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Fix Windows DnD: Alt key modificator was interpreted as mouse XbuttonSerge Lysenko2016-09-211-11/+16
| | | | | | | | | | | Qt4->Qt5 regression: QWindowsMouseHandler::keyStateToMouseButtons() cannot be used instead of the old Qt4 function toQtMouseButtons() because Alt key and mouse Xbutton have the same code on the Windows. Task-number: QTBUG-55885 Change-Id: Ibad35cfe83145d03fd05f397c0afba9c86817a0c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows QPA: Remove qtwindows_additional.h.Friedemann Kleint2016-05-171-1/+1
| | | | | | | | | | Clean up helper definitions required for old SDKs and MinGW and move the remaining ones to the files that require them. Ensure compilations with MinGW 4.9. Task-number: QTBUG-51673 Change-Id: I607989dd1d9197f237c6d021209a2c94aeb84021 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-02-241-2/+2
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java src/plugins/platforms/windows/qwindowsfontengine.cpp src/plugins/platforms/windows/qwindowsnativeimage.cpp tests/auto/gui/kernel/qwindow/BLACKLIST tests/auto/gui/kernel/qwindow/tst_qwindow.cpp Change-Id: I649b32b260ce0ed2d6a5089021daa0d6a8db85f7
| * Windows QPA: Fix warnings as shown by Qt Creator's Clang based code model.Friedemann Kleint2016-02-191-2/+2
| | | | | | | | | | | | | | | | Code except font, accessibility and file qwindowswindow.cpp. Task-number: QTBUG-50804 Change-Id: I40848264f9fa16eea00cf70d7be009c484c49e92 Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-02-021-20/+23
|\| | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test src/plugins/platforms/cocoa/qcocoahelpers.mm src/tools/qlalr/cppgenerator.cpp Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
| * Windows QPA: Fix drag cursor and hotspot for pixmaps with DPR.Friedemann Kleint2016-01-291-19/+22
| | | | | | | | | | | | | | | | | | | | | | | | Introduce separate scale factors for hot spot and pixmap and set the devicePixelRatio of the scaled pixmap to 1 matching that of the target pixmap which will be converted to a Windows cursor. Change-Id: I0b0f6c6a79589ec954b5a1a09a86b87c91b5147d Task-number: QTBUG-46068 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Alexandru Croitor <alexandru.croitor@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| * Windows QPA: Fix position of the fake touch drag cursor window for HighDPI.Friedemann Kleint2016-01-291-1/+1
| | | | | | | | | | | | | | Use QCursor::pos() to obtain the position in device independent pixels. Change-Id: Ia54701c556188f40ba678341125114d113ffe8c7 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-211-1/+1
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice_p.h src/corelib/kernel/qvariant_p.h src/corelib/tools/qsimd.cpp src/gui/kernel/qguiapplication.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
| * Windows/Direct2D QPA plugins: Fix overrides.Friedemann Kleint2016-01-141-1/+1
| | | | | | | | | | | | | | Fix warnings found by clang. Change-Id: Ia8e7a271e9d33011eded1e63e61dbcaeaf692600 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devSimon Hausmann2015-11-271-98/+13
|\| | | | | | | Change-Id: Ib43c6f126998eefcfed9a7c1f2bcbac8b4dd05ec
| * Windows: Fix the size of drag cursors in multi-screen setups.Friedemann Kleint2015-11-231-98/+13
| | | | | | | | | | | | | | | | | | | | Move QWindowsDrag::defaultCursor() to the per-screen instance of QWindowsCursor so that the cached default drag cursor pixmaps are created with the correct size per screen. Task-number: QTBUG-49511 Change-Id: I02f75ac3b1e5e064325b066ee03e1d5c8a7c7ee8 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-11-231-17/+8
|\| | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qcoreapplication.cpp src/corelib/thread/qthread_unix.cpp Change-Id: Ia08d613c3f0bd08cb6dc3e3a57257207dfd4a099
| * Windows: Refactor cursor handling.Friedemann Kleint2015-11-201-17/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applying scaling to the pixmaps used in pixmap cursors requires applying a scale factor in a code path now in a constructor of QWindowsWindowCursorData (nested into QWindowsWindowCursor). This needs to be split and the code paths for cursors created from a Qt::CursorShape value and pixmap cursors need to be further separated. Replace the QSharedDataPointer-based QWindowsWindowCursor class by a simple, non-copyable class CursorHandle managing the HCURSOR handle and pass it around using a QSharedPointer. Split the cache in QWindowsCursor into one based on Qt::CursorShape and one based on the cache key aggregated from the pixmap cache keys (using QWindowsPixmapCursorCacheKey renamed from QWindowsCursorCacheKey), simplifying the standard case based on Qt::CursorShape. Reuse class CursorHandle in QWindowsOleDropSource::CursorEntryCursorEntry, which used a similar class. Remove QWindowsCursor::createSystemCursor(). Avoid the construction of temporary QCursor objects for the standard cursors constructed from using resource pixmaps by introducing a struct PixmapCursor containing pixmap and hotspot. Task-number: QTBUG-49511 Change-Id: I5393d64bd70f7dab68c0a8c2255c7685ac367b2f Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>