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;