void TopLevelDestroyed (object o, EventArgs args)
{
RegisterUserInteraction ();
Gtk.Window w = (Gtk.Window) o;
w.Destroyed -= TopLevelDestroyed;
w.KeyPressEvent -= OnKeyPressed;
w.KeyReleaseEvent -= OnKeyReleased;
w.ButtonPressEvent -= HandleButtonPressEvent;
topLevelWindows.Remove (w);
if (w == lastFocused)
lastFocused = null;
}