diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index 942cf6734d31aed1445ffb7b26591a5f9ea06b8b..62f492631f423db60ccd12a4414679e03526cfed 100644
--- a/sflphone-gtk/src/actions.c
+++ b/sflphone-gtk/src/actions.c
@@ -210,11 +210,10 @@ sflphone_keypad( guint keyval, gchar * key)
         g_free(c->from);
         c->from = g_strconcat("\"\" <", c->to, ">", NULL);
         screen_set_call(c);
+        update_call_tree();
       }
       break;
     }
-    
-
   }
   else 
   {
@@ -240,7 +239,7 @@ sflphone_keypad( guint keyval, gchar * key)
         c->to = g_strdup(key);
         call_list_add(c);
         screen_set_call(c);
-             
+        update_call_tree();
       }
     }
   }
diff --git a/sflphone-gtk/src/calltree.c b/sflphone-gtk/src/calltree.c
index f2bc69b6831ebd91d8d0d49cc4047e5d8df46762..8191e21d0d903864af74a79195c7949a44638707 100644
--- a/sflphone-gtk/src/calltree.c
+++ b/sflphone-gtk/src/calltree.c
@@ -25,9 +25,69 @@ GtkListStore * store;
 GtkWidget * acceptButton;
 GtkWidget * refuseButton;
 GtkWidget * unholdButton;
+GtkWidget * holdButton;
+GtkWidget * callButton;
+GtkWidget * hangupButton;
+GtkWidget * transfertButton;
 
 call_t * selectedCall;
 
+
+/**
+ * Hold the line
+ */
+static void 
+hold( GtkWidget *widget, gpointer   data )
+{
+  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
+  if(c)
+  {
+    dbus_hold (c);
+  }
+  
+  
+}
+
+/**
+ * Make a call
+ */
+static void 
+place_call( GtkWidget *widget, gpointer   data )
+{
+  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_DIALING);
+  if(c)
+  {
+    sflphone_place_call(c);
+  }
+}
+
+/**
+ * Hang up the line
+ */
+static void 
+hang_up( GtkWidget *widget, gpointer   data )
+{
+  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
+  if(c)
+  {
+    dbus_hang_up(c);
+  }
+}
+
+
+/**
+ * Transfert the line
+ */
+static void 
+transfert( GtkWidget *widget, gpointer   data )
+{
+  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
+  if(c)
+  {
+    dbus_transfert(c,"124");
+  }
+}
+
 /* Call back when the user click on a call in the list */
 static void 
 selected(GtkTreeSelection *sel, GtkTreeModel *model) 
@@ -59,6 +119,28 @@ selected(GtkTreeSelection *sel, GtkTreeModel *model)
       gtk_widget_set_sensitive( GTK_WIDGET(refuseButton),  FALSE);
       gtk_widget_set_sensitive( GTK_WIDGET(unholdButton),  TRUE);
     }
+    else if(selectedCall->state == CALL_STATE_DIALING)
+    {
+      /*gtk_widget_hide( hangupButton );
+      gtk_widget_show( callButton );
+      gtk_widget_set_sensitive( GTK_WIDGET(callButton),       TRUE);
+      gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     FALSE);
+      gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       FALSE);
+      gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);*/
+    }
+    else if (selectedCall->state == CALL_STATE_CURRENT)
+    {
+      //gtk_widget_hide( callButton  );
+      /* Hack : if hangupButton is put on the window in create_screen()
+       * the hbox will request space for 4 buttons making the window larger than needed */
+      //gtk_box_pack_start (GTK_BOX (hbox), hangupButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+      //gtk_box_reorder_child(GTK_BOX (hbox), hangupButton, 0);
+      gtk_widget_show( hangupButton );
+      gtk_widget_set_sensitive( GTK_WIDGET(callButton),       FALSE);
+      gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     TRUE);
+      gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       TRUE);
+      gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  TRUE);
+    }
 	  
 	}
   
@@ -117,7 +199,7 @@ create_call_tree (){
 	gtk_container_set_border_width (GTK_CONTAINER (ret), 0);
 
 	sw = gtk_scrolled_window_new( NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
 
 	gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0);
@@ -129,7 +211,7 @@ create_call_tree (){
 
 
 	view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store));
-
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(view), FALSE);
 	
 	/*g_signal_connect(G_OBJECT(rend), "toggled",
 							 G_CALLBACK(module_toggled), module_store);*/
@@ -184,8 +266,51 @@ create_call_tree (){
   gtk_box_pack_start (GTK_BOX (hbox), unholdButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
   g_signal_connect (G_OBJECT (unholdButton), "clicked",
                     G_CALLBACK (unhold), NULL);
+                    
+  gtk_box_pack_start (GTK_BOX (ret), hbox, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
+  
+  /* 2nd row */     
+  hbox = gtk_hbutton_box_new ();       
+  gtk_button_box_set_spacing ( GTK_BUTTON_BOX(hbox), 10);
+  gtk_button_box_set_layout ( GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_START); 
+
+  callButton = gtk_button_new_with_label ("Call");
+  gtk_widget_set_state( GTK_WIDGET(callButton), GTK_STATE_INSENSITIVE);
+  image = gtk_image_new_from_file( PIXMAPS_DIR "/call.svg");
+  gtk_button_set_image(GTK_BUTTON(callButton), image);
+  //gtk_button_set_image_position( button, GTK_POS_TOP);
+  gtk_box_pack_start (GTK_BOX (hbox), callButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+  g_signal_connect (G_OBJECT (callButton), "clicked",
+                    G_CALLBACK (place_call), NULL);
+
+  hangupButton = gtk_button_new_with_label ("Hang up");
+  gtk_widget_hide( hangupButton );
+  gtk_widget_set_state( GTK_WIDGET(hangupButton), GTK_STATE_INSENSITIVE);
+  gtk_box_pack_end (GTK_BOX (hbox), hangupButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+  image = gtk_image_new_from_file( PIXMAPS_DIR "/hang_up.svg");
+  gtk_button_set_image(GTK_BUTTON(hangupButton), image);
+  //gtk_button_set_image_position( button, GTK_POS_TOP);
+  g_signal_connect (G_OBJECT (hangupButton), "clicked",
+                    G_CALLBACK (hang_up), NULL);
+
+  holdButton = gtk_button_new_with_label ("Hold");
+  gtk_widget_set_state( GTK_WIDGET(holdButton), GTK_STATE_INSENSITIVE);
+  image = gtk_image_new_from_file( PIXMAPS_DIR "/hold.svg");
+  gtk_box_pack_end (GTK_BOX (hbox), holdButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+  gtk_button_set_image(GTK_BUTTON(holdButton), image);
+  g_signal_connect (G_OBJECT (holdButton), "clicked",
+                    G_CALLBACK (hold), NULL);
+
+  transfertButton = gtk_button_new_with_label ("Transfert");
+  gtk_widget_set_state( GTK_WIDGET(transfertButton), GTK_STATE_INSENSITIVE);
+  image = gtk_image_new_from_file( PIXMAPS_DIR "/transfert.svg");
+  gtk_button_set_image(GTK_BUTTON(transfertButton), image);
+  gtk_box_pack_end (GTK_BOX (hbox), transfertButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+  g_signal_connect (G_OBJECT (transfertButton), "clicked",
+                    G_CALLBACK (transfert), NULL);
 
   
+  
   gtk_box_pack_start (GTK_BOX (ret), hbox, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
  
 	gtk_widget_show(ret); 
@@ -205,12 +330,24 @@ update_call_tree ()
 	for( i = 0; i < call_list_get_size(); i++)
 	{
     call_t  * c = call_list_get_nth (i);
-    if (c && c->state != CALL_STATE_CURRENT && c->state != CALL_STATE_DIALING )
+    if (c)
     {
-      gchar * markup = g_markup_printf_escaped("<b>%s</b>\n"
+      gchar * markup;
+      if (c->state == CALL_STATE_CURRENT)
+  		{
+  		  markup = g_markup_printf_escaped("<big><b>%s</b></big>\n"
   						    "%s", 
   						    call_get_name(c), 
   						    call_get_number(c));
+  		}
+  		else 
+  		{
+  		  markup = g_markup_printf_escaped("<b>%s</b>\n"
+  						    "%s", 
+  						    call_get_name(c), 
+  						    call_get_number(c));
+  		}
+  		
   		gtk_list_store_append (store, &iter);
   		
   		if (c->state == CALL_STATE_HOLD)
@@ -221,6 +358,14 @@ update_call_tree ()
   		{
   		  pixbuf = gdk_pixbuf_new_from_file(PIXMAPS_DIR "/ring.svg", NULL);
   		}
+  	  else if (c->state == CALL_STATE_CURRENT)
+  		{
+  		  pixbuf = gdk_pixbuf_new_from_file(PIXMAPS_DIR "/current.svg", NULL);
+  		}
+  	  else if (c->state == CALL_STATE_DIALING)
+  		{
+  		  pixbuf = gdk_pixbuf_new_from_file(PIXMAPS_DIR "/dial.svg", NULL);
+  		}
   	  //Resize it
       if(pixbuf)
       {
@@ -244,8 +389,12 @@ update_call_tree ()
     
   } 
   
-  gtk_widget_set_sensitive( GTK_WIDGET(acceptButton),  FALSE);
-  gtk_widget_set_sensitive( GTK_WIDGET(refuseButton),  FALSE);
-  gtk_widget_set_sensitive( GTK_WIDGET(unholdButton),  FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(acceptButton),     FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(refuseButton),     FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(unholdButton),     FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(callButton),       FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       FALSE);
+  //gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);
 	//return row_ref;
 }
diff --git a/sflphone-gtk/src/screen.c b/sflphone-gtk/src/screen.c
index fd7138766a27c2041a9383473f83683772d52166..592e093042ef6b2b1155d092e66e05364080568f 100644
--- a/sflphone-gtk/src/screen.c
+++ b/sflphone-gtk/src/screen.c
@@ -22,67 +22,9 @@
 
 
 GtkWidget * label;
-GtkWidget * callButton;
-GtkWidget * hangupButton;
 GtkWidget * hbox;
-GtkWidget * holdButton;
-GtkWidget * transfertButton;
 
 
-/**
- * Hold the line
- */
-static void 
-hold( GtkWidget *widget, gpointer   data )
-{
-  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
-  if(c)
-  {
-    dbus_hold (c);
-  }
-  
-  
-}
-
-/**
- * Make a call
- */
-static void 
-place_call( GtkWidget *widget, gpointer   data )
-{
-  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_DIALING);
-  if(c)
-  {
-    sflphone_place_call(c);
-  }
-}
-
-/**
- * Hang up the line
- */
-static void 
-hang_up( GtkWidget *widget, gpointer   data )
-{
-  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
-  if(c)
-  {
-    dbus_hang_up(c);
-  }
-}
-
-
-/**
- * Transfert the line
- */
-static void 
-transfert( GtkWidget *widget, gpointer   data )
-{
-  call_t * c = (call_t*) call_list_get_by_state (CALL_STATE_CURRENT);
-  if(c)
-  {
-    dbus_transfert(c,"124");
-  }
-}
 
 GtkWidget * 
 create_screen()
@@ -113,51 +55,7 @@ create_screen()
   
   gtk_box_pack_start (GTK_BOX (subvbox), sw, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
     
-  /* First row */     
-  hbox = gtk_hbutton_box_new ();       
-  gtk_button_box_set_spacing ( GTK_BUTTON_BOX(hbox), 10);
-  gtk_button_box_set_layout ( GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_START); 
-
-  /* Creates a new button with the label "Call". */
-  callButton = gtk_button_new_with_label ("Call");
-  gtk_widget_set_state( GTK_WIDGET(callButton), GTK_STATE_INSENSITIVE);
-  image = gtk_image_new_from_file( PIXMAPS_DIR "/call.svg");
-  gtk_button_set_image(GTK_BUTTON(callButton), image);
-  //gtk_button_set_image_position( button, GTK_POS_TOP);
-  gtk_box_pack_start (GTK_BOX (hbox), callButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
-  g_signal_connect (G_OBJECT (callButton), "clicked",
-                    G_CALLBACK (place_call), NULL);
-
-  /* Creates a new button with the label "Hang up". */
-  hangupButton = gtk_button_new_with_label ("Hang up");
-  gtk_widget_hide( hangupButton );
-  gtk_widget_set_state( GTK_WIDGET(hangupButton), GTK_STATE_INSENSITIVE);
-  image = gtk_image_new_from_file( PIXMAPS_DIR "/hang_up.svg");
-  gtk_button_set_image(GTK_BUTTON(hangupButton), image);
-  //gtk_button_set_image_position( button, GTK_POS_TOP);
-  g_signal_connect (G_OBJECT (hangupButton), "clicked",
-                    G_CALLBACK (hang_up), NULL);
-
-  holdButton = gtk_button_new_with_label ("Hold");
-  gtk_widget_set_state( GTK_WIDGET(holdButton), GTK_STATE_INSENSITIVE);
-  image = gtk_image_new_from_file( PIXMAPS_DIR "/hold.svg");
-  gtk_box_pack_end (GTK_BOX (hbox), holdButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
-  gtk_button_set_image(GTK_BUTTON(holdButton), image);
-  g_signal_connect (G_OBJECT (holdButton), "clicked",
-                    G_CALLBACK (hold), NULL);
-
-  transfertButton = gtk_button_new_with_label ("Transfert");
-  gtk_widget_set_state( GTK_WIDGET(transfertButton), GTK_STATE_INSENSITIVE);
-  image = gtk_image_new_from_file( PIXMAPS_DIR "/transfert.svg");
-  gtk_button_set_image(GTK_BUTTON(transfertButton), image);
-  gtk_box_pack_end (GTK_BOX (hbox), transfertButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
-  g_signal_connect (G_OBJECT (transfertButton), "clicked",
-                    G_CALLBACK (transfert), NULL);
-
   
-  /* Pack the vbox (box) which now contains all our widgets, into the
-    * main window. */
-  gtk_box_pack_start (GTK_BOX (subvbox), hbox, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
 
   screen_clear();
   
@@ -170,12 +68,12 @@ screen_clear()
 {
   gtk_label_set_markup(GTK_LABEL(label), "<big><b>Welcome to SFLPhone</b></big>\n");
   
-  gtk_widget_hide( hangupButton );
+  /*gtk_widget_hide( hangupButton );
   gtk_widget_show( callButton );
   gtk_widget_set_sensitive( GTK_WIDGET(callButton),       FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     FALSE);
   gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       FALSE);
-  gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);
+  gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);*/
 }
 
 void 
@@ -187,25 +85,25 @@ screen_set_call(const call_t * c)
   
   if(c->state == CALL_STATE_DIALING)
   {
-    gtk_widget_hide( hangupButton );
+    /*gtk_widget_hide( hangupButton );
     gtk_widget_show( callButton );
     gtk_widget_set_sensitive( GTK_WIDGET(callButton),       TRUE);
     gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       FALSE);
-    gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);
+    gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  FALSE);*/
   }
   else if (c->state == CALL_STATE_CURRENT)
   {
-    gtk_widget_hide( callButton  );
+    //gtk_widget_hide( callButton  );
     /* Hack : if hangupButton is put on the window in create_screen()
      * the hbox will request space for 4 buttons making the window larger than needed */
-    gtk_box_pack_start (GTK_BOX (hbox), hangupButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
-    gtk_box_reorder_child(GTK_BOX (hbox), hangupButton, 0);
+    //gtk_box_pack_start (GTK_BOX (hbox), hangupButton, TRUE /*expand*/, TRUE /*fill*/, 10 /*padding*/);
+    /*gtk_box_reorder_child(GTK_BOX (hbox), hangupButton, 0);
     gtk_widget_show( hangupButton );
     gtk_widget_set_sensitive( GTK_WIDGET(callButton),       FALSE);
     gtk_widget_set_sensitive( GTK_WIDGET(hangupButton),     TRUE);
     gtk_widget_set_sensitive( GTK_WIDGET(holdButton),       TRUE);
-    gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  TRUE);
+    gtk_widget_set_sensitive( GTK_WIDGET(transfertButton),  TRUE);*/
   }
   
 }