Dialog boxes: Grab focus of the source widget on reset
[pspp] / src / ui / gui / psppire-dialog-action.c
index 8bf5a8d5450ac2106e1f435bc7d07bdfc7699c80..dfc934633d2706dc5158bcefae51acd1213c901c 100644 (file)
@@ -88,7 +88,6 @@ psppire_dialog_action_activate (PsppireDialogAction *act)
 {
   gint response;
 
-  PsppireVarStore *vs;
   PsppireDialogActionClass *class = PSPPIRE_DIALOG_ACTION_GET_CLASS (act);
 
   GSList *sl = gtk_ui_manager_get_toplevels (act->uim, GTK_UI_MANAGER_MENUBAR | GTK_UI_MANAGER_TOOLBAR);
@@ -97,9 +96,7 @@ psppire_dialog_action_activate (PsppireDialogAction *act)
   act->toplevel = gtk_widget_get_toplevel (GTK_WIDGET (sl->data));
   g_slist_free (sl);
 
-  vs = PSPPIRE_DATA_WINDOW(act->toplevel)->var_store;
-  
-  g_object_get (vs, "dictionary", &act->dict, NULL);
+  act->dict = PSPPIRE_DATA_WINDOW(act->toplevel)->dict;
   
   g_object_set (act->source, "model", act->dict, NULL);
   
@@ -109,6 +106,8 @@ psppire_dialog_action_activate (PsppireDialogAction *act)
   if (GTK_ACTION_CLASS (psppire_dialog_action_parent_class)->activate)
     GTK_ACTION_CLASS (psppire_dialog_action_parent_class)->activate ( GTK_ACTION (act));
 
+  gtk_widget_grab_focus (act->source);
+
   response = psppire_dialog_run (PSPPIRE_DIALOG (act->dialog));
 
   if ( class->generate_syntax )
@@ -140,7 +139,7 @@ psppire_dialog_action_class_init (PsppireDialogActionClass *class)
                         "Manager",
                         "The GtkUIManager which created this object",
                         GTK_TYPE_UI_MANAGER,
-                        G_PARAM_CONSTRUCT_ONLY |G_PARAM_READWRITE);
+                        G_PARAM_READWRITE);
 
   GParamSpec *toplevel_spec =
     g_param_spec_object ("top-level",