From e99b4bed512b20e9e0e8ebabae9c7ebc7912cc7a Mon Sep 17 00:00:00 2001
From: Julien Bonjean <julien@bonjean.info>
Date: Mon, 2 Mar 2009 16:16:45 -0500
Subject: [PATCH] Fix keypad use when in history or contact

---
 sflphone-gtk/src/actions.c  | 38 ++++++++++++++++++-------------------
 sflphone-gtk/src/calltree.c |  1 +
 2 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index 8f3a4edb7a..870cec2d8a 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 e61408fae4..6b2b1c59e1 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");
-- 
GitLab