diff --git a/ui/sdl.c b/ui/sdl.c index 662ffef46d61f4c9f719683ea1709b674e2913be..5ad38d54608a12175cba49979972733892e7dcd6 100644 --- a/ui/sdl.c +++ b/ui/sdl.c @@ -452,7 +452,7 @@ static void sdl_show_cursor(void) if (!cursor_hide) return; - if (!kbd_mouse_is_absolute()) { + if (!kbd_mouse_is_absolute() || !is_graphic_console()) { SDL_ShowCursor(1); if (guest_cursor && (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) @@ -625,13 +625,20 @@ static void sdl_refresh(DisplayState *ds) /* Reset the modifiers sent to the current console */ reset_keys(); console_select(keycode - 0x02); + gui_keysym = 1; + if (gui_fullscreen) { + break; + } if (!is_graphic_console()) { /* release grab if going to a text console */ - if (gui_grab && !gui_fullscreen) { + if (gui_grab) { sdl_grab_end(); + } else if (absolute_enabled) { + sdl_show_cursor(); } + } else if (absolute_enabled) { + sdl_hide_cursor(); } - gui_keysym = 1; break; default: break;