diff --git a/gnome/src/actions.c b/gnome/src/actions.c index e6e7ef4fda78d7082269789091ee559a61c73728..5c49f6849f0a7e49b19d1a21f4951a5e8a4157e7 100644 --- a/gnome/src/actions.c +++ b/gnome/src/actions.c @@ -626,52 +626,42 @@ void process_dialing (callable_obj_t *c, guint keyval, gchar *key) { // We stop the tone - if (strlen (c->_peer_number) == 0 && c->_state != CALL_STATE_TRANSFERT) { + if (!*c->_peer_number && c->_state != CALL_STATE_TRANSFERT) dbus_start_tone (FALSE , 0); - //dbus_play_dtmf( key ); - } switch (keyval) { - case 65293: /* ENTER */ - case 65421: /* ENTER numpad */ + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: sflphone_place_call (c); break; - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: sflphone_hang_up (); break; - case 65288: { /* BACKSPACE */ - /* Brackets mandatory because of local vars */ - gchar * before = c->_peer_number; - - if (strlen (c->_peer_number) >= 1) { - - if (c->_state == CALL_STATE_TRANSFERT) { - // Process backspace if and only if string not NULL - if (strlen (c->_trsft_to) > 0) - c->_trsft_to = g_strndup (c->_trsft_to, strlen (c->_trsft_to) - 1); - } else { - c->_peer_number = g_strndup (c->_peer_number, strlen (c->_peer_number) -1); - g_free (before); - DEBUG ("SFLphone: TO: backspace %s", c->_peer_number); - } - + case GDK_KEY_BackSpace: + if (c->_state == CALL_STATE_TRANSFERT) { + if (*c->_trsft_to) + c->_trsft_to[strlen (c->_trsft_to) - 1] = '\0'; calltree_update_call (current_calls, c, NULL); - } else if (strlen (c->_peer_number) == 0) { - if (c->_state != CALL_STATE_TRANSFERT) - dbus_hang_up (c); + } else { + if (*c->_peer_number) { + c->_peer_number[strlen (c->_peer_number) -1] = '\0'; + calltree_update_call (current_calls, c, NULL); + } + else + dbus_hang_up(c); } - } - break; - case 65289: /* TAB */ - case 65513: /* ALT */ - case 65507: /* CTRL */ - case 65515: /* SUPER */ - case 65509: /* CAPS */ + + break; + case GDK_KEY_Tab: + case GDK_KEY_Alt_L: + case GDK_KEY_Control_L: + case GDK_KEY_Super_L: + case GDK_KEY_Caps_Lock: break; default: - // if (keyval < 255 || (keyval >65453 && keyval < 65466)) - if (keyval < 127 || (keyval > 65400 && keyval < 65466)) { + if (keyval < 127 /* ascii */ || + (keyval >= GDK_KEY_Mode_switch && keyval <= GDK_KEY_KP_9) /* num keypad */) { if (c->_state == CALL_STATE_TRANSFERT) { gchar *new_trsft = g_strconcat (c->_trsft_to, key, NULL); @@ -695,8 +685,6 @@ process_dialing (callable_obj_t *c, guint keyval, gchar *key) callable_obj_t * sflphone_new_call() { - DEBUG ("Actions: Sflphone new call"); - callable_obj_t *current_selected_call = calltab_get_selected_call (current_calls); if ( (current_selected_call != NULL) && (current_selected_call->_confID == NULL)) @@ -723,16 +711,11 @@ sflphone_keypad (guint keyval, gchar * key) { callable_obj_t * c = calltab_get_selected_call (current_calls); - DEBUG("SFLphone: Keypad"); - if ( (active_calltree != current_calls) || (active_calltree == current_calls && !c)) { - DEBUG ("Not in a call, not dialing, create a new call"); - - //dbus_play_dtmf(key); switch (keyval) { - case 65293: /* ENTER */ - case 65421: /* ENTER numpad */ - case 65307: /* ESCAPE */ + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: + case GDK_KEY_Escape: break; default: calltree_display (current_calls); @@ -740,18 +723,15 @@ sflphone_keypad (guint keyval, gchar * key) break; } } else if (c) { - DEBUG ("Call is non-zero"); - switch (c->_state) { case CALL_STATE_DIALING: // Currently dialing => edit number - DEBUG ("Writing a number"); process_dialing (c, keyval, key); break; case CALL_STATE_RECORD: case CALL_STATE_CURRENT: switch (keyval) { - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: dbus_hang_up (c); time (&c->_time_stop); calltree_update_call (history, c, NULL); @@ -766,17 +746,15 @@ sflphone_keypad (guint keyval, gchar * key) case CALL_STATE_INCOMING: switch (keyval) { - case 65293: /* ENTER */ - case 65421: /* ENTER numpad */ + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: c->_history_state = INCOMING; calltree_update_call (history, c, NULL); dbus_accept (c); - DEBUG ("from sflphone_keypad ( enter ) : "); stop_notification(); break; - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: dbus_refuse (c); - DEBUG ("from sflphone_keypad ( escape ) : "); stop_notification(); break; } @@ -785,13 +763,13 @@ sflphone_keypad (guint keyval, gchar * key) case CALL_STATE_TRANSFERT: switch (keyval) { - case 65293: /* ENTER */ - case 65421: /* ENTER numpad */ + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: dbus_transfert (c); time (&c->_time_stop); calltree_remove_call(current_calls, c, NULL); break; - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: sflphone_unset_transfert (); break; default: // When a call is on transfert, typing new numbers will add it to c->_peer_number @@ -803,11 +781,11 @@ sflphone_keypad (guint keyval, gchar * key) case CALL_STATE_HOLD: switch (keyval) { - case 65293: /* ENTER */ - case 65421: /* ENTER numpad */ + case GDK_KEY_Return: + case GDK_KEY_KP_Enter: dbus_unhold (c); break; - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: dbus_hang_up (c); break; default: // When a call is on hold, typing new numbers will create a new call @@ -820,11 +798,9 @@ sflphone_keypad (guint keyval, gchar * key) case CALL_STATE_BUSY: case CALL_STATE_FAILURE: - //c->_stop = 0; switch (keyval) { - case 65307: /* ESCAPE */ + case GDK_KEY_Escape: dbus_hang_up (c); - //c->_stop = 0; calltree_update_call (history, c, NULL); break; } diff --git a/gnome/src/mainwindow.c b/gnome/src/mainwindow.c index 0c671abbca13d8ef77431bff9c82c86b6efd5284..234767c78f756133e93e98e4932e28388de8c836 100644 --- a/gnome/src/mainwindow.c +++ b/gnome/src/mainwindow.c @@ -131,37 +131,36 @@ main_window_ask_quit () static gboolean on_key_released (GtkWidget *widget, GdkEventKey *event, gpointer user_data UNUSED) { - DEBUG ("MainWindow: On key released: %s", gtk_widget_get_name (widget)); - - if (focus_is_on_searchbar == FALSE) { - if(event->keyval == 65293) { - if(active_calltree == current_calls) { - sflphone_keypad (event->keyval, event->string); - return TRUE; - } - else if(active_calltree == history) { - return FALSE; - } - } - - // If a modifier key is pressed, it's a shortcut, pass along - if (event->state & GDK_CONTROL_MASK || event->state & GDK_MOD1_MASK - || event->keyval == 60 || // < - event->keyval == 62 || // > - event->keyval == 34 || // " - event->keyval == 65289 || // tab - event->keyval == 65293 || // enter - event->keyval == 65361 || // left arrow - event->keyval == 65362 || // up arrow - event->keyval == 65363 || // right arrow - event->keyval == 65364 || // down arrow - event->keyval >= 65470 || // F-keys - event->keyval == 32 // - ) - return FALSE; - else { + if (focus_is_on_searchbar) + return TRUE; + + if(event->keyval == GDK_KEY_Return) { + if(active_calltree == current_calls) { sflphone_keypad (event->keyval, event->string); - } + return TRUE; + } + else if(active_calltree == history) { + return FALSE; + } + } + + // If a modifier key is pressed, it's a shortcut, pass along + if (event->state & GDK_CONTROL_MASK || event->state & GDK_MOD1_MASK || + event->keyval == '<' || + event->keyval == '>' || + event->keyval == '\"' || + event->keyval == GDK_KEY_Tab || + event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_Left || + event->keyval == GDK_KEY_Up || + event->keyval == GDK_KEY_Right || + event->keyval == GDK_KEY_Down || + (event->keyval >= GDK_KEY_F1 && event->keyval <= GDK_KEY_F12)|| + event->keyval == ' ' + ) + return FALSE; + else { + sflphone_keypad (event->keyval, event->string); } return TRUE;