if (gtk_socket_id == 0 && gui.mainwin != NULL
&& gtk_widget_is_ancestor(target, gui.mainwin))
{
+ gtk_widget_add_events(gui.mainwin,
+ GDK_LEAVE_NOTIFY_MASK);
+
g_signal_connect(G_OBJECT(gui.mainwin), "event",
G_CALLBACK(mainwin_event_cb),
beval);
case GDK_KEY_RELEASE:
key_event(beval, event->key.keyval, FALSE);
break;
+ case GDK_LEAVE_NOTIFY:
+ // Ignore LeaveNotify events that are not "normal".
+ // Apparently we also get it when somebody else grabs focus.
+ if (event->crossing.mode == GDK_CROSSING_NORMAL)
+ cancelBalloon(beval);
+ break;
default:
break;
}