提交 66596356 编写于 作者: J Jan Kiszka 提交者: Anthony Liguori

sdl: Do not grab mouse on mode switch while in background

When the mouse mode changes to absolute while the SDL windows is not in
focus, refrain from grabbing the input. It would steal from some other
window.
Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 25de5935
......@@ -483,12 +483,27 @@ static void sdl_grab_end(void)
sdl_update_caption();
}
static void absolute_mouse_grab(void)
{
int mouse_x, mouse_y;
if (SDL_GetAppState() & SDL_APPINPUTFOCUS) {
SDL_GetMouseState(&mouse_x, &mouse_y);
if (mouse_x > 0 && mouse_x < real_screen->w - 1 &&
mouse_y > 0 && mouse_y < real_screen->h - 1) {
sdl_grab_start();
}
}
}
static void sdl_mouse_mode_change(Notifier *notify, void *data)
{
if (kbd_mouse_is_absolute()) {
if (!absolute_enabled) {
sdl_grab_start();
absolute_enabled = 1;
if (is_graphic_console()) {
absolute_mouse_grab();
}
}
} else if (absolute_enabled) {
if (!gui_fullscreen) {
......@@ -571,19 +586,6 @@ static void toggle_full_screen(DisplayState *ds)
vga_hw_update();
}
static void absolute_mouse_grab(void)
{
int mouse_x, mouse_y;
if (SDL_GetAppState() & SDL_APPINPUTFOCUS) {
SDL_GetMouseState(&mouse_x, &mouse_y);
if (mouse_x > 0 && mouse_x < real_screen->w - 1 &&
mouse_y > 0 && mouse_y < real_screen->h - 1) {
sdl_grab_start();
}
}
}
static void handle_keydown(DisplayState *ds, SDL_Event *ev)
{
int mod_state;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册