Ungrab keyboard if virtual window is hidden or destroyed

This commit is contained in:
Alexander Larsson 2009-01-23 15:39:04 +01:00 committed by Alexander Larsson
parent 290de401a5
commit cf54a2c68e
2 changed files with 15 additions and 0 deletions

View File

@ -484,6 +484,8 @@ void _gdk_display_set_has_keyboard_grab (GdkDisplay *display,
gboolean owner_events,
unsigned long serial,
guint32 time);
void _gdk_display_unset_has_keyboard_grab (GdkDisplay *display,
gboolean implicit);
void _gdk_window_invalidate_for_expose (GdkWindow *window,
const GdkRegion *region);

View File

@ -5725,6 +5725,19 @@ gdk_window_hide (GdkWindow *window)
}
}
if (display->keyboard_grab.window != NULL)
{
if (is_parent_of (window, display->keyboard_grab.window))
{
/* Call this ourselves, even though gdk_display_keyboard_ungrab
does so too, since we want to pass implicit == TRUE so the
broken grab event is generated */
_gdk_display_unset_has_keyboard_grab (display,
TRUE);
gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME);
}
}
private->state = GDK_WINDOW_STATE_WITHDRAWN;
}