diff -ur gtk+-1.2.2/gtk/gtkwindow.c gtk+-1.2.2-new/gtk/gtkwindow.c --- gtk+-1.2.2/gtk/gtkwindow.c Wed Apr 14 05:20:09 1999 +++ gtk+-1.2.2-new/gtk/gtkwindow.c Mon May 10 05:45:50 1999 @@ -1178,7 +1178,13 @@ if (GTK_WIDGET_VISIBLE (widget)) { window = GTK_WINDOW (widget); - if (window->focus_widget && !GTK_WIDGET_HAS_FOCUS (window->focus_widget)) + /* We'll send a focus in event even when window->focus_widget + * already has focus. It's possible that the focus widget does + * not have IC focus, because IC focus can be lost every time + * a focus out event is sent for any editable widgets managed + * by gdk. (cf. gdk_im_end()) + */ + if (window->focus_widget) { fevent.type = GDK_FOCUS_CHANGE; fevent.window = window->focus_widget->window;