diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c
index 870cec2d8af4ae2face213fc5b8d47f068b41990..a08180c7a79428cf2c6509d9ce26e17e71816c09 100644
--- a/sflphone-gtk/src/actions.c
+++ b/sflphone-gtk/src/actions.c
@@ -234,7 +234,6 @@ gboolean sflphone_init()
 	  history = calltab_init();
 	  contacts = calltab_init();
 	  if(SHOW_SEARCHBAR)  histfilter = create_filter(GTK_TREE_MODEL(history->store));
-	  contactfilter = create_filter(GTK_TREE_MODEL(contacts->store));
 	  init();
 	  account_list_init ();
     codec_list_init();
diff --git a/sflphone-gtk/src/calltab.h b/sflphone-gtk/src/calltab.h
index 6da6c8ba256f17343235711d1a7fd68c8a47c2f4..7d84696df2fa4f4471455b09859b54ccb75d5a79 100644
--- a/sflphone-gtk/src/calltab.h
+++ b/sflphone-gtk/src/calltab.h
@@ -24,7 +24,6 @@
 #include <gtk/gtk.h>
 
 GtkTreeModel* histfilter;
-GtkTreeModel* contactfilter;
 
 calltab_t* calltab_init();
 
diff --git a/sflphone-gtk/src/calltree.c b/sflphone-gtk/src/calltree.c
index 6b2b1c59e1c4496022739c976974d03d73b56c78..b2b03e21377990c6c778c444ac98a7a88fdc0a67 100644
--- a/sflphone-gtk/src/calltree.c
+++ b/sflphone-gtk/src/calltree.c
@@ -210,12 +210,14 @@ toggle_contacts(GtkToggleToolButton *toggle_tool_button UNUSED,
   GList *i;
   char ext[30];
 
+  printf("EDS : %s\n",gtk_entry_get_text(GTK_ENTRY(filter_entry)));
+
   // Reset previous results
   call_list_reset(contacts);
   reset_call_tree(contacts);
 
   // Do a synchronized search
-  results = search_sync ("j", 50);
+  results = search_sync (gtk_entry_get_text(GTK_ENTRY(filter_entry)), 50);
 
   if(results == NULL)
   {
@@ -253,8 +255,6 @@ toggle_contacts(GtkToggleToolButton *toggle_tool_button UNUSED,
   sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (active_calltree->view));
   g_signal_emit_by_name(sel, "changed");
   toolbar_update_buttons();
-
-  //gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(contactfilter));
 }
 
   static void
@@ -933,6 +933,23 @@ update_call_tree_add (calltab_t* tab, call_t * c)
   toolbar_update_buttons();
 }
 
+
+  void
+refresh_tab(calltab_t* tab)
+{
+  if(tab == contacts)
+  {
+    toggle_contacts(NULL, NULL);
+  }
+  else if (tab == history)
+  {
+    toggle_history(NULL, NULL);
+  }
+  else
+  {
+    toggle_current_calls(NULL, NULL);
+  }
+}
   void
 switch_tab(calltab_t* tab)
 {
diff --git a/sflphone-gtk/src/calltree.h b/sflphone-gtk/src/calltree.h
index d7ec9a210f7038b93068066bca3ce2ac8610c6a8..d548eecaec84bae9bef06d12d8f97bfd93736083 100644
--- a/sflphone-gtk/src/calltree.h
+++ b/sflphone-gtk/src/calltree.h
@@ -34,6 +34,8 @@
 GtkToolItem * historyButton;
 GtkToolItem * contactButton;
 
+GtkWidget * filter_entry;
+
 calltab_t* active_calltree;
 /**
  * Create a new widget calltree
@@ -73,4 +75,6 @@ GtkWidget * create_toolbar();
 
 void switch_tab( calltab_t* tab );
 
+void refresh_tab( calltab_t* tab );
+
 #endif
diff --git a/sflphone-gtk/src/contactlist/Makefile b/sflphone-gtk/src/contactlist/Makefile
index 353e6f35046f24973cc20034ece14247aa487b47..882ff1c350488efefd9b8094916d4b74d7f22d60 100644
--- a/sflphone-gtk/src/contactlist/Makefile
+++ b/sflphone-gtk/src/contactlist/Makefile
@@ -77,7 +77,7 @@ AUTOMAKE = ${SHELL} /home/jbonjean/dev/Savoir.Faire.Linux/sflphone/missing --run
 AWK = gawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2 -g -Wall -O2
+CFLAGS = -g -O2 -g -O2 -DDEBUG -Wall -Wextra
 CPP = gcc -E
 CPPFLAGS = 
 CYGPATH_W = echo
diff --git a/sflphone-gtk/src/historyfilter.c b/sflphone-gtk/src/historyfilter.c
index 2cf7bf1e12ee9e356c8ced21d8abd8fa37aa3cc0..9c5de2ac256f495b0b792ffd91d475b3059c1a65 100644
--- a/sflphone-gtk/src/historyfilter.c
+++ b/sflphone-gtk/src/historyfilter.c
@@ -22,8 +22,6 @@
 #include <historyfilter.h>
 #include <calltree.h>
 
-GtkWidget * filter_entry;
-
 GtkTreeModel*
 create_filter(GtkTreeModel* child)
 {
@@ -58,7 +56,13 @@ is_visible(GtkTreeModel* model, GtkTreeIter* iter, gpointer data UNUSED)
 void
 filter_entry_changed(GtkEntry* entry UNUSED, gchar* arg1 UNUSED, gpointer data UNUSED)
 {
-	switch_tab(history);
+  //printf("%s\n",gtk_entry_get_text(GTK_ENTRY(entry)));
+
+  if(active_calltree == current_calls)
+    switch_tab(contacts);
+  else
+    refresh_tab(active_calltree);
+
 }
 
 void