diff --git a/gnome/configure.ac b/gnome/configure.ac
index 575d369ce0796a2387f5d037d62d7b27066f4dce..d0425638cb9f7ae8bf46f0e8bc1c1e03beccb4f8 100644
--- a/gnome/configure.ac
+++ b/gnome/configure.ac
@@ -25,13 +25,15 @@ AC_DEFINE_UNQUOTED(SFLPHONE_UIDIR_UNINSTALLED, "`pwd`/src/",
   [path to uninstalled SFLphone UI dir])
 
 PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1 >= 0.75, HAVE_DBUS_G_PROXY_SET_DEFAULT_TIMEOUT=true, HAVE_DBUS_G_PROXY_SET_DEFAULT_TIMEOUT=false);
-PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.2], [AC_DEFINE([LIBNOTIFY_VERSION_0_7_2],[],[Using libnotify-0.7.2 or higher])],[PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.4])])
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.20)
+PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.2])
+if echo "$LIBNOTIFY_LIBS" | grep -q gtk+-x11-2.0; then
+    AC_MSG_ERROR([Your libnotify is linked with GTK+2 ! Install libnotify4-dev])
+    exit 1
+fi
+PKG_CHECK_MODULES(GTK, gtk+-3.0)
+PKG_CHECK_MODULES(GCONF, gconf-2.0)
 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.24)
-PKG_CHECK_MODULES(WEBKIT, webkit-1.0)
-PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0)
-PKG_CHECK_MODULES(GNOMEDOCUTILS, gnome-doc-utils)
-
+PKG_CHECK_MODULES(WEBKIT, webkitgtk-3.0)
 
 # This macro is defined in check.m4 and tests if check.h and
 # libcheck.a are installed in your system. It sets CHECK_CFLAGS and
diff --git a/gnome/src/Makefile.am b/gnome/src/Makefile.am
index 3348f1b2d72d09e41986f50577a8269886b67c75..bded0118565e9d790f6c94e3dc8edb98f6600023 100644
--- a/gnome/src/Makefile.am
+++ b/gnome/src/Makefile.am
@@ -26,8 +26,8 @@ sflphone_client_gnome_SOURCES = \
   statusicon.c \
   codeclist.c \
   reqaccount.c \
-  shortcuts.c  \
-  eel-gconf-extensions.c
+  eel-gconf-extensions.c \
+  shortcuts.c
 
 noinst_HEADERS =  actions.h sflnotify.h mainwindow.h dialpad.h codeclist.h \
                   reqaccount.h sflphone_const.h uimanager.h \
@@ -35,12 +35,12 @@ noinst_HEADERS =  actions.h sflnotify.h mainwindow.h dialpad.h codeclist.h \
                   shortcuts.h eel-gconf-extensions.h logger.h imwindow.h unused.h
 
 sflphone_client_gnome_LDADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBS) $(NOTIFY_LIBS) $(SFLPHONEGTK_LIBS) $(X11_LIBS) \
-				$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) $(LIBGNOMEUI_LIBS) $(GNOMEDOCUTILS_LIBS) $(LD_LIBS)
+							  $(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) $(LD_LIBS) $(GCONF_LIBS)
 
-sflphone_client_gnome_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) $(NOTIFY_CFLAGS) $(SFLPHONEGTK_CFLAGS) $(X11_CFLAGS) \
-                                $(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) $(GNOMEDOCUTILS_CFLAGS)
+sflphone_client_gnome_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) $(NOTIFY_CFLAGS) $(GTK_CFLAGS) $(X11_CFLAGS) \
+                               $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(GCONF_CFLAGS)
 
-# add symbolic link	     
+# add symbolic link
 install-exec-local:
 	echo $(prefix); echo $(bindir); echo $(datadir); echo $(libdir)
 	cd $(DESTDIR)$(bindir); ln -sf sflphone-client-gnome sflphone 
diff --git a/gnome/src/config/Makefile.am b/gnome/src/config/Makefile.am
index cb21b3a015d69fc503774da9cfe8fca71bd0b8f6..7fc8210f5fe8b3b34c7a512923f1835037dcdf6f 100644
--- a/gnome/src/config/Makefile.am
+++ b/gnome/src/config/Makefile.am
@@ -26,14 +26,11 @@ libconfig_la_SOURCES = \
   utils.h \
   zrtpadvanceddialog.h
 
-libconfig_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) \
-			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) $(LIBGNOMEUI_LDFLAGS) \
-			$(GNOMEDOCUTILS_LDFLAGS)
+libconfig_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) $(GCONF_LDFLAGS) \
+					   $(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS)
 
-libconfig_la_LIBADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBSI) \
-			$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) $(LIBGNOMEUI_LIBS) \
-			$(GNOMEDOCUTILS_LIBS)
+libconfig_la_LIBADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBS) $(GCONF_LIBS) \
+					  $(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS)
 
-libconfig_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
-			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-			$(GNOMEDOCUTILS_CFLAGS)
+libconfig_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) $(GCONF_CFLAGS) \
+					  $(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS)
diff --git a/gnome/src/config/accountconfigdialog.c b/gnome/src/config/accountconfigdialog.c
index 2e5f08d6665d60eec4dc813ac87ea52843fa688e..87d6fb9a91987525c2670dd91db56746e8ce7cc3 100644
--- a/gnome/src/config/accountconfigdialog.c
+++ b/gnome/src/config/accountconfigdialog.c
@@ -47,7 +47,6 @@
 #include "accountconfigdialog.h"
 #include "zrtpadvanceddialog.h"
 #include "tlsadvanceddialog.h"
-#include "audioconf.h"
 #include "dbus/dbus.h"
 #include "utils.h"
 #include "unused.h"
@@ -130,7 +129,7 @@ static void show_password_cb(GtkWidget *widget UNUSED, gpointer data)
 /* Signal to protocolComboBox 'changed' */
 void change_protocol_cb(account_t *currentAccount UNUSED)
 {
-    gchar *protocol = gtk_combo_box_get_active_text(GTK_COMBO_BOX(protocolComboBox));
+    gchar *protocol = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(protocolComboBox));
 
     // Only if tabs are not NULL
     if (security_tab && advanced_tab) {
@@ -202,7 +201,6 @@ static void update_credential_cb(GtkWidget *widget, gpointer data UNUSED)
 static GtkWidget* create_basic_tab(account_t *currentAccount)
 {
     g_assert(currentAccount);
-    DEBUG("Config: Create basic account tab");
 
     // Load from SIP/IAX/Unknown ?
     gchar *curAccountType = g_hash_table_lookup(currentAccount->properties, ACCOUNT_TYPE);
@@ -258,12 +256,12 @@ static GtkWidget* create_basic_tab(account_t *currentAccount)
     label = gtk_label_new_with_mnemonic(_("_Protocol"));
     gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    protocolComboBox = gtk_combo_box_new_text();
+    protocolComboBox = gtk_combo_box_text_new();
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), protocolComboBox);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(protocolComboBox), "SIP");
+    gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(protocolComboBox), "SIP");
 
     if (dbus_is_iax2_enabled())
-        gtk_combo_box_append_text(GTK_COMBO_BOX(protocolComboBox), "IAX");
+        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(protocolComboBox), "IAX");
 
     if (g_strcmp0(curAccountType, "SIP") == 0)
         gtk_combo_box_set_active(GTK_COMBO_BOX(protocolComboBox),0);
@@ -272,7 +270,7 @@ static GtkWidget* create_basic_tab(account_t *currentAccount)
     else {
         DEBUG("Config: Error: Account protocol not valid");
         /* Should never come here, add debug message. */
-        gtk_combo_box_append_text(GTK_COMBO_BOX(protocolComboBox), _("Unknown"));
+        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(protocolComboBox), _("Unknown"));
         gtk_combo_box_set_active(GTK_COMBO_BOX(protocolComboBox), 2);
     }
 
@@ -459,7 +457,7 @@ static void editing_started_cb(GtkCellRenderer *cell UNUSED, GtkCellEditable * e
 
 static void show_advanced_zrtp_options_cb(GtkWidget *widget UNUSED, gpointer data)
 {
-    gchar *proto = gtk_combo_box_get_active_text(GTK_COMBO_BOX(keyExchangeCombo));
+    gchar *proto = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo));
 
     if (g_strcasecmp(proto, "ZRTP") == 0)
         show_advanced_zrtp_options((GHashTable *) data);
@@ -477,7 +475,7 @@ static void show_advanced_tls_options_cb(GtkWidget *widget UNUSED, gpointer data
 
 static void key_exchange_changed_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
 {
-    gchar *active_text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(keyExchangeCombo));
+    gchar *active_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo));
     DEBUG("Key exchange changed %s", active_text);
 
     gboolean set_sensitive = FALSE;
@@ -569,7 +567,7 @@ get_interface_addr_from_name(const gchar * const iface_name)
 static void local_interface_changed_cb(GtkWidget * widget UNUSED, gpointer data UNUSED)
 {
     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sameAsLocalRadioButton))) {
-        gchar *local_iface_name = gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo));
+        gchar *local_iface_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(localAddressCombo));
         gchar *local_iface_addr = get_interface_addr_from_name(local_iface_name);
 
         gtk_entry_set_text(GTK_ENTRY(localAddressEntry), local_iface_addr);
@@ -631,7 +629,7 @@ static void use_stun_cb(GtkWidget *widget, gpointer data UNUSED)
 static void same_as_local_cb(GtkWidget * widget, gpointer data UNUSED)
 {
     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
-        gchar *local_interface = gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo));
+        gchar *local_interface = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(localAddressCombo));
         gchar *local_address = dbus_get_address_from_interface_name(local_interface);
 
         gtk_entry_set_text(GTK_ENTRY(publishedAddressEntry), local_address);
@@ -743,21 +741,18 @@ GtkWidget* create_security_widget(account_t *a)
     if (a) {
         curKeyExchange = g_hash_table_lookup(a->properties, ACCOUNT_KEY_EXCHANGE);
 
-        if (curKeyExchange == NULL) {
+        if (curKeyExchange == NULL)
             curKeyExchange = "none";
-        }
 
         curSRTPEnabled = g_hash_table_lookup(a->properties, ACCOUNT_SRTP_ENABLED);
 
-        if (curSRTPEnabled == NULL) {
+        if (curSRTPEnabled == NULL)
             curSRTPEnabled = "false";
-        }
 
         curTLSEnabled = g_hash_table_lookup(a->properties, TLS_ENABLE);
 
-        if (curTLSEnabled == NULL) {
+        if (curTLSEnabled == NULL)
             curTLSEnabled = "false";
-        }
     }
 
     gnome_main_section_new_with_table(_("Security"), &frame, &table, 2, 3);
@@ -779,11 +774,11 @@ GtkWidget* create_security_widget(account_t *a)
     /* ZRTP subsection */
     label = gtk_label_new_with_mnemonic(_("SRTP key exchange"));
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-    keyExchangeCombo = gtk_combo_box_new_text();
+    keyExchangeCombo = gtk_combo_box_text_new();
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), keyExchangeCombo);
-    gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), "ZRTP");
-    gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), "SDES");
-    gtk_combo_box_append_text(GTK_COMBO_BOX(keyExchangeCombo), _("Disabled"));
+    gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo), "ZRTP");
+    gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo), "SDES");
+    gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo), _("Disabled"));
 
     advancedZrtpButton = gtk_button_new_from_stock(GTK_STOCK_PREFERENCES);
     g_signal_connect(G_OBJECT(advancedZrtpButton), "clicked", G_CALLBACK(show_advanced_zrtp_options_cb),a->properties);
@@ -792,11 +787,11 @@ GtkWidget* create_security_widget(account_t *a)
         gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo), 2);
         gtk_widget_set_sensitive(advancedZrtpButton, FALSE);
     } else {
-        if (g_strcmp0(curKeyExchange, ZRTP) == 0) {
+        if (g_strcmp0(curKeyExchange, ZRTP) == 0)
             gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo),0);
-        } else if (g_strcmp0(curKeyExchange, SDES) == 0) {
+        else if (g_strcmp0(curKeyExchange, SDES) == 0)
             gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo),1);
-        } else {
+        else {
             gtk_combo_box_set_active(GTK_COMBO_BOX(keyExchangeCombo), 2);
             gtk_widget_set_sensitive(advancedZrtpButton, FALSE);
         }
@@ -888,62 +883,32 @@ GtkWidget* create_network(account_t *a)
      * Retreive the list of IP interface from the
      * the daemon and build the combo box.
      */
+    localAddressCombo = gtk_combo_box_text_new();
 
-    GtkListStore * ipInterfaceListStore;
-    GtkTreeIter iter;
 
-    ipInterfaceListStore =  gtk_list_store_new(1, G_TYPE_STRING);
     label = gtk_label_new_with_mnemonic(_("Local address"));
     gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 
-    GtkTreeIter current_local_iface_iter = iter;
-    gchar ** iface_list = NULL;
-    // iface_list =(gchar**) dbus_get_all_ip_interface();
-    iface_list =(gchar**) dbus_get_all_ip_interface_by_name();
-    gchar ** iface = NULL;
-
-    // flag to determine if local_address is found
-    gboolean iface_found = FALSE;
-
-    if (iface_list != NULL) {
-        // fill the iterface combo box
-        for (iface = iface_list; *iface; iface++) {
-            DEBUG("Interface %s", *iface);
-            gtk_list_store_append(ipInterfaceListStore, &iter);
-            gtk_list_store_set(ipInterfaceListStore, &iter, 0, *iface, -1);
-
-            // set the current local address
-            if (!iface_found &&(g_strcmp0(*iface, local_interface) == 0)) {
-                DEBUG("Setting active local address combo box");
-                current_local_iface_iter = iter;
-                iface_found = TRUE;
-            }
-        }
+    gchar **iface_list = dbus_get_all_ip_interface_by_name();
 
-        if (!iface_found) {
-            DEBUG("Did not find local ip address, take fisrt in the list");
-            gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ipInterfaceListStore), &current_local_iface_iter);
-        }
+    int idx = 0;
+    for (gchar **iface = iface_list; iface && *iface; iface++, idx++) {
+
+        gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(localAddressCombo), NULL, *iface);
+        if (g_strcmp0(*iface, local_interface) == 0)
+            gtk_combo_box_set_active(GTK_COMBO_BOX(localAddressCombo), idx);
     }
+    if (!local_interface)
+        gtk_combo_box_set_active(GTK_COMBO_BOX(localAddressCombo), 0);
+
 
-    localAddressCombo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(ipInterfaceListStore));
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), localAddressCombo);
     gtk_table_attach(GTK_TABLE(table), localAddressCombo, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-    g_object_unref(G_OBJECT(ipInterfaceListStore));
-
-
-    GtkCellRenderer * ipInterfaceCellRenderer;
-    ipInterfaceCellRenderer = gtk_cell_renderer_text_new();
-
-    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(localAddressCombo), ipInterfaceCellRenderer, TRUE);
-    gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(localAddressCombo), ipInterfaceCellRenderer, "text", 0, NULL);
-    gtk_combo_box_set_active_iter(GTK_COMBO_BOX(localAddressCombo), &current_local_iface_iter);
-
 
     // Fill the text entry with the ip address of local interface selected
     localAddressEntry = gtk_entry_new();
-    gchar *local_iface_name = gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo));
+    gchar *local_iface_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(localAddressCombo));
     gchar *local_iface_addr = get_interface_addr_from_name(local_iface_name);
     g_free(local_iface_name);
     gtk_entry_set_text(GTK_ENTRY(localAddressEntry), local_iface_addr);
@@ -1065,27 +1030,27 @@ GtkWidget* create_advanced_tab(account_t *a)
     // Build the advanced tab, to appear on the account configuration panel
     DEBUG("Config: Build advanced tab");
 
-    GtkWidget *ret, *frame;
+    GtkWidget *vbox, *frame;
 
-    ret = gtk_vbox_new(FALSE, 10);
-    gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
+    vbox = gtk_vbox_new(FALSE, 10);
+    gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
 
     frame = create_registration_expire(a);
-    gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
 
     frame = create_network(a);
-    gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
 
     frame = create_published_address(a);
-    gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
 
-    gtk_widget_show_all(ret);
+    gtk_widget_show_all(vbox);
 
     use_stun_cb(useStunCheckBox, NULL);
 
     set_published_addr_manually_cb(publishedAddrRadioButton, NULL);
 
-    return ret;
+    return vbox;
 }
 
 void ringtone_enabled(GtkWidget *widget UNUSED, gpointer data, const gchar *accountID UNUSED)
@@ -1160,13 +1125,13 @@ static GtkWidget* create_audiocodecs_configuration(account_t *currentAccount)
     gtk_widget_set_sensitive(fileChooser, ringtoneEnabled);
 
     GtkFileFilter *filter = gtk_file_filter_new();
-    gtk_file_filter_set_name(filter , _("Audio Files"));
-    gtk_file_filter_add_pattern(filter , "*.wav");
-    gtk_file_filter_add_pattern(filter , "*.ul");
-    gtk_file_filter_add_pattern(filter , "*.au");
+    gtk_file_filter_set_name(filter, _("Audio Files"));
+    gtk_file_filter_add_pattern(filter, "*.wav");
+    gtk_file_filter_add_pattern(filter, "*.ul");
+    gtk_file_filter_add_pattern(filter, "*.au");
+
     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fileChooser) , filter);
-    gtk_table_attach(GTK_TABLE(table), fileChooser, 0, 1, 1, 2, GTK_EXPAND |
-                     GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+    gtk_table_attach(GTK_TABLE(table), fileChooser, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
     gtk_widget_show_all(vbox);
 
@@ -1250,7 +1215,7 @@ void show_account_window(account_t * currentAccount)
     gchar *currentProtocol;
 
     if (protocolComboBox)
-        currentProtocol = gtk_combo_box_get_active_text(GTK_COMBO_BOX(protocolComboBox));
+        currentProtocol = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(protocolComboBox));
     else
         currentProtocol = g_strdup("SIP");
 
@@ -1289,7 +1254,7 @@ void show_account_window(account_t * currentAccount)
     gchar *proto;
 
     if (protocolComboBox)
-        proto = gtk_combo_box_get_active_text(GTK_COMBO_BOX(protocolComboBox));
+        proto = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(protocolComboBox));
     else
         proto = g_strdup("SIP");
 
@@ -1365,7 +1330,7 @@ void show_account_window(account_t * currentAccount)
                 g_hash_table_replace(currentAccount->properties,
                                      g_strdup(PUBLISHED_PORT),
                                      g_strdup((gchar *) gtk_entry_get_text(GTK_ENTRY(localPortSpinBox))));
-                gchar *local_interface = gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo));
+                gchar *local_interface = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(localAddressCombo));
 
                 gchar *published_address = dbus_get_address_from_interface_name(local_interface);
                 g_free(local_interface);
@@ -1384,7 +1349,7 @@ void show_account_window(account_t * currentAccount)
             g_hash_table_replace(currentAccount->properties, g_strdup(ACCOUNT_DTMF_TYPE), g_strdup(SIPINFO));
         }
 
-        gchar* keyExchange = gtk_combo_box_get_active_text(GTK_COMBO_BOX(keyExchangeCombo));
+        gchar* keyExchange = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(keyExchangeCombo));
 
         if (g_strcasecmp(keyExchange, "ZRTP") == 0) {
             g_hash_table_replace(currentAccount->properties, g_strdup(ACCOUNT_SRTP_ENABLED), g_strdup("true"));
@@ -1413,7 +1378,7 @@ void show_account_window(account_t * currentAccount)
 
         g_hash_table_replace(currentAccount->properties,
                              g_strdup(LOCAL_INTERFACE),
-                             gtk_combo_box_get_active_text(GTK_COMBO_BOX(localAddressCombo)));
+                             gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(localAddressCombo)));
 
         g_hash_table_replace(currentAccount->properties,
                              g_strdup(LOCAL_PORT),
diff --git a/gnome/src/config/accountlistconfigdialog.c b/gnome/src/config/accountlistconfigdialog.c
index 47d7aa86b74ae46c3fe9afd225a4dc172389de6f..06a04e7c6af39008d61dbbf34552cc2768e02156 100644
--- a/gnome/src/config/accountlistconfigdialog.c
+++ b/gnome/src/config/accountlistconfigdialog.c
@@ -39,7 +39,6 @@
 #include "unused.h"
 #include "logger.h"
 #include <string.h>
-#include <libgnome/gnome-help.h>
 
 static const int CONTEXT_ID_REGISTRATION = 0;
 
@@ -367,12 +366,9 @@ help_contents_cb(GtkWidget * widget UNUSED,
                  gpointer data UNUSED)
 {
     GError *error = NULL;
-
-    gnome_help_display("sflphone.xml", "accounts", &error);
-
+    gtk_show_uri(NULL, "ghelp:sflphone?accounts", GDK_CURRENT_TIME, &error);
     if (error != NULL) {
         g_warning("%s", error->message);
-
         g_error_free(error);
     }
 }
@@ -603,10 +599,8 @@ show_account_list_config_dialog(void)
 
     /* Status bar for the account list */
     status_bar = gtk_statusbar_new();
-    gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(status_bar), FALSE);
-    gtk_widget_show(status_bar);
-    gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(accountListDialog)),
-                       status_bar, TRUE, TRUE, 0);
+    gtk_widget_show (status_bar);
+    gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area(accountListDialog)), status_bar, TRUE, TRUE, 0);
 
     int number_accounts = account_list_get_registered_accounts();
 
diff --git a/gnome/src/config/audioconf.c b/gnome/src/config/audioconf.c
index 77fe694fde4f44fe82e6d4a89fa58402bbd62292..9fe1a769825d9bafc209b0a9e466f86e8ae86aff 100644
--- a/gnome/src/config/audioconf.c
+++ b/gnome/src/config/audioconf.c
@@ -761,7 +761,6 @@ static void record_path_changed(GtkFileChooser *chooser , GtkLabel *label UNUSED
 {
     gchar* path;
     path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
-    DEBUG("path2 %s", path);
     dbus_set_record_path(path);
 }
 
diff --git a/gnome/src/config/preferencesdialog.c b/gnome/src/config/preferencesdialog.c
index 52393533ef1c7e34efba7c76b14b9c2ba09fb930..16f46bac0878beadd6ffb488a7b5c4bf69c6fb5a 100644
--- a/gnome/src/config/preferencesdialog.c
+++ b/gnome/src/config/preferencesdialog.c
@@ -36,6 +36,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <assert.h>
+
 #include "eel-gconf-extensions.h"
 #include "dbus.h"
 #include "logger.h"
@@ -44,7 +46,6 @@
 #include "preferencesdialog.h"
 #include "addressbook-config.h"
 #include "shortcuts-config.h"
-#include "audioconf.h"
 #include "hooks-config.h"
 #include "audioconf.h"
 #include "uimanager.h"
@@ -54,24 +55,16 @@
 /**
  * Local variables
  */
-gboolean accDialogOpen = FALSE;
-gboolean dialogOpen = FALSE;
-gboolean ringtoneEnabled = TRUE;
+static gboolean dialogOpen = FALSE;
 
+static GtkWidget * history_value;
 
-GtkWidget * status;
-GtkWidget * history_value;
+static GtkWidget *starthidden;
+static GtkWidget *popupwindow;
+static GtkWidget *neverpopupwindow;
 
-GtkWidget *starthidden;
-GtkWidget *popupwindow;
-GtkWidget *neverpopupwindow;
-
-GtkWidget *treeView;
-GtkWidget *iconview;
-GtkCellRenderer *renderer;
-GtkTreeViewColumn *column;
-GtkTreeSelection *selection;
-GtkWidget * notebook;
+static GtkWidget *iconview;
+static GtkWidget * notebook;
 
 
 enum {
@@ -80,12 +73,6 @@ enum {
     PAGE_NUMBER
 };
 
-typedef struct {
-    gchar* icon_descr;
-    gchar* icon_name;
-    gint page_number;
-} browser_t;
-
 // history preference parameters
 static int history_limit;
 static gboolean history_enabled = TRUE;
@@ -105,9 +92,8 @@ set_popup_mode(GtkWidget *widget, gpointer *userdata UNUSED)
 {
     gboolean currentstate = eel_gconf_get_integer(POPUP_ON_CALL);
 
-    if (currentstate || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+    if (currentstate || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
         eel_gconf_set_integer(POPUP_ON_CALL, !currentstate);
-    }
 }
 
 void
@@ -137,7 +123,6 @@ static void
 instant_messaging_enabled_cb(GtkWidget *widget)
 {
     instant_messaging_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-
     eel_gconf_set_integer(INSTANT_MESSAGING_ENABLED, !eel_gconf_get_integer(INSTANT_MESSAGING_ENABLED));
 }
 
@@ -167,7 +152,6 @@ void showstatusicon_cb(GtkWidget *widget, gpointer data UNUSED)
 GtkWidget*
 create_general_settings()
 {
-
     GtkWidget *ret, *notifAll, *frame, *checkBoxWidget, *label, *table, *showstatusicon;
     gboolean statusicon;
 
@@ -285,10 +269,8 @@ create_general_settings()
 void
 save_configuration_parameters(void)
 {
-    if (addrbook) {
-        // Address book config
+    if (addrbook)
         addressbook_config_save_parameters();
-    }
 
     hooks_save_parameters();
 
@@ -308,14 +290,12 @@ void
 instant_messaging_load_configuration()
 {
     instant_messaging_enabled = eel_gconf_get_integer(INSTANT_MESSAGING_ENABLED);
-
 }
 
 
 void
 selection_changed_cb(GtkIconView *view, gpointer user_data UNUSED)
 {
-
     GtkTreeModel *model;
     GtkTreeIter iter;
     GList *list;
@@ -338,6 +318,53 @@ selection_changed_cb(GtkIconView *view, gpointer user_data UNUSED)
     g_list_free(list);
 }
 
+/*
+ * Get an 48x48 icon from the default theme or fallback to an application icon.
+ */
+static GdkPixbuf *get_icon(const gchar *name, GtkWidget *widget)
+{
+    GtkIconTheme *theme = gtk_icon_theme_get_default();
+    GdkPixbuf *pixbuf = gtk_icon_theme_load_icon(theme, name, 48, 0, NULL);
+    if (!pixbuf)
+        pixbuf = gtk_widget_render_icon(widget, name, GTK_ICON_SIZE_DIALOG, NULL);
+
+    return pixbuf;
+}
+
+static GtkTreeModel* create_model(GtkWidget *widget)
+{
+    static const struct {
+        gchar* icon_descr;
+        gchar* icon_name;
+        gint page_number;
+    } browser_entries_full[] = {
+        {"General", GTK_STOCK_PREFERENCES, 0},
+        {"Audio", GTK_STOCK_AUDIO_CARD, 1},
+        {"Hooks", "applications-development", 2},
+        {"Shortcuts", "preferences-desktop-keyboard", 3},
+        {"Address Book", GTK_STOCK_ADDRESSBOOK, 4},
+    };
+    GdkPixbuf *pixbuf;
+    GtkTreeIter iter;
+    gint i, nb_entries;
+
+    GtkListStore *store = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
+    nb_entries = sizeof(browser_entries_full) / sizeof(browser_entries_full[0]);
+
+    for (i = 0; i < nb_entries; i++) {
+        gtk_list_store_append (store, &iter);
+        pixbuf = get_icon(browser_entries_full[i].icon_name, widget);
+        gtk_list_store_set(store, &iter,
+                           PIXBUF_COL, pixbuf,
+                           TEXT_COL, _(browser_entries_full[i].icon_descr),
+                           PAGE_NUMBER, browser_entries_full[i].page_number,
+                           -1);
+        if (pixbuf)
+            gdk_pixbuf_unref(pixbuf);
+    }
+
+    return GTK_TREE_MODEL(store);
+}
 
 
 /**
@@ -346,35 +373,30 @@ selection_changed_cb(GtkIconView *view, gpointer user_data UNUSED)
 guint
 show_preferences_dialog()
 {
-    GtkDialog * dialog;
-    GtkWidget * hbox;
-    GtkWidget * tab;
-    guint result;
-
     dialogOpen = TRUE;
-
-    dialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("Preferences"),
-                        GTK_WINDOW(get_main_window()),
-                        GTK_DIALOG_DESTROY_WITH_PARENT,
-                        GTK_STOCK_CLOSE,
-                        GTK_RESPONSE_ACCEPT,
-                        NULL));
+    GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("Preferences"),
+                                   GTK_WINDOW(get_main_window()),
+                                   GTK_DIALOG_DESTROY_WITH_PARENT,
+                                   GTK_STOCK_CLOSE,
+                                   GTK_RESPONSE_ACCEPT,
+                                   NULL));
 
     // Set window properties
     gtk_window_set_default_size(GTK_WINDOW(dialog), 600, 400);
     gtk_container_set_border_width(GTK_CONTAINER(dialog), 0);
 
-    hbox = gtk_hbox_new(FALSE, 10);
+    GtkWidget *hbox = gtk_hbox_new(FALSE, 10);
 
     // Create tree view
-    iconview = gtk_icon_view_new_with_model(createModel());
-    g_object_set(iconview,
-                 "selection-mode", GTK_SELECTION_BROWSE,
-                 "text-column", TEXT_COL,
-                 "pixbuf-column", PIXBUF_COL,
-                 "columns", 1,
-                 "margin", 10,
-                 NULL);
+    iconview = gtk_icon_view_new_with_model(create_model(hbox));
+    g_object_set (iconview,
+                  "selection-mode", GTK_SELECTION_BROWSE,
+                  "text-column", TEXT_COL,
+                  "pixbuf-column", PIXBUF_COL,
+                  "columns", 1,
+                  "margin", 10,
+                  NULL);
+
     // Connect the callback when clicking on an item
     g_signal_connect(G_OBJECT(iconview), "selection-changed", G_CALLBACK(selection_changed_cb), NULL);
     gtk_box_pack_start(GTK_BOX(hbox), iconview, TRUE, TRUE, 0);
@@ -390,12 +412,13 @@ show_preferences_dialog()
     gtk_widget_show(notebook);
 
     // General settings tab
-    tab = create_general_settings();
+    GtkWidget *tab = create_general_settings();
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("General")));
     gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
 
     // Audio tab
     tab = create_audio_configuration();
+
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Audio")));
     gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
 
@@ -421,7 +444,7 @@ show_preferences_dialog()
     // Highlight the corresponding icon
     gtk_icon_view_select_path(GTK_ICON_VIEW(iconview), gtk_tree_path_new_first());
 
-    result = gtk_dialog_run(dialog);
+    guint result = gtk_dialog_run(dialog);
 
     save_configuration_parameters();
     update_actions();
@@ -431,50 +454,3 @@ show_preferences_dialog()
     gtk_widget_destroy(GTK_WIDGET(dialog));
     return result;
 }
-
-#define NB_MAX_ENTRIES 5
-
-GtkTreeModel* createModel()
-{
-    browser_t browser_entries_full[NB_MAX_ENTRIES] = {
-        {_("General"), "preferences-system", 0},
-        {_("Audio"), "multimedia-volume-control", 1},
-        {_("Hooks"), "gnome-globe", 2},
-        {_("Shortcuts"), "preferences-desktop-keyboard", 3},
-        {_("Address Book"), "address-book-new", 4},
-    };
-
-    GdkPixbuf *pixbuf;
-    GtkTreeIter iter;
-    GtkListStore *store;
-    GError *error = NULL;
-    gint i, nb_entries;
-
-    nb_entries = addrbook ? 5 : 4;
-
-    store = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
-    GtkIconTheme* theme = gtk_icon_theme_get_default();
-
-
-    for (i = 0; i < nb_entries; i++) {
-
-        gtk_list_store_append(store, &iter);
-
-        pixbuf = gtk_icon_theme_load_icon(theme, browser_entries_full[i].icon_name, 48, 0, &error);
-
-        gtk_list_store_set(store, &iter,
-                           PIXBUF_COL, pixbuf,
-                           TEXT_COL, browser_entries_full[i].icon_descr,
-                           PAGE_NUMBER, browser_entries_full[i].page_number,
-                           -1);
-
-        if (pixbuf != NULL) {
-            gdk_pixbuf_unref(pixbuf);
-        } else {
-            DEBUG("Couldn't load icon: %s", error->message);
-            g_clear_error(&error);
-        }
-    }
-
-    return GTK_TREE_MODEL(store);
-}
diff --git a/gnome/src/config/shortcuts-config.c b/gnome/src/config/shortcuts-config.c
index ba3fc72ff9b80430d6c7a76893fae82ce7dd85af..450ada7d2315745325b1715029a89d39a94fd9f5 100644
--- a/gnome/src/config/shortcuts-config.c
+++ b/gnome/src/config/shortcuts-config.c
@@ -28,12 +28,12 @@
  *  as that of the covered work.
  */
 
+#include <gdk/gdk.h>
 #include "shortcuts-config.h"
 #include "shortcuts.h"
 #include "unused.h"
 #include "logger.h"
 
-#include <gdk/gdkx.h>
 
 static void
 accel_cleared(GtkCellRendererAccel *renderer UNUSED, gchar *path,
@@ -61,10 +61,8 @@ accel_edited(GtkCellRendererAccel *renderer UNUSED, gchar *path, guint accel_key
     gtk_tree_model_get_iter_first(model, &iter);
 
     Accelerator* list = shortcuts_get_list();
-    const guint code = XKeysymToKeycode(GDK_DISPLAY(), accel_key);
-    guint i = 0;
-
-    while (list[i].action != NULL) {
+    const guint code = XKeysymToKeycode(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), accel_key);
+    for (guint i = 0; list[i].action != NULL; ++i) {
         if (list[i].key == code && list[i].mask == mask) {
             gtk_list_store_set(GTK_LIST_STORE(model), &iter, MASK, 0, VALUE, 0,
                                -1);
@@ -72,7 +70,6 @@ accel_edited(GtkCellRendererAccel *renderer UNUSED, gchar *path, guint accel_key
         }
 
         gtk_tree_model_iter_next(model, &iter);
-        i++;
     }
 
     // Update treeview
@@ -127,15 +124,12 @@ create_shortcuts_settings()
 
     Accelerator* list = shortcuts_get_list();
 
-    guint i = 0;
-
-    while (list[i].action != NULL) {
+    for (guint i = 0; list[i].action != NULL; ++i) {
         GtkTreeIter iter;
         gtk_list_store_append(store, &iter);
         gtk_list_store_set(store, &iter, ACTION, _(list[i].action), MASK,
                            (gint) list[i].mask, VALUE,
-                           XKeycodeToKeysym(GDK_DISPLAY(), list[i].key, 0), -1);
-        i++;
+                           XKeycodeToKeysym(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), list[i].key, 0), -1);
     }
 
     gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(store));
diff --git a/gnome/src/config/tlsadvanceddialog.c b/gnome/src/config/tlsadvanceddialog.c
index e7552bc191605591d7ef22e704cf53751651fa2f..5fc6852507b5912c0eae4c255136a25c47c860b3 100644
--- a/gnome/src/config/tlsadvanceddialog.c
+++ b/gnome/src/config/tlsadvanceddialog.c
@@ -191,8 +191,8 @@ void show_advanced_tls_options(GHashTable * properties)
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 
     gchar** supported_tls_method = dbus_get_supported_tls_method();
-    GtkTreeIter supported_tls_method_iter = iter;
 
+    GtkTreeIter supported_tls_method_iter;
     for (char **supported_tls_method_ptr = supported_tls_method; supported_tls_method_ptr && *supported_tls_method_ptr; supported_tls_method_ptr++) {
         gtk_list_store_append(tlsProtocolMethodListStore, &iter);
         gtk_list_store_set(tlsProtocolMethodListStore, &iter, 0, *supported_tls_method_ptr, -1);
@@ -268,7 +268,6 @@ void show_advanced_tls_options(GHashTable * properties)
     gtk_widget_show_all(ret);
 
     if (gtk_dialog_run(GTK_DIALOG(tlsDialog)) == GTK_RESPONSE_ACCEPT) {
-
         g_hash_table_replace(properties,
                              g_strdup(TLS_LISTENER_PORT),
                              g_strdup((gchar *) gtk_entry_get_text(GTK_ENTRY(tlsListenerPort))));
@@ -287,7 +286,7 @@ void show_advanced_tls_options(GHashTable * properties)
 
         g_hash_table_replace(properties,
                              g_strdup(TLS_METHOD),
-                             g_strdup((gchar *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(tlsProtocolMethodCombo))));
+                             g_strdup((gchar *) gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(tlsProtocolMethodCombo))));
 
         g_hash_table_replace(properties,
                              g_strdup(TLS_CIPHERS),
diff --git a/gnome/src/contacts/Makefile.am b/gnome/src/contacts/Makefile.am
index b6fc155e2d235066265732629dd4c3622680360d..9c2343de99e5c356e2308252924acd41dcdd3ebd 100644
--- a/gnome/src/contacts/Makefile.am
+++ b/gnome/src/contacts/Makefile.am
@@ -20,9 +20,7 @@ libcontacts_la_SOURCES = \
   searchbar.h
 
 libcontacts_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) \
-				$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) $(LIBGNOMEUI_LDFLAGS) \
-				$(GNOMEDOCUTILS_LDFLAGS)
+						 $(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS)
 
 libcontacts_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
-				$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-				$(GNOMEDOCUTILS_CFLAGS)
+				$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(GCONF_CFLAGS)
diff --git a/gnome/src/contacts/searchbar.c b/gnome/src/contacts/searchbar.c
index 6a14a7e18dbac3dfd229f42706edf0bb5c6e7da2..2ef065ee5811d1295663d53eb945f19f1b135a4c 100644
--- a/gnome/src/contacts/searchbar.c
+++ b/gnome/src/contacts/searchbar.c
@@ -76,7 +76,7 @@ static void cbox_changed_cb(GtkWidget *widget, gpointer user_data UNUSED)
     if (!addrbook)
         return;
 
-    addrbook->set_current_book(gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget)));
+    addrbook->set_current_book(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widget)));
     AddressBook_Config *addressbook_config = addressbook_config_load_parameters();
     addrbook->search(addrbook->search_cb, GTK_ENTRY(addressbookentry), addressbook_config);
 }
@@ -89,7 +89,6 @@ void set_focus_on_addressbook_searchbar()
 void update_searchbar_addressbook_list()
 {
     GtkTreeIter iter, activeIter;
-    gchar *activeText;
     GSList *book_list_iterator;
     book_data_t *book_data;
     GSList *books_data = NULL;
@@ -104,16 +103,14 @@ void update_searchbar_addressbook_list()
 
     DEBUG("Searchbar: Update addressbook list");
 
-    // we must disconnect signal from teh cbox while updating its content
-    gtk_signal_disconnect(cbox, cboxSignalId);
+    // we must disconnect signal from the cbox while updating its content
+    g_signal_handler_disconnect(cbox, cboxSignalId);
 
     // store the current active text
-    activeText = g_strdup(gtk_combo_box_get_active_text(GTK_COMBO_BOX(cbox)));
-
-    if (activeText == NULL) {
+    gchar *activeText = g_strdup(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cbox)));
 
+    if (activeText == NULL)
         activeText = g_strdup("");
-    }
 
     gtk_list_store_clear(liststore);
 
@@ -143,19 +140,17 @@ void update_searchbar_addressbook_list()
             addrbook->set_current_book(activeText);
         } else {
             gtk_combo_box_set_active(GTK_COMBO_BOX(cbox), 0);
-            gtk_combo_box_get_active_text(GTK_COMBO_BOX(cbox));
-            addrbook->set_current_book(gtk_combo_box_get_active_text(GTK_COMBO_BOX(cbox)));
+            addrbook->set_current_book(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cbox)));
         }
     }
 
     g_free(activeText);
-    cboxSignalId = gtk_signal_connect(GTK_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
+    cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
 }
 
 
 static void select_search_type(GtkWidget *item, GtkEntry  *entry UNUSED)
 {
-
     if (addrbook) {
         DEBUG("Searchbar: %s", gtk_menu_item_get_label(GTK_MENU_ITEM(item)));
 
@@ -175,6 +170,8 @@ static void select_search_type(GtkWidget *item, GtkEntry  *entry UNUSED)
         addrbook->search(addrbook->search_cb, GTK_ENTRY(addressbookentry), addressbook_config);
     }
 
+    AddressBook_Config *addressbook_config = addressbook_config_load_parameters();
+    addrbook->search (addrbook->search_cb, GTK_ENTRY (addressbookentry), addressbook_config);
 }
 
 static void search_all(GtkWidget *item UNUSED, GtkEntry  *entry)
@@ -343,10 +340,9 @@ GtkWidget* history_searchbar_new(void)
 
 GtkWidget* contacts_searchbar_new()
 {
-
     GtkWidget *ret;
     GtkWidget *align;
-    int count, cbox_height, cbox_width;
+    int count;
     GtkTreeIter iter, activeIter;
     GtkCellRenderer *cell;
     gchar **book_list;
@@ -408,11 +404,11 @@ GtkWidget* contacts_searchbar_new()
     gtk_alignment_set_padding(GTK_ALIGNMENT(align), 0, 2, 6, 6);
     gtk_container_add(GTK_CONTAINER(align), cbox);
 
+    gint cbox_width, cbox_height;
     gtk_widget_get_size_request(GTK_WIDGET(cbox), &cbox_width, &cbox_height);
     gtk_widget_set_size_request(GTK_WIDGET(cbox), cbox_width, 26);
 
-    cboxSignalId = gtk_signal_connect(GTK_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
-    // cbox_changed_cb (GTK_WIDGET (cbox), NULL);
+    cboxSignalId = g_signal_connect(G_OBJECT(cbox), "changed", G_CALLBACK(cbox_changed_cb), NULL);
 
     cell = gtk_cell_renderer_text_new();
     gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cbox), cell, TRUE);
@@ -430,7 +426,6 @@ GtkWidget* contacts_searchbar_new()
     gtk_entry_set_icon_tooltip_text(GTK_ENTRY(addressbookentry), GTK_ENTRY_ICON_PRIMARY,
                                     tooltip_text);
 
-
     // Set the clean insensitive
     text_changed_cb(GTK_ENTRY(addressbookentry), NULL);
 
@@ -454,23 +449,10 @@ GtkWidget* contacts_searchbar_new()
     g_free(tooltip_text);
     g_strfreev(book_list);
 
-    // current_addressbook = gtk_combo_box_get_active_text (GTK_COMBO_BOX (cbox));
-    // set_current_addressbook (current_addressbook);
-
     return ret;
 }
 
-void activateWaitingLayer()
-{
-    gtk_widget_show(waitingLayer);
-}
-
-void deactivateWaitingLayer()
-{
-    gtk_widget_hide(waitingLayer);
-}
-
-SearchType get_current_history_search_type(void)
+SearchType get_current_history_search_type (void)
 {
     return HistorySearchType;
 }
diff --git a/gnome/src/dbus/Makefile.am b/gnome/src/dbus/Makefile.am
index c9fa5b156f89c82f446802678c8fd0c07570f22d..4c5ce7683b9290ca6b56a7207e8e16819d272797 100644
--- a/gnome/src/dbus/Makefile.am
+++ b/gnome/src/dbus/Makefile.am
@@ -26,15 +26,13 @@ libdbus_la_SOURCES=     \
     $(BUILT_SOURCES)
 
 libdbus_la_LDFLAGS= $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) \
-			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) $(LIBGNOMEUI_LDFLAGS) \
-			$(GNOMEDOCUTILS_LDFLAGS)
+					$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) \
+					$(GCONF_LDFLAGS)
 
 libdbus_la_CFLAGS= $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
-			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-			$(GNOMEDOCUTILS_CFLAGS)
+				   $(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) \
+				   $(GCONF_CFLAGS)
 
-EXTRA_DIST= \
-    marshaller.list
+EXTRA_DIST= marshaller.list
 
-CLEANFILES= \
-    $(BUILT_SOURCES)
+CLEANFILES= $(BUILT_SOURCES)
diff --git a/gnome/src/eel-gconf-extensions.c b/gnome/src/eel-gconf-extensions.c
index eca8c5ce29c7d230acf59e795659b9e60b28b29b..c1947f24ae8ad3a10529d974a2dbc19e393dc7f7 100644
--- a/gnome/src/eel-gconf-extensions.c
+++ b/gnome/src/eel-gconf-extensions.c
@@ -23,13 +23,13 @@
 */
 
 #include <stdlib.h>
-#include <config.h>
+#include "config.h"
 #include "eel-gconf-extensions.h"
 
 #include <gconf/gconf-client.h>
 #include <gconf/gconf.h>
 #include <gtk/gtk.h>
-#include <libgnome/gnome-i18n.h>
+#include <glib/gi18n.h>
 
 static GConfClient *global_gconf_client = NULL;
 
diff --git a/gnome/src/icons/Makefile.am b/gnome/src/icons/Makefile.am
index b9cdfbdcbf420f6508f0372cacb136c3a9d623bc..ecb4274268bf03772f37b30e7f99547d4a3b7dbf 100644
--- a/gnome/src/icons/Makefile.am
+++ b/gnome/src/icons/Makefile.am
@@ -7,9 +7,7 @@ libicons_la_SOURCES = icon_factory.c \
 					  pixmap_data.h
 
 libicons_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) \
-			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) $(LIBGNOMEUI_LDFLAGS) \
-			$(GNOMEDOCUTILS_LDFLAGS)
+					  $(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS)
 
 libicons_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
-			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-			$(GNOMEDOCUTILS_CFLAGS)
+					 $(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS)
diff --git a/gnome/src/icons/icon_factory.c b/gnome/src/icons/icon_factory.c
index 8a8093ea7d234db4f73cf4454a538334c00560cf..3d66d611bcf4a51b4bfa2adc46e3974f239aaf54 100644
--- a/gnome/src/icons/icon_factory.c
+++ b/gnome/src/icons/icon_factory.c
@@ -39,15 +39,11 @@ static GtkIconFactory *icon_factory = NULL;
 
 void add_icon(GtkIconFactory *factory, const gchar *stock_id, const guint8 *icon_data, GtkIconSize size)
 {
-    GtkIconSet *icons;
-    GtkIconSource *source;
-    GdkPixbuf *pixbuf;
-
-    icons = gtk_icon_factory_lookup(factory, stock_id);
+    GtkIconSet *icons = gtk_icon_factory_lookup(factory, stock_id);
 
     if (!icons) {
-        pixbuf = gdk_pixbuf_new_from_inline(-1, icon_data, FALSE, NULL);
-        source = gtk_icon_source_new();
+        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_inline(-1, icon_data, FALSE, NULL);
+        GtkIconSource *source = gtk_icon_source_new();
         gtk_icon_source_set_pixbuf(source, pixbuf);
         gtk_icon_source_set_size(source, size);
 
diff --git a/gnome/src/icons/icon_factory.h b/gnome/src/icons/icon_factory.h
index 2443cfca69ee57ba505199f21fde6d4c0a6348d2..974714a57b4cc4a3677202e8e40151566fbdff10 100644
--- a/gnome/src/icons/icon_factory.h
+++ b/gnome/src/icons/icon_factory.h
@@ -44,6 +44,7 @@
 #define GTK_STOCK_SFLPHONE				"gnome-stock-sflphone"
 #define GTK_STOCK_FAIL					"gnome-stock-fail"
 #define GTK_STOCK_USER					"gnome-stock-user"
+#define GTK_STOCK_AUDIO_CARD            "audio-card"
 
 void init_icon_factory (void);
 
diff --git a/gnome/src/imwindow.c b/gnome/src/imwindow.c
index 43d8608033dc3652abaf9caca7332b042a6deb09..cc37883111ccf3ca24b4ce848f1c028f35d91ffe 100644
--- a/gnome/src/imwindow.c
+++ b/gnome/src/imwindow.c
@@ -81,7 +81,7 @@ on_delete(GtkWidget * widget UNUSED, gpointer data UNUSED)
 }
 
 static void
-on_switch_page(GtkNotebook *notebook, GtkNotebookPage *page UNUSED, guint page_num, gpointer userdata UNUSED)
+on_switch_page(GtkNotebook *notebook, gpointer page UNUSED, guint page_num, gpointer userdata UNUSED)
 {
     GtkWidget *tab = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_num);
 
diff --git a/gnome/src/main.c b/gnome/src/main.c
index 027099114c1f2e1ec3e774ecada02dfcb13e66b6..5998bbcc681e4418462c76a85bafe0598d43101a 100644
--- a/gnome/src/main.c
+++ b/gnome/src/main.c
@@ -28,17 +28,14 @@
  *  as that of the covered work.
  */
 
-#include <actions.h>
-#include <calllist.h>
-#include <config.h>
-#include <logger.h>
-#include <dbus/dbus.h>
-#include <mainwindow.h>
-#include <statusicon.h>
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
-#include <eel-gconf-extensions.h>
-
+#include "actions.h"
+#include "calllist.h"
+#include "config.h"
+#include "logger.h"
+#include "dbus/dbus.h"
+#include "mainwindow.h"
+#include "statusicon.h"
+#include "eel-gconf-extensions.h"
 #include <gtk/gtk.h>
 #include <stdlib.h>
 
@@ -85,11 +82,6 @@ main(int argc, char *argv[])
     bindtextdomain("sflphone-client-gnome", LOCALEDIR);
     textdomain("sflphone-client-gnome");
 
-    // Initialises the GNOME libraries
-    gnome_program_init("sflphone", VERSION, LIBGNOMEUI_MODULE, argc, argv,
-                       GNOME_PROGRAM_STANDARD_PROPERTIES,
-                       NULL) ;
-
     if (!sflphone_init(&error)) {
         ERROR(error->message);
         GtkWidget *dialog = gtk_message_dialog_new(
diff --git a/gnome/src/mainwindow.c b/gnome/src/mainwindow.c
index eea520d9f4430efcc776583783778507a3cc8feb..91d2bcd537ecfd3dff5ef540e0d7d3b64ae254c7 100644
--- a/gnome/src/mainwindow.c
+++ b/gnome/src/mainwindow.c
@@ -43,23 +43,17 @@
 #include "contacts/searchbar.h"
 #include "statusicon.h" /* for set_minimized */
 #include "assistant.h"
-#include "widget/gtkscrollbook.h"
 #include "widget/minidialog.h"
 #include "uimanager.h"
 #include "unused.h"
 #include "config/audioconf.h"
 
+#include "eel-gconf-extensions.h"
+
 #include <sys/stat.h>
 #include <gtk/gtk.h>
 
-/* Backward compatibility for gtk < 2.22.0 */
-#if GTK_CHECK_VERSION(2,22,0)
-#include <gdk/gdkkeysyms-compat.h>
-#else
 #include <gdk/gdkkeysyms.h>
-#endif
-
-#include <eel-gconf-extensions.h>
 
 /** Local variables */
 static GtkUIManager *ui_manager;
@@ -71,7 +65,6 @@ static GtkWidget *dialpad;
 static GtkWidget *speaker_control;
 static GtkWidget *mic_control;
 static GtkWidget *statusBar;
-static PidginScrollBook *embedded_error_notebook;
 
 static gchar *status_current_message;
 static GMutex *gmutex;
@@ -152,7 +145,7 @@ on_key_released(GtkWidget *widget UNUSED, GdkEventKey *event, gpointer user_data
     if (focus_is_on_searchbar)
         return TRUE;
 
-    if (event->keyval == GDK_Return) {
+    if (event->keyval == GDK_KEY_Return) {
         if (active_calltree_tab == current_calls_tab) {
             sflphone_keypad(event->keyval, event->string);
             return TRUE;
@@ -165,13 +158,13 @@ on_key_released(GtkWidget *widget UNUSED, GdkEventKey *event, gpointer user_data
             event->keyval == '<' ||
             event->keyval == '>' ||
             event->keyval == '\"'||
-            event->keyval == GDK_Tab ||
-            event->keyval == GDK_Return ||
-            event->keyval == GDK_Left ||
-            event->keyval == GDK_Up ||
-            event->keyval == GDK_Right ||
-            event->keyval == GDK_Down ||
-            (event->keyval >= GDK_F1 && event->keyval <= GDK_F12) ||
+            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
@@ -252,10 +245,6 @@ create_main_window()
     gtk_box_pack_start(GTK_BOX(vbox), subvbox, FALSE /*expand*/,
                        FALSE /*fill*/, 0 /*padding*/);
 
-    embedded_error_notebook = PIDGIN_SCROLL_BOOK(pidgin_scroll_book_new());
-    gtk_box_pack_start(GTK_BOX(subvbox), GTK_WIDGET(embedded_error_notebook),
-                       FALSE, FALSE, 0);
-
     if (SHOW_VOLUME) {
         speaker_control = create_slider("speaker");
         gtk_box_pack_end(GTK_BOX(subvbox), speaker_control, FALSE /*expand*/,
@@ -392,17 +381,22 @@ statusbar_update_clock(const gchar * const msg)
     g_free(message);
 }
 
+
 static void
-add_error_dialog(GtkWidget *dialog, callable_obj_t * call)
+destroy_error_dialog_cb(GtkWidget *dialog UNUSED, GtkWidget *win)
 {
-    gtk_container_add(GTK_CONTAINER(embedded_error_notebook), dialog);
-    call_add_error(call, dialog);
+    gtk_widget_destroy(win);
 }
 
 static void
-destroy_error_dialog_cb(GtkObject *dialog, callable_obj_t * call)
+add_error_dialog(GtkWidget *dialog)
 {
-    call_remove_error(call, dialog);
+    GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+    gtk_container_add(GTK_CONTAINER(win), dialog);
+
+    g_signal_connect_after(dialog, "destroy", (GCallback)destroy_error_dialog_cb, win);
+
+    gtk_widget_show(win);
 }
 
 void
@@ -420,9 +414,9 @@ main_window_zrtp_not_supported(callable_obj_t * c)
         DEBUG("Account is null callID %s", c->_callID);
         GHashTable * properties = sflphone_get_ip2ip_properties();
 
-        if (properties != NULL)
-            warning_enabled = g_hash_table_lookup(properties,
-                                                  ACCOUNT_ZRTP_NOT_SUPP_WARNING);
+        if (properties)
+            warning_enabled = g_hash_table_lookup (properties,
+                                                   ACCOUNT_ZRTP_NOT_SUPP_WARNING);
     }
 
     if (g_strcasecmp(warning_enabled, "true") == 0) {
@@ -437,9 +431,7 @@ main_window_zrtp_not_supported(callable_obj_t * c)
         pidgin_mini_dialog_add_button(mini_dialog, _("Stop Call"),
                                       sflphone_hang_up, NULL);
 
-        g_signal_connect_after(mini_dialog, "destroy", (GCallback)destroy_error_dialog_cb, c);
-
-        add_error_dialog(GTK_WIDGET(mini_dialog), c);
+        add_error_dialog(GTK_WIDGET(mini_dialog));
     }
 }
 
@@ -465,8 +457,7 @@ main_window_zrtp_negotiation_failed(const gchar* const callID, const gchar* cons
     pidgin_mini_dialog_add_button(mini_dialog, _("Stop Call"), sflphone_hang_up,
                                   NULL);
 
-    g_signal_connect_after(mini_dialog, "destroy",(GCallback) destroy_error_dialog_cb, c);
-    add_error_dialog(GTK_WIDGET(mini_dialog), c);
+    add_error_dialog(GTK_WIDGET(mini_dialog));
 }
 
 void
@@ -483,5 +474,5 @@ main_window_confirm_go_clear(callable_obj_t * c)
     pidgin_mini_dialog_add_button(mini_dialog, _("Stop Call"), sflphone_hang_up,
                                   NULL);
 
-    add_error_dialog(GTK_WIDGET(mini_dialog), c);
+    add_error_dialog(GTK_WIDGET(mini_dialog));
 }
diff --git a/gnome/src/sflnotify.c b/gnome/src/sflnotify.c
index 8aef29f78a7a6dbfc680fefb7c23ceb8a809899a..622c67ab302c2e108e090c332009c3fa7dc52293 100644
--- a/gnome/src/sflnotify.c
+++ b/gnome/src/sflnotify.c
@@ -27,9 +27,9 @@
  *  shall include the source code for the parts of OpenSSL used as well
  *  as that of the covered work.
  */
-#include "eel-gconf-extensions.h"
 
 #include "config.h"
+#include "eel-gconf-extensions.h"
 #include "sflnotify.h"
 #include "logger.h"
 
@@ -49,16 +49,8 @@ create_new_gnome_notification(gchar *title, gchar *body, NotifyUrgency urgency,
         notify_init("SFLphone");
 
         // Set struct fields
-#ifdef LIBNOTIFY_VERSION_0_7_2
         notif.notification = notify_notification_new(title, body, NULL);
-#else
-        notif.notification = notify_notification_new(title, body, NULL, NULL);
-#endif
         notif.icon = gdk_pixbuf_new_from_file(LOGO_SMALL, NULL);
-#ifdef LIBNOTIFY_VERSION_0_7_2
-#else
-        notify_notification_attach_to_status_icon(notif.notification , get_status_icon());
-#endif
 
         notify_notification_set_urgency(notif.notification, urgency);
 
diff --git a/gnome/src/shortcuts.c b/gnome/src/shortcuts.c
index 014e4298d323913884ac03e6be87448633a7827a..b35333bcec4d894f8b244c17cffe9727a632122c 100644
--- a/gnome/src/shortcuts.c
+++ b/gnome/src/shortcuts.c
@@ -49,11 +49,10 @@
 #include "unused.h"
 
 static void
-ungrab_key(guint key, GdkModifierType mask, const GdkWindow *root);
+ungrab_key(guint key, GdkModifierType mask, GdkWindow *root);
 
 static void
-grab_key(guint key, GdkModifierType mask, const GdkWindow *root);
-
+grab_key(guint key, GdkModifierType mask, GdkWindow *root);
 
 // used to store accelerator config
 static Accelerator* accelerators_list;
@@ -72,36 +71,18 @@ static GHashTable* shortcutsMap;
 static GdkFilterReturn
 filter_keys(const GdkXEvent *xevent, const GdkEvent *event UNUSED, gpointer data UNUSED)
 {
-    XEvent *xev = NULL;
-    XKeyEvent *key = NULL;
-    GdkModifierType keystate = 0;
-    int i = 0;
-
-    xev = (XEvent *) xevent;
-
-    if (xev->type != KeyPress) {
+    if (((XEvent *) xevent)->type != KeyPress)
         return GDK_FILTER_CONTINUE;
-    }
-
-    key = (XKeyEvent *) xevent;
-    keystate = key->state & ~(Mod2Mask | Mod5Mask | LockMask);
 
-    // try to find corresponding action
-    while (accelerators_list[i].action != NULL) {
-        if (accelerators_list[i].key == key->keycode && accelerators_list[i].mask
-                == keystate) {
-            DEBUG("Shortcuts: Catched key for action: %s", accelerators_list[i].action,
-                  accelerators_list[i].key);
+    XKeyEvent *key = (XKeyEvent *) xevent;
+    GdkModifierType keystate = key->state & ~(Mod2Mask | Mod5Mask | LockMask);
 
-            // call associated callback function
+    for (int i = 0; accelerators_list[i].action; ++i)
+        if (accelerators_list[i].key == key->keycode && accelerators_list[i].mask == keystate) {
             accelerators_list[i].callback();
-
             return GDK_FILTER_REMOVE;
         }
 
-        i++;
-    }
-
     return GDK_FILTER_CONTINUE;
 }
 
@@ -491,62 +472,54 @@ shortcuts_get_list()
  * Remove key "catcher" from GDK layer
  */
 static void
-ungrab_key(guint key, GdkModifierType mask, const GdkWindow *root)
+ungrab_key(guint key, GdkModifierType mask, GdkWindow *root)
 {
     DEBUG("Shortcuts: Ungrabbing key %d+%d", mask, key);
 
     gdk_error_trap_push();
-
-    XUngrabKey(GDK_DISPLAY(), key, mask, GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod2Mask | mask, GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod5Mask | mask, GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, LockMask | mask, GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod2Mask | Mod5Mask | mask,
-               GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod2Mask | LockMask | mask,
-               GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod5Mask | LockMask | mask,
-               GDK_WINDOW_XID((GdkDrawable*) root));
-    XUngrabKey(GDK_DISPLAY(), key, Mod2Mask | Mod5Mask | LockMask | mask,
-               GDK_WINDOW_XID((GdkDrawable*) root));
+    Display *d = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
+    XID x = GDK_WINDOW_XID(root);
+
+    XUngrabKey(d, key, mask | 0, x);
+    XUngrabKey(d, key, mask | Mod2Mask, x);
+    XUngrabKey(d, key, mask | Mod5Mask, x);
+    XUngrabKey(d, key, mask | LockMask, x);
+    XUngrabKey(d, key, mask | Mod2Mask | LockMask, x);
+    XUngrabKey(d, key, mask | Mod2Mask | Mod5Mask, x);
+    XUngrabKey(d, key, mask | Mod2Mask | LockMask, x);
+    XUngrabKey(d, key, mask | Mod5Mask | LockMask, x);
+    XUngrabKey(d, key, mask | Mod2Mask | Mod5Mask | LockMask, x);
 
     gdk_flush();
 
-    if (gdk_error_trap_pop()) {
+    if (gdk_error_trap_pop())
         ERROR("Shortcuts: Error: Ungrabbing key %d+%d", mask, key);
-    }
 }
 
 /*
  * Add key "catcher" to GDK layer
  */
 static void
-grab_key(guint key, GdkModifierType mask, const GdkWindow *root)
+grab_key(guint key, GdkModifierType mask, GdkWindow *root)
 {
     gdk_error_trap_push();
 
     DEBUG("Shortcuts: Grabbing key %d+%d", mask, key);
 
-    XGrabKey(GDK_DISPLAY(), key, mask, GDK_WINDOW_XID((GdkDrawable*) root), True,
-             GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod2Mask | mask, GDK_WINDOW_XID((GdkDrawable*) root), True,
-             GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod5Mask | mask, GDK_WINDOW_XID((GdkDrawable*) root), True,
-             GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, LockMask | mask, GDK_WINDOW_XID((GdkDrawable*) root), True,
-             GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod2Mask | Mod5Mask | mask,
-             GDK_WINDOW_XID((GdkDrawable*) root), True, GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod2Mask | LockMask | mask,
-             GDK_WINDOW_XID((GdkDrawable*) root), True, GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod5Mask | LockMask | mask,
-             GDK_WINDOW_XID((GdkDrawable*) root), True, GrabModeAsync, GrabModeAsync);
-    XGrabKey(GDK_DISPLAY(), key, Mod2Mask | Mod5Mask | LockMask | mask,
-             GDK_WINDOW_XID((GdkDrawable*) root), True, GrabModeAsync, GrabModeAsync);
+    Display *d = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
+    XID x = GDK_WINDOW_XID(root);
+
+    XGrabKey(d, key, mask | 0, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod2Mask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod5Mask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | LockMask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod2Mask | Mod5Mask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod2Mask | LockMask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod5Mask | LockMask, x, True, GrabModeAsync, GrabModeAsync);
+    XGrabKey(d, key, mask | Mod2Mask | Mod5Mask | LockMask, x, True, GrabModeAsync, GrabModeAsync);
 
     gdk_flush();
 
-    if (gdk_error_trap_pop()) {
+    if (gdk_error_trap_pop())
         ERROR("Shortcuts: Error: Grabbing key %d+%d", mask, key);
-    }
 }
diff --git a/gnome/src/sliders.c b/gnome/src/sliders.c
index 85f869a55e57aea21994d7b8670782ab14a1a57b..16cfd8cdd7d7aa5a3249683eeda92e91737bae36 100644
--- a/gnome/src/sliders.c
+++ b/gnome/src/sliders.c
@@ -122,13 +122,13 @@ set_slider(const gchar * device, gdouble newval)
     else
         dev = MIKE;
 
-    gtk_signal_handler_block(GTK_OBJECT(slider[dev]), movedConnId[dev]);
+    g_signal_handler_block(G_OBJECT(slider[dev]), movedConnId[dev]);
     gtk_range_set_value(GTK_RANGE(slider[dev]), newval);
-    gtk_signal_handler_unblock(slider[dev], movedConnId[dev]);
+    g_signal_handler_unblock(slider[dev], movedConnId[dev]);
 
-    gtk_signal_handler_block(GTK_OBJECT(button[dev]),toggledConnId[dev]);
+    g_signal_handler_block(G_OBJECT(button[dev]),toggledConnId[dev]);
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button[dev]), (newval == 0 ? TRUE: FALSE));
-    gtk_signal_handler_unblock(button[dev], toggledConnId[dev]);
+    g_signal_handler_unblock(button[dev], toggledConnId[dev]);
 
     update_icons(dev);
 }
diff --git a/gnome/src/statusicon.c b/gnome/src/statusicon.c
index 60e12a186748ba8be34e554ce2510e5cc41ad461..2fe79ee9b61e5735d3aaf8f655dede4448c16107 100644
--- a/gnome/src/statusicon.c
+++ b/gnome/src/statusicon.c
@@ -40,7 +40,7 @@
 
 static GtkStatusIcon *status;
 static GtkWidget *show_menu_item, *hangup_menu_item;
-static gboolean __minimized = MINIMIZED;
+static gboolean minimized_ = MINIMIZED;
 
 void
 popup_main_window(void)
@@ -93,7 +93,7 @@ status_icon_unminimize()
 gboolean
 main_widget_minimized()
 {
-    return __minimized;
+    return minimized_;
 }
 
 void
@@ -193,7 +193,7 @@ statusicon_set_tooltip()
         gchar *accounts = g_markup_printf_escaped(n_("%i active account", "%i active accounts", count), count);
         gchar *tip = g_markup_printf_escaped("%s - %s", _("SFLphone"), accounts);
         g_free(accounts);
-        gtk_status_icon_set_tooltip(status, tip);
+        gtk_status_icon_set_tooltip_markup(status, tip);
         g_free(tip);
     }
 }
@@ -221,6 +221,6 @@ get_status_icon(void)
 void
 set_minimized(gboolean state)
 {
-    __minimized = state;
+    minimized_ = state;
     gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), !state);
 }
diff --git a/gnome/src/uimanager.c b/gnome/src/uimanager.c
index 6f61b02f897551e2943426b2f9e4c8b1ba8e02d9..e3284b343a1decaca1af2956712978eb0540a3e9 100644
--- a/gnome/src/uimanager.c
+++ b/gnome/src/uimanager.c
@@ -37,7 +37,6 @@
 #include <gtk/gtk.h>
 #include <string.h>
 #include <glib/gprintf.h>
-#include <libgnome/gnome-help.h>
 
 #include "uimanager.h"
 #include "statusicon.h"
@@ -53,6 +52,8 @@
 #include "contacts/calltab.h"
 #include "config/addressbook-config.h"
 
+#include "eel-gconf-extensions.h"
+
 #include "accountlist.h"
 #include "config/accountlistconfigdialog.h"
 
@@ -265,12 +266,12 @@ update_actions()
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(holdToolbar_), pos++);
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(transferToolbar_), pos++);
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(recordWidget_), pos++);
-                gtk_signal_handler_block(GTK_OBJECT(transferToolbar_), transferButtonConnId_);
+                g_signal_handler_block(transferToolbar_, transferButtonConnId_);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE);
-                gtk_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
-                g_signal_handler_block(GTK_OBJECT(recordWidget_), recordButtonConnId_);
+                g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
+                g_signal_handler_block(recordWidget_, recordButtonConnId_);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), FALSE);
-                g_signal_handler_unblock(GTK_OBJECT(recordWidget_), recordButtonConnId_);
+                g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
 
                 if (instant_messaging_enabled) {
                     gtk_action_set_sensitive(imAction_, TRUE);
@@ -292,12 +293,12 @@ update_actions()
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(holdToolbar_), pos++);
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(transferToolbar_), pos++);
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(recordWidget_), pos++);
-                gtk_signal_handler_block(GTK_OBJECT(transferToolbar_), transferButtonConnId_);
+                g_signal_handler_block(transferToolbar_, transferButtonConnId_);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE);
-                gtk_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
-                g_signal_handler_block(GTK_OBJECT(recordWidget_), recordButtonConnId_);
+                g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
+                g_signal_handler_block(recordWidget_, recordButtonConnId_);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), TRUE);
-                g_signal_handler_unblock(GTK_OBJECT(recordWidget_), recordButtonConnId_);
+                g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
 
                 if (instant_messaging_enabled) {
                     gtk_action_set_sensitive(imAction_, TRUE);
@@ -315,9 +316,9 @@ update_actions()
             case CALL_STATE_TRANSFER:
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(hangUpWidget_), 1);
                 gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), GTK_TOOL_ITEM(transferToolbar_), 2);
-                gtk_signal_handler_block(GTK_OBJECT(transferToolbar_), transferButtonConnId_);
+                g_signal_handler_block(transferToolbar_, transferButtonConnId_);
                 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), TRUE);
-                gtk_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
+                g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
                 gtk_action_set_sensitive(hangUpAction_, TRUE);
                 gtk_widget_set_sensitive(holdMenu_, TRUE);
                 gtk_widget_set_sensitive(holdToolbar_, TRUE);
@@ -465,9 +466,7 @@ static void
 help_contents_cb(GtkAction *action UNUSED)
 {
     GError *error = NULL;
-
-    gnome_help_display("sflphone.xml", NULL, &error);
-
+    gtk_show_uri(NULL, "ghelp:sflphone", GDK_CURRENT_TIME, &error);
     if (error != NULL) {
         g_warning("%s", error->message);
         g_error_free(error);
@@ -477,8 +476,7 @@ help_contents_cb(GtkAction *action UNUSED)
 static void
 help_about(void * foo UNUSED)
 {
-    gchar
-    *authors[] = {
+    static const gchar *authors[] = {
         "Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>",
         "Jean-Philippe Barrette-LaPierre",
         "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
@@ -492,17 +490,21 @@ help_about(void * foo UNUSED)
         "Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>",
         "Alexandre Savard <alexandre.savard@savoirfairelinux.com>", NULL
     };
-    gchar *artists[] = { "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
-                         "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", NULL
-                       };
-
-    gtk_show_about_dialog(GTK_WINDOW(get_main_window()), "artists", artists,
-                          "authors", authors, "comments",
-                          _("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."),
-                          "copyright", "Copyright © 2004-2011 Savoir-faire Linux Inc.", "name",
-                          PACKAGE, "title", _("About SFLphone"), "version", VERSION, "website",
-                          "http://www.sflphone.org", NULL);
+    static const gchar *artists[] = {
+        "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
+        "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", NULL
+    };
 
+    gtk_show_about_dialog(GTK_WINDOW(get_main_window()),
+            "artists", artists,
+            "authors", authors,
+            "comments", _("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."),
+            "copyright", "Copyright © 2004-2011 Savoir-faire Linux Inc.",
+            "name", PACKAGE,
+            "title", _("About SFLphone"),
+            "version", VERSION,
+            "website", "http://www.sflphone.org",
+            NULL);
 }
 
 /* ----------------------------------------------------------------- */
@@ -948,7 +950,6 @@ toggle_addressbook_cb(GtkToggleAction *action, gpointer user_data UNUSED)
 }
 
 static const GtkActionEntry menu_entries[] = {
-
     // Call Menu
     { "Call", NULL, N_("Call"), NULL, NULL, NULL},
     {
@@ -1028,19 +1029,13 @@ static const GtkActionEntry menu_entries[] = {
 
     // Help menu
     { "Help", NULL, N_("_Help"), NULL, NULL, NULL },
-    {
-        "HelpContents", GTK_STOCK_HELP, N_("Contents"), "F1",
-        N_("Open the manual"), G_CALLBACK(help_contents_cb)
-    },
-    {
-        "About", GTK_STOCK_ABOUT, NULL, NULL,
-        N_("About this application"), G_CALLBACK(help_about)
-    }
-
+    { "HelpContents", GTK_STOCK_HELP, N_("Contents"), "F1",
+      N_("Open the manual"), G_CALLBACK(help_contents_cb) },
+    { "About", GTK_STOCK_ABOUT, NULL, NULL,
+      N_("About this application"), G_CALLBACK(help_about) }
 };
 
 static const GtkToggleActionEntry toggle_menu_entries[] = {
-
     { "Transfer", GTK_STOCK_TRANSFER, N_("_Transfer"), "<control>T", N_("Transfer the call"), NULL, TRUE },
     { "Record", GTK_STOCK_MEDIA_RECORD, N_("_Record"), "<control>R", N_("Record the current conversation"), NULL, TRUE },
     { "Toolbar", NULL, N_("_Show toolbar"), "<control>T", N_("Show the toolbar"), NULL, TRUE },
diff --git a/gnome/src/widget/Makefile.am b/gnome/src/widget/Makefile.am
index 7d67024bd31d970a0a517caabb678ef8b795747e..180597ee25f8970c72a8a187b8e2e75e77fdd73d 100644
--- a/gnome/src/widget/Makefile.am
+++ b/gnome/src/widget/Makefile.am
@@ -2,23 +2,14 @@ include ../../globals.mak
 
 noinst_LTLIBRARIES = libwidget.la
 
-libwidget_la_SOURCES = \
-		gtkscrollbook.c \
-		gtkscrollbook.h \
-		minidialog.h \
-		minidialog.c \
-		imwidget.c \
-		imwidget.h
+libwidget_la_SOURCES = minidialog.h minidialog.c imwidget.c imwidget.h
 
 libwidget_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) \
-			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) $(LIBGNOMEUI_LDFLAGS) \
-			$(GNOMEDOCUTILS_LDFLAGS)
+			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS)
 
 libwidget_la_LIBADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBS) \
-			$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) $(LIBGNOMEUI_LIBS) \
-			$(GNOMEDOCUTILS_LIBS)
+			$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS)
 
 libwidget_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
 			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBEBOOK_CFLAGS) \
-			$(LIBEDATASERVER_CFLAGS) $(LIBEDATASERVERUI_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-			$(GNOMEDOCUTILS_CFLAGS)
+			$(LIBEDATASERVER_CFLAGS) $(LIBEDATASERVERUI_CFLAGS)
diff --git a/gnome/src/widget/gtkscrollbook.c b/gnome/src/widget/gtkscrollbook.c
deleted file mode 100644
index 0e8d5e9556a55bb2a4e3dee0cf76eed02c3c378c..0000000000000000000000000000000000000000
--- a/gnome/src/widget/gtkscrollbook.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * @file gtkscrollbook.c GTK+ Scrolling notebook widget
- * @ingroup pidgin
- */
-
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-
-#include "gtkscrollbook.h"
-#include "unused.h"
-#include "sflphone_const.h"
-
-static void pidgin_scroll_book_init(PidginScrollBook *scroll_book);
-static void pidgin_scroll_book_class_init(PidginScrollBookClass *klass);
-static void pidgin_scroll_book_forall(GtkContainer *c,
-                                      gboolean include_internals,
-                                      GtkCallback callback,
-                                      gpointer user_data);
-
-GType
-pidgin_scroll_book_get_type(void)
-{
-    static GType scroll_book_type = 0;
-
-    if (!scroll_book_type) {
-        static const GTypeInfo scroll_book_info = {
-            sizeof(PidginScrollBookClass),
-            NULL, /* base_init */
-            NULL, /* base_finalize */
-            (GClassInitFunc) pidgin_scroll_book_class_init,
-            NULL, /* class_finalize */
-            NULL, /* class_data */
-            sizeof(PidginScrollBook),
-            0,
-            (GInstanceInitFunc) pidgin_scroll_book_init,
-            NULL  /* value_table */
-        };
-
-        scroll_book_type = g_type_register_static(GTK_TYPE_VBOX,
-                           "PidginScrollBook",
-                           &scroll_book_info,
-                           0);
-    }
-
-    return scroll_book_type;
-}
-
-static gboolean
-scroll_left_cb(PidginScrollBook *scroll_book)
-{
-    int page_index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook));
-
-    if (page_index > 0)
-        gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), page_index - 1);
-
-    return TRUE;
-}
-
-static gboolean
-scroll_right_cb(PidginScrollBook *scroll_book)
-{
-    int page_index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook));
-    int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook));
-
-    if (page_index + 1 < count)
-        gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), page_index + 1);
-
-    return TRUE;
-}
-
-static void
-refresh_scroll_box(PidginScrollBook *scroll_book, int book_index, int count)
-{
-    gtk_widget_show_all(GTK_WIDGET(scroll_book));
-
-    if (count < 1)
-        gtk_widget_hide_all(scroll_book->hbox);
-    else {
-        gtk_widget_show_all(scroll_book->hbox);
-
-        if (count == 1) {
-            gtk_widget_hide(scroll_book->label);
-            gtk_widget_hide(scroll_book->left_arrow);
-            gtk_widget_hide(scroll_book->right_arrow);
-        }
-    }
-
-    char *label = g_strdup_printf("<span size='smaller' weight='bold'>(%d/%d)</span>", book_index+1, count);
-    gtk_label_set_markup(GTK_LABEL(scroll_book->label), label);
-    g_free(label);
-
-    gtk_widget_set_sensitive(scroll_book->left_arrow, book_index != 0);
-    gtk_widget_set_sensitive(scroll_book->right_arrow, book_index + 1 != count);
-}
-
-
-static void
-page_count_change_cb(PidginScrollBook *scroll_book)
-{
-    int page_index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook));
-    int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook));
-    refresh_scroll_box(scroll_book, page_index, count);
-}
-
-static gboolean
-scroll_close_cb(PidginScrollBook *scroll_book)
-{
-    gtk_widget_destroy(gtk_notebook_get_nth_page(GTK_NOTEBOOK(scroll_book->notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook))));
-    return FALSE;
-}
-
-static void
-switch_page_cb(GtkNotebook *notebook UNUSED, GtkNotebookPage *page UNUSED, guint page_num, PidginScrollBook *scroll_book)
-{
-    int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook));
-    refresh_scroll_box(scroll_book, page_num, count);
-}
-
-static void
-pidgin_scroll_book_add(GtkContainer *container, GtkWidget *widget)
-{
-    PidginScrollBook *scroll_book;
-
-    g_return_if_fail(GTK_IS_WIDGET(widget));
-    g_return_if_fail(gtk_widget_get_parent(widget) == NULL);
-
-    scroll_book = PIDGIN_SCROLL_BOOK(container);
-    scroll_book->children = g_list_append(scroll_book->children, widget);
-    gtk_widget_show(widget);
-    gtk_notebook_append_page(GTK_NOTEBOOK(scroll_book->notebook), widget, NULL);
-    page_count_change_cb(PIDGIN_SCROLL_BOOK(container));
-}
-
-static void
-pidgin_scroll_book_remove(GtkContainer *container, GtkWidget *widget)
-{
-    g_return_if_fail(GTK_IS_WIDGET(widget));
-
-    PidginScrollBook *scroll_book = PIDGIN_SCROLL_BOOK(container);
-    scroll_book->children = g_list_remove(scroll_book->children, widget);
-
-    int page = gtk_notebook_page_num(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), widget);
-
-    if (page >= 0)
-        gtk_notebook_remove_page(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), page);
-}
-
-static void
-pidgin_scroll_book_forall(GtkContainer *container,
-                          gboolean include_internals,
-                          GtkCallback callback,
-                          gpointer callback_data)
-{
-    g_return_if_fail(GTK_IS_CONTAINER(container));
-
-    PidginScrollBook *scroll_book = PIDGIN_SCROLL_BOOK(container);
-
-    if (include_internals) {
-        (*callback)(scroll_book->hbox, callback_data);
-        (*callback)(scroll_book->notebook, callback_data);
-    }
-}
-
-static void
-pidgin_scroll_book_class_init(PidginScrollBookClass *klass)
-{
-    GtkContainerClass *container_class = (GtkContainerClass*) klass;
-
-    container_class->add = pidgin_scroll_book_add;
-    container_class->remove = pidgin_scroll_book_remove;
-    container_class->forall = pidgin_scroll_book_forall;
-}
-
-static gboolean
-close_button_left_cb(GtkWidget *widget UNUSED, GdkEventCrossing *event, GtkLabel *label)
-{
-    static GdkCursor *ptr = NULL;
-
-    if (ptr == NULL) {
-        ptr = gdk_cursor_new(GDK_LEFT_PTR);
-    }
-
-    gtk_label_set_markup(label, "×");
-    gdk_window_set_cursor(event->window, ptr);
-    return FALSE;
-}
-
-static gboolean
-close_button_entered_cb(GtkWidget *widget UNUSED, GdkEventCrossing *event, GtkLabel *label)
-{
-    static GdkCursor *hand = NULL;
-
-    if (hand == NULL) {
-        hand = gdk_cursor_new(GDK_HAND2);
-    }
-
-    gtk_label_set_markup(label, "<u>×</u>");
-    gdk_window_set_cursor(event->window, hand);
-    return FALSE;
-}
-
-static void
-pidgin_scroll_book_init(PidginScrollBook *scroll_book)
-{
-    GtkWidget *eb;
-    GtkWidget *close_button;
-
-    scroll_book->hbox = gtk_hbox_new(FALSE, 0);
-
-    /* Close */
-    eb = gtk_event_box_new();
-    gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0);
-    gtk_event_box_set_visible_window(GTK_EVENT_BOX(eb), FALSE);
-    gtk_widget_set_events(eb, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
-    close_button = gtk_label_new("×");
-    g_signal_connect(G_OBJECT(eb), "enter-notify-event", G_CALLBACK(close_button_entered_cb), close_button);
-    g_signal_connect(G_OBJECT(eb), "leave-notify-event", G_CALLBACK(close_button_left_cb), close_button);
-    gtk_container_add(GTK_CONTAINER(eb), close_button);
-    g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_close_cb), scroll_book);
-
-    /* Right arrow */
-    eb = gtk_event_box_new();
-    gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0);
-    scroll_book->right_arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
-    gtk_container_add(GTK_CONTAINER(eb), scroll_book->right_arrow);
-    g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_right_cb), scroll_book);
-
-    /* Count */
-    scroll_book->label = gtk_label_new(NULL);
-    gtk_box_pack_end(GTK_BOX(scroll_book->hbox), scroll_book->label, FALSE, FALSE, 0);
-
-    /* Left arrow */
-    eb = gtk_event_box_new();
-    gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0);
-    scroll_book->left_arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE);
-    gtk_container_add(GTK_CONTAINER(eb), scroll_book->left_arrow);
-    g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_left_cb), scroll_book);
-
-    gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->hbox, FALSE, FALSE, 0);
-
-    scroll_book->notebook = gtk_notebook_new();
-    gtk_notebook_set_show_tabs(GTK_NOTEBOOK(scroll_book->notebook), FALSE);
-    gtk_notebook_set_show_border(GTK_NOTEBOOK(scroll_book->notebook), FALSE);
-
-    gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0);
-
-    g_signal_connect_swapped(G_OBJECT(scroll_book->notebook), "remove", G_CALLBACK(page_count_change_cb), scroll_book);
-    g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book);
-    gtk_widget_show_all(scroll_book->notebook);
-}
-
-GtkWidget *
-pidgin_scroll_book_new()
-{
-    return g_object_new(PIDGIN_TYPE_SCROLL_BOOK, NULL);
-}
diff --git a/gnome/src/widget/gtkscrollbook.h b/gnome/src/widget/gtkscrollbook.h
deleted file mode 100644
index a012f7825923bb04a5ccf5a8e39eebfac2729627..0000000000000000000000000000000000000000
--- a/gnome/src/widget/gtkscrollbook.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * @file gtkscrollbook  GTK+ Scrolling notebook Widget
- * @ingroup pidgin
- */
-
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-
-#ifndef __PIDGIN_SCROLL_BOOK_H__
-#define __PIDGIN_SCROLL_BOOK_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PIDGIN_TYPE_SCROLL_BOOK             (pidgin_scroll_book_get_type ())
-#define PIDGIN_SCROLL_BOOK(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBook))
-#define PIDGIN_SCROLL_BOOK_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST ((vtable), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBookClass))
-#define PIDGIN_IS_SCROLL_BOOK(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_SCROLL_BOOK))
-#define PIDGIN_IS_SCROLL_BOOK_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), PIDGIN_TYPE_SCROLL_BOOK))
-#define PIDGIN_SCROLL_BOOK_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_CLASS ((inst), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBookClass))
-
-typedef struct _PidginScrollBook      PidginScrollBook;
-typedef struct _PidginScrollBookClass PidginScrollBookClass;
-
-struct _PidginScrollBook {
-    GtkVBox parent_instance;
-
-    GtkWidget *notebook;
-    GtkWidget *hbox;
-    GtkWidget *label;
-    GtkWidget *left_arrow;
-    GtkWidget *right_arrow;
-    GList *children;
-
-    /* Padding for future expansion */
-    void (*_gtk_reserved1) (void);
-    void (*_gtk_reserved2) (void);
-    void (*_gtk_reserved3) (void);
-
-};
-
-
-struct _PidginScrollBookClass {
-    GtkContainerClass parent_class;
-
-    /* Padding for future expansion */
-    void (*_gtk_reserved0) (void);
-    void (*_gtk_reserved1) (void);
-    void (*_gtk_reserved2) (void);
-    void (*_gtk_reserved3) (void);
-};
-
-
-GType         pidgin_scroll_book_get_type (void) G_GNUC_CONST;
-GtkWidget    *pidgin_scroll_book_new (void);
-
-G_END_DECLS
-
-#endif  /* __PIDGIN_SCROLL_BOOK_H__ */
diff --git a/gnome/src/widget/imwidget.c b/gnome/src/widget/imwidget.c
index 84e83adbe48cdfe6e6b85af5e3fa465f72e361b8..ce39d006f1825863d08bc7ba3233957d91a6244a 100644
--- a/gnome/src/widget/imwidget.c
+++ b/gnome/src/widget/imwidget.c
@@ -166,8 +166,8 @@ on_Textview_changed(GtkWidget *widget UNUSED, GdkEventKey *event, gpointer user_
     if (event->type == GDK_KEY_PRESS) {
 
         switch (event->keyval) {
-            case GDK_Return:
-            case GDK_KP_Enter:
+            case GDK_KEY_Return:
+            case GDK_KEY_KP_Enter:
 
                 /* We want to send the message on pressing ENTER */
                 if (gtk_text_buffer_get_char_count(buffer) != 0) {