X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fpsppire-value-entry.c;h=650fed8c144e2cdd0d2654f669cf4e4c71c6868d;hb=6fca007244bd4a7c917f2dc3a6bab87a2ad7461a;hp=c45db101bb7c2f958e357acd81824ba97c315631;hpb=4f66e6c17635237ca970fa383a77a763b02f16b2;p=pspp diff --git a/src/ui/gui/psppire-value-entry.c b/src/ui/gui/psppire-value-entry.c index c45db101bb..650fed8c14 100644 --- a/src/ui/gui/psppire-value-entry.c +++ b/src/ui/gui/psppire-value-entry.c @@ -48,6 +48,12 @@ enum PROP_WIDTH }; +enum {EDIT_DONE, /* Emitted when the entry has changed and is ready to be fetched */ + n_SIGNALS}; + +static guint signals [n_SIGNALS]; + + static void psppire_value_entry_set_property (GObject *object, guint prop_id, @@ -137,6 +143,11 @@ psppire_value_entry_text_changed (GtkEntryBuffer *buffer, obj->cur_value = NULL; } +static void +on_entry_activate (GtkWidget *w) +{ + g_signal_emit (w, signals [EDIT_DONE], 0); +} static void on_realize (GtkWidget *w) @@ -149,6 +160,9 @@ on_realize (GtkWidget *w) g_signal_connect (buffer, "notify::text", G_CALLBACK (psppire_value_entry_text_changed), w); + g_signal_connect_swapped (entry, "activate", + G_CALLBACK (on_entry_activate), w); + gtk_widget_set_can_focus (GTK_WIDGET (entry), TRUE); GTK_WIDGET_CLASS (psppire_value_entry_parent_class)->realize (w); @@ -243,6 +257,16 @@ psppire_value_entry_class_init (PsppireValueEntryClass *class) 0, MAX_STRING, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); + + signals [EDIT_DONE] = + g_signal_new ("edit-done", + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); } static void @@ -442,6 +466,10 @@ psppire_value_entry_set_value (PsppireValueEntry *obj, gchar *string; obj->cur_value = NULL; + + if (value == NULL) + return; + if (obj->show_value_label) { struct val_lab *vl = val_labs_lookup (obj->val_labs, value);