Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2022-03-02 00:09:28 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2022-03-02 00:25:12 +0300
commit9bd586a01e6813a615eab05871803730603e2152 (patch)
treea437902dcc606b7ea3b13d6d7e7ba1168a6428bd /intern/ghost/intern/GHOST_SystemCocoa.h
parent8e88af99348590e9879dcbfe97bbbc180fc5ec67 (diff)
Fix T95608: Mac issues with drag drop on multi-monitor
Mousemove events are sent to windows. In Windows OS, almost all mousemove events are sent to the window whose mouse cursor is over. On MacOS, the window with mousemove events is always the active window. It doesn't matter if the mouse cursor is inside or outside the window. So, in order for non-active windows to also have events, `WM_window_find_under_cursor` is called to find those windows and send the same events. The problem is that to find the window, `WM_window_find_under_cursor` only has the mouse coordinates available, it doesn't differentiate which monitor these coordinates came from. So the mouse on one monitor may incorrectly send events to a window on another monitor. The solution used is to use a native API on Mac to detect the window under the cursor. For Windows and Linux nothing has changed. Reviewed By: brecht Differential Revision: https://developer.blender.org/D14197
Diffstat (limited to 'intern/ghost/intern/GHOST_SystemCocoa.h')
-rw-r--r--intern/ghost/intern/GHOST_SystemCocoa.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h
index 5950da6813d..37cba8b8559 100644
--- a/intern/ghost/intern/GHOST_SystemCocoa.h
+++ b/intern/ghost/intern/GHOST_SystemCocoa.h
@@ -125,6 +125,14 @@ class GHOST_SystemCocoa : public GHOST_System {
*/
GHOST_TSuccess disposeContext(GHOST_IContext *context);
+ /**
+ * Get the Window under the cursor.
+ * \param x: The x-coordinate of the cursor.
+ * \param y: The y-coordinate of the cursor.
+ * @return The window under the cursor or nullptr if none.
+ */
+ GHOST_IWindow *getWindowUnderCursor(int32_t x, int32_t y);
+
/***************************************************************************************
* Event management functionality
***************************************************************************************/