diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index 8f3a4edb7a7913f26a51ea2614fc3f8da96450f1..870cec2d8af4ae2face213fc5b8d47f068b41990 100644
--- a/sflphone-gtk/src/actions.c
+++ b/sflphone-gtk/src/actions.c
@@ -555,10 +555,27 @@ sflphone_new_call()
 void
 sflphone_keypad( guint keyval, gchar * key)
 {
-
 	call_t * c = call_get_selected(current_calls);
-	if(c)
+
+	if((active_calltree != current_calls) || (active_calltree == current_calls && !c))
+  {
+    // 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 */
+        break;
+      default:
+        switch_tab(current_calls);
+        process_dialing(sflphone_new_call(), keyval, key);
+        break;
+    }
+  }
+  else if(c)
 	{
+	  printf("call\n");
 		switch(c->state)
 		{
 			case CALL_STATE_DIALING: // Currently dialing => edit number
@@ -652,23 +669,6 @@ sflphone_keypad( guint keyval, gchar * key)
 				break;
 		}
 	}
-	else
-	{ // 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 */
-				break;
-			default:
-				switch_tab(current_calls);
-				process_dialing(sflphone_new_call(), keyval, key);
-				break;
-		}
-
-
-	}
  }
 
 /*
diff --git a/sflphone-gtk/src/calltree.c b/sflphone-gtk/src/calltree.c
index e61408fae48c1c72dcbd27b3756c452c2d73f0e6..6b2b1c59e1c4496022739c976974d03d73b56c78 100644
--- a/sflphone-gtk/src/calltree.c
+++ b/sflphone-gtk/src/calltree.c
@@ -175,6 +175,7 @@ toggle_current_calls(GtkToggleToolButton *toggle_tool_button UNUSED,
   gtk_widget_hide(history->tree);
   gtk_widget_hide(contacts->tree);
   gtk_widget_show(current_calls->tree);
+  printf("current calls toggle\n");
 
   sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (active_calltree->view));
   g_signal_emit_by_name(sel, "changed");