GtkWidget *default_widget;
GtkWidget *focus_widget;
+ GtkWidget *move_focus_widget;
GtkWindow *transient_parent;
GtkWindowGeometryInfo *geometry_info;
GtkWindowGroup *group;
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
if (priv->move_focus)
- gtk_widget_child_focus (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD);
+ {
+ GtkWidget *parent;
+
+ parent = _gtk_widget_get_parent (priv->move_focus_widget);
+
+ while (parent)
+ {
+ if (_gtk_widget_get_visible (parent))
+ {
+ if (gtk_widget_grab_focus (parent))
+ break;
+ }
+
+ parent = _gtk_widget_get_parent (parent);
+ }
+ }
if (priv->unset_default)
gtk_window_set_default_widget (window, NULL);
child = priv->focus_widget;
if (child && (child == widget || gtk_widget_is_ancestor (child, widget)))
- priv->move_focus = TRUE;
+ {
+ priv->move_focus_widget = widget;
+ priv->move_focus = TRUE;
+ }
child = priv->default_widget;
if (child && (child == widget || gtk_widget_is_ancestor (child, widget)))