mirror of
https://github.com/mpv-player/mpv
synced 2025-02-26 18:32:08 +00:00
win32: support the property 'focused'
And also change the existing WM_KILLFOCUS handler to return 0 instead of 'break' (which later calls DefWindowProcW), as MSDN says we should do for WM_{KILL,SET}FOCUS. It seems that the 'focused' property is now supported by all main VOs: x11, macOS, wayland, Windows. TCT/sixel/caca probably don't support it, and unknown with SDL. Fixes #8868
This commit is contained in:
parent
6abb7e385f
commit
89684976ac
@ -2502,8 +2502,7 @@ Property list
|
||||
ways. The property is unavailable if no video is active.
|
||||
|
||||
``focused``
|
||||
Whether the window has focus. Currently works only on X11, Wayland and
|
||||
macOS.
|
||||
Whether the window has focus. Might not be supported by all VOs.
|
||||
|
||||
``display-names``
|
||||
Names of the displays that the mpv window covers. On X11, these
|
||||
|
@ -97,6 +97,8 @@ struct vo_w32_state {
|
||||
// Has the window seen a WM_DESTROY? If so, don't call DestroyWindow again.
|
||||
bool destroyed;
|
||||
|
||||
bool focused;
|
||||
|
||||
// whether the window position and size were intialized
|
||||
bool window_bounds_initialized;
|
||||
|
||||
@ -1210,7 +1212,13 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
||||
break;
|
||||
case WM_KILLFOCUS:
|
||||
mp_input_put_key(w32->input_ctx, MP_INPUT_RELEASE_ALL);
|
||||
break;
|
||||
w32->focused = false;
|
||||
signal_events(w32, VO_EVENT_FOCUS);
|
||||
return 0;
|
||||
case WM_SETFOCUS:
|
||||
w32->focused = true;
|
||||
signal_events(w32, VO_EVENT_FOCUS);
|
||||
return 0;
|
||||
case WM_SETCURSOR:
|
||||
// The cursor should only be hidden if the mouse is in the client area
|
||||
// and if the window isn't in menu mode (HIWORD(lParam) is non-zero)
|
||||
@ -1785,6 +1793,9 @@ static int gui_thread_control(struct vo_w32_state *w32, int request, void *arg)
|
||||
return p->len ? VO_TRUE : VO_FALSE;
|
||||
}
|
||||
return VO_FALSE;
|
||||
case VOCTRL_GET_FOCUSED:
|
||||
*(bool *)arg = w32->focused;
|
||||
return VO_TRUE;
|
||||
}
|
||||
return VO_NOTIMPL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user