private void ReleaseGrab(Gdk.Event evnt)
{
uint event_time;
if(evnt is Gdk.EventKey) {
event_time = ((Gdk.EventKey)evnt).Time;
} else if(evnt is Gdk.EventButton) {
event_time = ((Gdk.EventButton)evnt).Time;
} else {
throw new ApplicationException("ShowDock expects EventKey or EventButton");
}
Display.KeyboardUngrab(event_time);
Display.PointerUngrab(event_time);
Gtk.Grab.Remove(dock);
dock.Hide();
timeout = false;
if(evnt is Gdk.EventButton) {
Gdk.EventButton evnt_copy = (Gdk.EventButton)Gdk.EventHelper.Copy(evnt);
UpdateEventButton(evnt_copy, GdkWindow, Gdk.EventType.ButtonRelease);
ProcessEvent(evnt_copy);
Gdk.EventHelper.Free(evnt_copy);
}
}