Merge branch 'blender-v3.5-release'

This commit is contained in:
Campbell Barton
2023-03-02 16:37:59 +11:00

View File

@@ -522,6 +522,12 @@ void WM_window_set_dpi(const wmWindow *win)
/**
* When windows are activated, simulate modifier press/release to match the current state of
* held modifier keys, see #40317.
*
* NOTE(@ideasman42): There is a bug in Windows11 where Alt-Tab sends an Alt-press event
* to the window after it's deactivated, this means window de-activation is not a fool-proof
* way of ensuring modifier keys are cleared for inactive windows. So any event added to an
* inactive window must run #wm_window_update_eventstate_modifiers first to ensure no modifier
* keys are held. See: #105277.
*/
static void wm_window_update_eventstate_modifiers(wmWindowManager *wm, wmWindow *win)
{
@@ -1395,6 +1401,8 @@ static bool ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_pt
case GHOST_kEventDraggingDropDone: {
GHOST_TEventDragnDropData *ddd = GHOST_GetEventData(evt);
/* Ensure the event state matches modifiers (window was inactive). */
wm_window_update_eventstate_modifiers(wm, win);
/* Entering window, update mouse position (without sending an event). */
wm_window_update_eventstate(win);
@@ -1492,6 +1500,7 @@ static bool ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_pt
if (win->active == 0) {
/* Entering window, update cursor/tablet state & modifiers.
* (ghost sends win-activate *after* the mouse-click in window!) */
wm_window_update_eventstate_modifiers(wm, win);
wm_window_update_eventstate(win);
}