Index: editing.c =================================================================== RCS file: /cvs/gpe/base/gpe-contacts/editing.c,v retrieving revision 1.37 diff -b -B -u -r1.37 editing.c --- editing.c 6 Aug 2004 11:06:51 -0000 1.37 +++ editing.c 18 Aug 2004 11:40:44 -0000 @@ -43,6 +43,19 @@ void on_unknown_year_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_name_clicked (GtkButton *button, gpointer user_data); + + +/* this is the filter for phone number edits */ +static gboolean +phone_key_press_event (GtkWidget *widget, GdkEventKey *k, gpointer p) +{ + if (!strstr(" +0123456789-/()",k->string)) + { + return TRUE; + } + return FALSE; +} + static void add_tag (gchar *tag, GtkWidget *w, GtkWidget *pw) { @@ -71,6 +84,13 @@ GtkWidget *l; add_tag (e->tag, w, pw); + if (strstr(e->tag,".TELEPHONE") + || strstr(e->tag,".MOBILE") + || strstr(e->tag,".FAX")) + { + g_signal_connect (G_OBJECT (w), "key_press_event", + G_CALLBACK (phone_key_press_event), NULL); + } if (strcmp(e->tag,"NAME")) /* the name field on a button */ { l = gtk_label_new (e->name); @@ -82,6 +102,7 @@ g_signal_connect(G_OBJECT(l),"clicked", G_CALLBACK(on_name_clicked), gtk_widget_get_toplevel(pw)); + GTK_WIDGET_SET_FLAGS(w,GTK_CAN_DEFAULT); } gtk_table_attach (GTK_TABLE (table), l, @@ -542,11 +563,21 @@ gchar *tag = gtk_object_get_data (GTK_OBJECT (w), "db-tag"); struct tag_value *v = db_find_tag (p, tag); guint pos = 0; + if (tag) + { + if (!strcasecmp(tag,"NAME")) + { + gtk_widget_grab_default(w); + gtk_widget_grab_focus(w); + } + } if (v && v->value) { if (GTK_IS_EDITABLE (w)) + { gtk_editable_insert_text (GTK_EDITABLE (w), v->value, strlen (v->value), &pos); + } else if (GTK_IS_DATE_COMBO(w)) { if (v->value) @@ -683,7 +714,7 @@ ts = n1; } for (i=0;i