X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action.c;h=7c399175dd5b89ce2f39cdc65b12a3ad78d81840;hb=dd0ea133078927381585e532d86c2450cbb35576;hp=e3ee25be75fc7f53c021314573e29a6ec42ed537;hpb=53508ccb5785dfcad8080d9dcdacdf3b7af5be76;p=pspp diff --git a/src/ui/gui/psppire-dialog-action.c b/src/ui/gui/psppire-dialog-action.c index e3ee25be75..7c399175dd 100644 --- a/src/ui/gui/psppire-dialog-action.c +++ b/src/ui/gui/psppire-dialog-action.c @@ -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 ) @@ -126,6 +125,8 @@ psppire_dialog_action_activate (PsppireDialogAction *act) break; } } + + gtk_widget_destroy (act->dialog); } static void @@ -138,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", @@ -176,7 +177,8 @@ void psppire_dialog_action_set_valid_predicate (PsppireDialogAction *act, ContentsAreValid dialog_state_valid) { - psppire_dialog_set_valid_predicate (act->dialog, dialog_state_valid, act); + psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (act->dialog), + dialog_state_valid, act); } void @@ -186,3 +188,10 @@ psppire_dialog_action_set_refresh (PsppireDialogAction *pda, g_signal_connect_swapped (pda->dialog, "refresh", G_CALLBACK (refresh), pda); } + +void +psppire_dialog_action_set_activation (gpointer class, activation activate) +{ + GTK_ACTION_CLASS (class)->activate = activate; +} +