Ungrab keyboard if virtual window is hidden or destroyed
This commit is contained in:
parent
290de401a5
commit
cf54a2c68e
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user