diff --git a/src/callbacks.c b/src/callbacks.c index 39ada7f..cca33ff 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -112,12 +112,12 @@ void on_phone_call_volume(GtkWidget * widget, gpointer data) /* code */ -/* on_phone_code_clear */ -void on_phone_code_clear(gpointer data) +/* on_phone_code_backspace */ +void on_phone_code_backspace(gpointer data) { Phone * phone = data; - phone_code_clear(phone); + phone_code_backspace(phone); } @@ -209,6 +209,15 @@ void on_phone_contacts_write(gpointer data) /* dialer */ +/* on_phone_dialer_backspace */ +void on_phone_dialer_backspace(gpointer data) +{ + Phone * phone = data; + + phone_dialer_backspace(phone); +} + + /* on_phone_dialer_call */ void on_phone_dialer_call(gpointer data) { @@ -240,15 +249,6 @@ void on_phone_dialer_changed(GtkWidget * widget, gpointer data) } -/* on_phone_dialer_clear */ -void on_phone_dialer_clear(gpointer data) -{ - Phone * phone = data; - - phone_dialer_clear(phone); -} - - /* on_phone_dialer_clicked */ void on_phone_dialer_clicked(GtkWidget * widget, gpointer data) { diff --git a/src/callbacks.h b/src/callbacks.h index 9631b9f..0ee4610 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -35,7 +35,7 @@ void on_phone_call_speaker(GtkWidget * widget, gpointer data); void on_phone_call_volume(GtkWidget * widget, gpointer data); /* code */ -void on_phone_code_clear(gpointer data); +void on_phone_code_backspace(gpointer data); void on_phone_code_clicked(GtkWidget * widget, gpointer data); void on_phone_code_enter(gpointer data); void on_phone_code_leave(gpointer data); @@ -49,9 +49,9 @@ void on_phone_contacts_show(gpointer data); void on_phone_contacts_write(gpointer data); /* dialer */ +void on_phone_dialer_backspace(gpointer data); void on_phone_dialer_call(gpointer data); void on_phone_dialer_changed(GtkWidget * widget, gpointer data); -void on_phone_dialer_clear(gpointer data); void on_phone_dialer_clicked(GtkWidget * widget, gpointer data); void on_phone_dialer_hangup(gpointer data); diff --git a/src/phone.c b/src/phone.c index a1d7e23..128b9c0 100644 --- a/src/phone.c +++ b/src/phone.c @@ -734,6 +734,18 @@ void phone_code_enter(Phone * phone) /* code */ +/* phone_code_backspace */ +void phone_code_backspace(Phone * phone) +{ + int pos; + + if((pos = gtk_editable_get_position(GTK_EDITABLE(phone->en_entry))) + < 1) + return; + gtk_editable_delete_text(GTK_EDITABLE(phone->en_entry), pos - 1, pos); +} + + /* phone_code_clear */ void phone_code_clear(Phone * phone) { @@ -918,6 +930,18 @@ int phone_dialer_append(Phone * phone, char character) } +/* phone_dialer_backspace */ +void phone_dialer_backspace(Phone * phone) +{ + int pos; + + if((pos = gtk_editable_get_position(GTK_EDITABLE(phone->di_entry))) + < 1) + return; + gtk_editable_delete_text(GTK_EDITABLE(phone->di_entry), pos - 1, pos); +} + + /* phone_dialer_call */ int phone_dialer_call(Phone * phone, char const * number) { @@ -1886,22 +1910,22 @@ static void _show_code_window(Phone * phone) gtk_widget_modify_font(phone->en_entry, phone->bold); g_signal_connect_swapped(phone->en_entry, "activate", G_CALLBACK( on_phone_code_enter), phone); + /* FIXME trigger a backspace instead (and use adequate icon) */ #if GTK_CHECK_VERSION(2, 16, 0) gtk_entry_set_icon_from_stock(GTK_ENTRY(phone->en_entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); g_signal_connect_swapped(phone->en_entry, "icon-press", G_CALLBACK( - on_phone_code_clear), phone); - gtk_box_pack_start(GTK_BOX(hbox), phone->en_entry, TRUE, TRUE, 0); + on_phone_code_backspace), phone); #else widget = gtk_button_new(); gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name( "edit-undo", GTK_ICON_SIZE_BUTTON)); gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE); g_signal_connect_swapped(widget, "clicked", G_CALLBACK( - on_phone_code_clear), phone); + on_phone_code_backspace), phone); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(hbox), phone->en_entry, TRUE, TRUE, 0); #endif + gtk_box_pack_start(GTK_BOX(hbox), phone->en_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); widget = _phone_create_dialpad(phone, GTK_STOCK_OK, _("Enter"), G_CALLBACK(on_phone_code_enter), @@ -2056,7 +2080,15 @@ static void _show_dialer_window(Phone * phone) gtk_entry_set_icon_from_stock(GTK_ENTRY(phone->di_entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); g_signal_connect_swapped(phone->di_entry, "icon-press", G_CALLBACK( - on_phone_dialer_clear), phone); + on_phone_dialer_backspace), phone); +#else + widget = gtk_button_new(); + gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name( + "edit-undo", GTK_ICON_SIZE_BUTTON)); + gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE); + g_signal_connect_swapped(widget, "clicked", G_CALLBACK( + on_phone_dialer_backspace), phone); + gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); #endif gtk_box_pack_start(GTK_BOX(hbox), phone->di_entry, TRUE, TRUE, 0); widget = gtk_button_new(); diff --git a/src/phone.h b/src/phone.h index ccfe2f9..76669b6 100644 --- a/src/phone.h +++ b/src/phone.h @@ -51,6 +51,7 @@ void phone_call_speaker(Phone * phone, gboolean speaker); /* code */ int phone_code_append(Phone * phone, char character); +void phone_code_backspace(Phone * phone); void phone_code_clear(Phone * phone); void phone_code_enter(Phone * phone); @@ -66,6 +67,7 @@ void phone_contacts_write_selected(Phone * phone); /* dialer */ int phone_dialer_append(Phone * phone, char character); +void phone_dialer_backspace(Phone * phone); int phone_dialer_call(Phone * phone, char const * number); void phone_dialer_clear(Phone * phone); void phone_dialer_hangup(Phone * phone);