From 11ccf17e8ab990cf78a8ed01108bb9a3b430b6c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?=
 <rafael.carre@savoirfairelinux.com>
Date: Thu, 22 Sep 2011 16:19:03 -0400
Subject: [PATCH] * #6902: migrate to GTK3

We need GTK3 to use the recent, non-broken clutter-gtk-1.0
Completely drop GTK2 compatibility

TODO: - help dialog
      - migrate to GSettings instead of gconf (not mandatory)
      - fix runtime warnings about the dynamic toolbar (hangup buttons etc)

Fallback on cairo for video display if clutter doesn't work
Use the same rgb format for clutter and cairo renderers (BGRA)
Fix a flaw in design (client needed to tell the daemon which format it needed)
---
 .../dbus/configurationmanager-introspec.xml   |   4 -
 daemon/src/dbus/configurationmanager.cpp      |   4 +-
 daemon/src/dbus/configurationmanager.h        |   2 +-
 daemon/src/video/test/test_video_preview.cpp  |   1 -
 daemon/src/video/video_receive_thread.cpp     |  20 +-
 daemon/src/video/video_receive_thread.h       |   1 -
 daemon/src/video/video_rtp_session.cpp        |   1 -
 gnome/configure.ac                            |   9 +-
 gnome/src/Makefile.am                         |  10 +-
 gnome/src/actions.c                           |  61 ++--
 gnome/src/callable_obj.c                      |  16 --
 gnome/src/callable_obj.h                      |  14 -
 gnome/src/config/Makefile.am                  |  15 +-
 gnome/src/config/accountconfigdialog.c        |  80 ++----
 gnome/src/config/accountlistconfigdialog.c    |   5 +-
 gnome/src/config/shortcuts-config.c           |   6 +-
 gnome/src/config/tlsadvanceddialog.c          |  22 +-
 gnome/src/config/videoconf.c                  |  90 +-----
 gnome/src/config/videoconf.h                  |   5 -
 gnome/src/contacts/Makefile.am                |   8 +-
 gnome/src/contacts/calltree.c                 |   3 +-
 gnome/src/contacts/searchbar.c                |  83 ++----
 gnome/src/dbus/Makefile.am                    |  10 +-
 .../dbus/configurationmanager-introspec.xml   |   4 -
 gnome/src/dbus/dbus.c                         |  10 +-
 gnome/src/dbus/dbus.h                         |   2 +-
 gnome/src/eel-gconf-extensions.c              |   4 +-
 gnome/src/icons/Makefile.am                   |   6 +-
 gnome/src/imwindow.c                          |   4 +-
 gnome/src/main.c                              |   9 +-
 gnome/src/mainwindow.c                        |  55 ++--
 gnome/src/sflnotify.c                         |   4 +-
 gnome/src/shortcuts.c                         | 182 +++++-------
 gnome/src/shortcuts.h                         |   4 -
 gnome/src/sliders.c                           |  15 +-
 gnome/src/statusicon.c                        |   5 +-
 gnome/src/uimanager.c                         |  28 +-
 gnome/src/video/video_renderer.c              | 136 +++++----
 gnome/src/video/video_renderer.h              |  10 +-
 gnome/src/widget/Makefile.am                  |  11 +-
 gnome/src/widget/gtkscrollbook.c              | 272 ------------------
 gnome/src/widget/gtkscrollbook.h              |  78 -----
 gnome/src/widget/imwidget.c                   |   4 +-
 gnome/tests/Makefile.am                       |   2 +-
 44 files changed, 363 insertions(+), 952 deletions(-)
 delete mode 100644 gnome/src/widget/gtkscrollbook.c
 delete mode 100644 gnome/src/widget/gtkscrollbook.h

diff --git a/daemon/src/dbus/configurationmanager-introspec.xml b/daemon/src/dbus/configurationmanager-introspec.xml
index eb6c41ce0e..1b1a618096 100755
--- a/daemon/src/dbus/configurationmanager-introspec.xml
+++ b/daemon/src/dbus/configurationmanager-introspec.xml
@@ -936,10 +936,6 @@
                <tp:docstring>
                </tp:docstring>
            </arg>
-           <arg type="s" name="format" direction="in">
-               <tp:docstring>
-               </tp:docstring>
-           </arg>
            <arg type="i" name="shmKey" direction="out">
                <tp:docstring>
                </tp:docstring>
diff --git a/daemon/src/dbus/configurationmanager.cpp b/daemon/src/dbus/configurationmanager.cpp
index 13dd8d0a09..fabb6ba488 100644
--- a/daemon/src/dbus/configurationmanager.cpp
+++ b/daemon/src/dbus/configurationmanager.cpp
@@ -573,7 +573,7 @@ void ConfigurationManager::setCredentials (const std::string& accountID,
 }
 
 
-void ConfigurationManager::startVideoPreview(const int32_t &width, const int32_t &height, const std::string &fmt, int32_t &shmKey, int32_t &semKey, int32_t &videoBufferSize)
+void ConfigurationManager::startVideoPreview(const int32_t &width, const int32_t &height, int32_t &shmKey, int32_t &semKey, int32_t &videoBufferSize)
 {
     if (preview_.get()) {
         _error("Video preview was already started!");
@@ -583,7 +583,6 @@ void ConfigurationManager::startVideoPreview(const int32_t &width, const int32_t
         return;
     }
 
-    _debug("Starting video preview");
     using std::map;
     using std::string;
 
@@ -593,7 +592,6 @@ void ConfigurationManager::startVideoPreview(const int32_t &width, const int32_t
 	args["width"] = ssWidth.str();
 	ssHeight << height;
     args["height"] = ssHeight.str();
-    args["format"] = fmt;
 
     preview_.reset(new sfl_video::VideoPreview(args));
     preview_->start();
diff --git a/daemon/src/dbus/configurationmanager.h b/daemon/src/dbus/configurationmanager.h
index 3d19878a2c..4ce60449f1 100644
--- a/daemon/src/dbus/configurationmanager.h
+++ b/daemon/src/dbus/configurationmanager.h
@@ -167,7 +167,7 @@ class ConfigurationManager
         std::map< std::string, std::string > getShortcuts ();
         void setShortcuts (const std::map< std::string, std::string >& shortcutsMap);
 
-        void startVideoPreview(const int32_t &width, const int32_t &height, const std::string &fmt, int32_t &shmKey, int32_t &semKey, int32_t &videoBufferSize);
+        void startVideoPreview(const int32_t &width, const int32_t &height, int32_t &shmKey, int32_t &semKey, int32_t &videoBufferSize);
         void stopVideoPreview();
 };
 
diff --git a/daemon/src/video/test/test_video_preview.cpp b/daemon/src/video/test/test_video_preview.cpp
index 66e34e4481..6a9e6d8e21 100644
--- a/daemon/src/video/test/test_video_preview.cpp
+++ b/daemon/src/video/test/test_video_preview.cpp
@@ -40,7 +40,6 @@ void VideoPreviewTest::testPreview()
 {
     std::map<std::string, std::string> args;
     args["input"] = "/dev/video0";
-    args["format"] = "rgb24";
     args["width"] = "640";
     args["height"] = "480";
 
diff --git a/daemon/src/video/video_receive_thread.cpp b/daemon/src/video/video_receive_thread.cpp
index 9ab10de29b..e28eb51420 100644
--- a/daemon/src/video/video_receive_thread.cpp
+++ b/daemon/src/video/video_receive_thread.cpp
@@ -55,6 +55,8 @@ extern "C" {
 #include "video_picture.h"
 #include "fileutils.h"
 
+static const enum PixelFormat video_rgb_format = PIX_FMT_BGRA;
+
 namespace sfl_video {
 
 namespace { // anonymouse namespace
@@ -224,13 +226,6 @@ void VideoReceiveThread::setup()
 {
     dstWidth_ = atoi(args_["width"].c_str());
     dstHeight_ = atoi(args_["height"].c_str());
-    format_ = av_get_pix_fmt(args_["format"].c_str());
-    if (format_ == -1)
-    {
-        _error("%s:Couldn't find a pixel format for \"%s\"",
-                __PRETTY_FUNCTION__, args_["format"].c_str());
-        ost::Thread::exit();
-    }
 
     AVInputFormat *file_iformat = 0;
 
@@ -331,7 +326,7 @@ void VideoReceiveThread::setup()
     }
 
     // determine required buffer size and allocate buffer
-    videoBufferSize_ = bufferSize(dstWidth_, dstHeight_, format_);
+    videoBufferSize_ = bufferSize(dstWidth_, dstHeight_, video_rgb_format);
 
     // create shared memory segment and attach to it
     shmID_ = createShm(videoBufferSize_, &shmKey_);
@@ -366,7 +361,7 @@ void VideoReceiveThread::createScalingContext()
     // Create scaling context, no scaling done here
     imgConvertCtx_ = sws_getCachedContext(imgConvertCtx_, decoderCtx_->width,
             decoderCtx_->height, decoderCtx_->pix_fmt, dstWidth_,
-            dstHeight_, (enum PixelFormat) format_, SWS_BICUBIC,
+            dstHeight_, video_rgb_format, SWS_BICUBIC,
             NULL, NULL, NULL);
     if (imgConvertCtx_ == 0)
     {
@@ -397,7 +392,6 @@ VideoReceiveThread::VideoReceiveThread(const std::map<std::string, std::string>
 void VideoReceiveThread::run()
 {
     setup();
-    enum PixelFormat fmt = (enum PixelFormat) format_;
 
     if (!test_source_)
         createScalingContext();
@@ -424,7 +418,7 @@ void VideoReceiveThread::run()
                 goto next_packet;
 
             avpicture_fill(reinterpret_cast<AVPicture *>(scaledPicture_),
-                    reinterpret_cast<uint8_t*>(shmBuffer_), fmt, dstWidth_, dstHeight_);
+                    reinterpret_cast<uint8_t*>(shmBuffer_), video_rgb_format, dstWidth_, dstHeight_);
 
             sws_scale(imgConvertCtx_, rawFrame_->data, rawFrame_->linesize,
                     0, decoderCtx_->height, scaledPicture_->data,
@@ -434,8 +428,8 @@ void VideoReceiveThread::run()
         {
             // assign appropriate parts of buffer to image planes in scaledPicture
             avpicture_fill(reinterpret_cast<AVPicture *>(scaledPicture_),
-                    reinterpret_cast<uint8_t*>(shmBuffer_), fmt, dstWidth_, dstHeight_);
-            const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[format_];
+                    reinterpret_cast<uint8_t*>(shmBuffer_), video_rgb_format, dstWidth_, dstHeight_);
+            const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[video_rgb_format];
             int components = pixdesc->nb_components;
             int planes = 0;
             for (int i = 0; i < components; i++)
diff --git a/daemon/src/video/video_receive_thread.h b/daemon/src/video/video_receive_thread.h
index 4d8d2a95f9..c3fdc2e688 100644
--- a/daemon/src/video/video_receive_thread.h
+++ b/daemon/src/video/video_receive_thread.h
@@ -68,7 +68,6 @@ class VideoReceiveThread : public ost::Thread {
 
         int dstWidth_;
         int dstHeight_;
-        int format_;
 
         void setup();
         void createScalingContext();
diff --git a/daemon/src/video/video_rtp_session.cpp b/daemon/src/video/video_rtp_session.cpp
index 0caa8b6afe..ebafdc9bb9 100644
--- a/daemon/src/video/video_rtp_session.cpp
+++ b/daemon/src/video/video_rtp_session.cpp
@@ -48,7 +48,6 @@ VideoRtpSession::VideoRtpSession() : sending_(true), receiving_(true)
 {
     txArgs_ = Manager::instance().videoPreference.getVideoSettings();
     txArgs_["bitrate"] = "500000";
-    rxArgs_["format"]  = "rgb24";
 }
 
 VideoRtpSession::VideoRtpSession(const std::map<std::string, std::string> &txArgs,
diff --git a/gnome/configure.ac b/gnome/configure.ac
index 9fa4ed843a..9f11878f82 100644
--- a/gnome/configure.ac
+++ b/gnome/configure.ac
@@ -27,12 +27,11 @@ AC_DEFINE_UNQUOTED(SFLPHONE_UIDIR_UNINSTALLED, "`pwd`/src/",
 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(CLUTTER, clutter-1.0)
-PKG_CHECK_MODULES(CLUTTERGTK, clutter-gtk-0.10)
-PKG_CHECK_MODULES(GTK, gtk+-2.0 > 2.20)
+PKG_CHECK_MODULES(CLUTTERGTK, clutter-gtk-1.0)
+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
diff --git a/gnome/src/Makefile.am b/gnome/src/Makefile.am
index a1670ad0a7..9909fcec78 100644
--- a/gnome/src/Makefile.am
+++ b/gnome/src/Makefile.am
@@ -28,8 +28,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 \
@@ -37,12 +37,12 @@ noinst_HEADERS =  actions.h sflnotify.h mainwindow.h dialpad.h codeclist.h \
                   shortcuts.h eel-gconf-extensions.h logger.h imwindow.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) $(GTK_CFLAGS) $(X11_CFLAGS) \
-                                $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) $(GNOMEDOCUTILS_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/actions.c b/gnome/src/actions.c
index ac7c7fe1a6..cb2db07370 100644
--- a/gnome/src/actions.c
+++ b/gnome/src/actions.c
@@ -30,12 +30,7 @@
  */
 
 #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 <glib/gprintf.h>
 #include <stdlib.h>
 #include <string.h>
@@ -217,7 +212,6 @@ sflphone_hung_up (callable_obj_t * c)
     calllist_remove_call (current_calls, c->_callID);
     calltree_remove_call (current_calls, c, NULL);
     c->_state = CALL_STATE_DIALING;
-    call_remove_all_errors (c);
     update_actions();
 
     if(c->_confID) {
@@ -373,7 +367,6 @@ sflphone_hang_up()
                 break;
             case CALL_STATE_RINGING:
                 dbus_hang_up (selectedCall);
-                call_remove_all_errors (selectedCall);
                 selectedCall->_state = CALL_STATE_DIALING;
                 //selectedCall->_stop = 0;
                 break;
@@ -382,7 +375,6 @@ sflphone_hang_up()
             case CALL_STATE_BUSY:
             case CALL_STATE_RECORD:
                 dbus_hang_up (selectedCall);
-                call_remove_all_errors (selectedCall);
                 selectedCall->_state = CALL_STATE_DIALING;
                 time (&selectedCall->_time_stop);
 
@@ -391,18 +383,15 @@ sflphone_hang_up()
                 break;
             case CALL_STATE_FAILURE:
                 dbus_hang_up (selectedCall);
-                call_remove_all_errors (selectedCall);
                 selectedCall->_state = CALL_STATE_DIALING;
                 break;
             case CALL_STATE_INCOMING:
                 dbus_refuse (selectedCall);
-                call_remove_all_errors (selectedCall);
                 selectedCall->_state = CALL_STATE_DIALING;
                 DEBUG ("from sflphone_hang_up : ");
                 break;
             case CALL_STATE_TRANSFER:
                 dbus_hang_up (selectedCall);
-                call_remove_all_errors (selectedCall);
                 time (&selectedCall->_time_stop);
                 break;
             default:
@@ -612,14 +601,14 @@ process_dialing (callable_obj_t *c, guint keyval, gchar *key)
         dbus_start_tone (FALSE, 0);
 
     switch (keyval) {
-        case GDK_Return:
-        case GDK_KP_Enter:
+        case GDK_KEY_Return:
+        case GDK_KEY_KP_Enter:
             sflphone_place_call (c);
             break;
-        case GDK_Escape:
+        case GDK_KEY_Escape:
             sflphone_hang_up ();
             break;
-        case GDK_BackSpace:
+        case GDK_KEY_BackSpace:
         {
             gchar *num = (c->_state == CALL_STATE_TRANSFER) ? c->_trsft_to : c->_peer_number;
             size_t len = strlen(num);
@@ -634,16 +623,16 @@ process_dialing (callable_obj_t *c, guint keyval, gchar *key)
             }
             break;
         }
-        case GDK_Tab:
-        case GDK_Alt_L:
-        case GDK_Control_L:
-        case GDK_Super_L:
-        case GDK_Caps_Lock:
+        case GDK_KEY_Tab:
+        case GDK_KEY_Alt_L:
+        case GDK_KEY_Control_L:
+        case GDK_KEY_Super_L:
+        case GDK_KEY_Caps_Lock:
             break;
         default:
 
             if (keyval < 127 /* ascii */ ||
-               (keyval >= GDK_Mode_switch && keyval <= GDK_KP_9) /* num keypad */) {
+               (keyval >= GDK_KEY_Mode_switch && keyval <= GDK_KEY_KP_9) /* num keypad */) {
 
                 if (c->_state == CALL_STATE_TRANSFER) {
                     gchar *new_trsft = g_strconcat (c->_trsft_to, key, NULL);
@@ -695,10 +684,10 @@ sflphone_keypad (guint keyval, gchar * key)
 
     if ( (active_calltree != current_calls) || (active_calltree == current_calls && !c)) {
         switch (keyval) {
-            case GDK_Return:
-            case GDK_KP_Enter:
-            case GDK_Escape:
-            case GDK_BackSpace:
+            case GDK_KEY_Return:
+            case GDK_KEY_KP_Enter:
+            case GDK_KEY_Escape:
+            case GDK_KEY_BackSpace:
                 break;
             default:
                 calltree_display (current_calls);
@@ -714,7 +703,7 @@ sflphone_keypad (guint keyval, gchar * key)
             case CALL_STATE_CURRENT:
 
                 switch (keyval) {
-                    case GDK_Escape:
+                    case GDK_KEY_Escape:
                         dbus_hang_up (c);
                         time (&c->_time_stop);
                         calltree_update_call (history, c, NULL);
@@ -729,13 +718,13 @@ sflphone_keypad (guint keyval, gchar * key)
             case CALL_STATE_INCOMING:
 
                 switch (keyval) {
-                    case GDK_Return:
-                    case GDK_KP_Enter:
+                    case GDK_KEY_Return:
+                    case GDK_KEY_KP_Enter:
                         c->_history_state = INCOMING;
                         calltree_update_call (history, c, NULL);
                         dbus_accept (c);
                         break;
-                    case GDK_Escape:
+                    case GDK_KEY_Escape:
                         dbus_refuse (c);
                         break;
                 }
@@ -744,13 +733,13 @@ sflphone_keypad (guint keyval, gchar * key)
             case CALL_STATE_TRANSFER:
 
                 switch (keyval) {
-                    case GDK_Return:
-                    case GDK_KP_Enter:
+                    case GDK_KEY_Return:
+                    case GDK_KEY_KP_Enter:
                         dbus_transfer (c);
                         time (&c->_time_stop);
                         calltree_remove_call(current_calls, c, NULL);
                         break;
-                    case GDK_Escape:
+                    case GDK_KEY_Escape:
                         sflphone_unset_transfer ();
                         break;
                     default: // When a call is on transfer, typing new numbers will add it to c->_peer_number
@@ -762,11 +751,11 @@ sflphone_keypad (guint keyval, gchar * key)
             case CALL_STATE_HOLD:
 
                 switch (keyval) {
-                    case GDK_Return:
-                    case GDK_KP_Enter:
+                    case GDK_KEY_Return:
+                    case GDK_KEY_KP_Enter:
                         dbus_unhold (c);
                         break;
-                    case GDK_Escape:
+                    case GDK_KEY_Escape:
                         dbus_hang_up (c);
                         break;
                     default: // When a call is on hold, typing new numbers will create a new call
@@ -780,7 +769,7 @@ sflphone_keypad (guint keyval, gchar * key)
             case CALL_STATE_FAILURE:
 
                 switch (keyval) {
-                    case GDK_Escape:
+                    case GDK_KEY_Escape:
                         dbus_hang_up (c);
                         calltree_update_call (history, c, NULL);
                         break;
diff --git a/gnome/src/callable_obj.c b/gnome/src/callable_obj.c
index b4bf453d8f..9cb3ea0fc8 100644
--- a/gnome/src/callable_obj.c
+++ b/gnome/src/callable_obj.c
@@ -95,21 +95,6 @@ out:
     return ret;
 }
 
-void call_add_error (callable_obj_t * call, gpointer dialog)
-{
-    g_ptr_array_add (call->_error_dialogs, dialog);
-}
-
-void call_remove_error (callable_obj_t * call, gpointer dialog)
-{
-    g_ptr_array_remove (call->_error_dialogs, dialog);
-}
-
-void call_remove_all_errors (callable_obj_t * call)
-{
-    g_ptr_array_foreach (call->_error_dialogs, (GFunc) gtk_widget_destroy, NULL);
-}
-
 callable_obj_t *create_new_call (callable_type_t type, call_state_t state,
                       const gchar* const callID,
                       const gchar* const accountID,
@@ -120,7 +105,6 @@ callable_obj_t *create_new_call (callable_type_t type, call_state_t state,
 
     callable_obj_t *obj = g_new0 (callable_obj_t, 1);
 
-    obj->_error_dialogs = g_ptr_array_new();
     obj->_type = type;
     obj->_state = state;
     obj->_callID = *callID ? g_strdup (callID) : g_strdup_printf("%d", rand());
diff --git a/gnome/src/callable_obj.h b/gnome/src/callable_obj.h
index fb03aa31d0..07be3e5ff2 100644
--- a/gnome/src/callable_obj.h
+++ b/gnome/src/callable_obj.h
@@ -138,14 +138,6 @@ typedef struct  {
      */
     GdkPixbuf *_contact_thumbnail;
 
-    /**
-     * Maintains a list of error dialogs
-     * associated with that call so that
-     * they could be destroyed at the right
-     * moment.
-     */
-    GPtrArray * _error_dialogs;
-
     /**
      * The recording file for this call, if NULL, no recording available
      * Should be used only for history items
@@ -170,12 +162,6 @@ callable_obj_t *create_new_call_from_details (const gchar *, GHashTable *);
 
 callable_obj_t *create_history_entry_from_serialized_form (const gchar *);
 
-void call_add_error (callable_obj_t * call, gpointer dialog);
-
-void call_remove_error (callable_obj_t * call, gpointer dialog);
-
-void call_remove_all_errors (callable_obj_t * call);
-
 /*
  * GCompareFunc to compare a callID (gchar* and a callable_obj_t)
  */
diff --git a/gnome/src/config/Makefile.am b/gnome/src/config/Makefile.am
index f11a89bb6c..ec61feef57 100644
--- a/gnome/src/config/Makefile.am
+++ b/gnome/src/config/Makefile.am
@@ -27,14 +27,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)  @CLUTTER_LIBS@
+libconfig_la_LDFLAGS = $(DBUSGLIB_LDFLAGS) $(LIBNOTIFY_LDFLAGS) $(GCONF_LDFLAGS) \
+			$(GTK_LDFLAGS) $(GLIB_LDFLAGS) $(WEBKIT_LDFLAGS) @CLUTTER_LIBS@
 
-libconfig_la_LIBADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBSI) \
-			$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) $(LIBGNOMEUI_LIBS) \
-			$(GNOMEDOCUTILS_LIBS)  @CLUTTER_LIBS@
+libconfig_la_LIBADD = $(DBUSGLIB_LIBS) $(LIBNOTIFY_LIBS) $(GCONF_LIBS) \
+			$(GTK_LIBS) $(GLIB_LIBS) $(WEBKIT_LIBS) @CLUTTER_LIBS@
 
-libconfig_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) \
-			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) $(LIBGNOMEUI_CFLAGS) \
-			$(GNOMEDOCUTILS_CFLAGS) @CLUTTER_CFLAGS@
\ No newline at end of file
+libconfig_la_CFLAGS = $(DBUSGLIB_CFLAGS) $(LIBNOTIFY_CFLAGS) $(GCONF_CFLAGS) \
+			$(GTK_CFLAGS) $(GLIB_CFLAGS) $(WEBKIT_CFLAGS) @CLUTTER_CFLAGS@
diff --git a/gnome/src/config/accountconfigdialog.c b/gnome/src/config/accountconfigdialog.c
index decd58bbf9..51bd15e2c5 100644
--- a/gnome/src/config/accountconfigdialog.c
+++ b/gnome/src/config/accountconfigdialog.c
@@ -132,7 +132,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) {
@@ -258,12 +258,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 +272,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);
     }
 
@@ -458,7 +458,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);
     else
@@ -475,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;
@@ -566,7 +566,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);
@@ -628,7 +628,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);
@@ -776,11 +776,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);
@@ -885,49 +885,26 @@ 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_text(GTK_COMBO_BOX_TEXT(localAddressCombo), *iface);
+
+        if (g_strcmp0(*iface, local_interface) == 0)
+            gtk_combo_box_set_active(GTK_COMBO_BOX(localAddressCombo), idx);
     }
 
-    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;
@@ -935,12 +912,11 @@ GtkWidget* create_network(account_t *a)
 
     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);
@@ -1279,7 +1255,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");
 
@@ -1319,7 +1295,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");
 
@@ -1395,7 +1371,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);
@@ -1414,7 +1390,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"));
@@ -1445,7 +1421,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 78724bda7f..586f4a03e1 100644
--- a/gnome/src/config/accountlistconfigdialog.c
+++ b/gnome/src/config/accountlistconfigdialog.c
@@ -37,7 +37,6 @@
 #include "mainwindow.h"
 #include "utils.h"
 #include <string.h>
-#include <libgnome/gnome-help.h>
 
 #define CONTEXT_ID_REGISTRATION 0
 
@@ -363,6 +362,8 @@ static void
 help_contents_cb (GtkWidget * widget UNUSED,
                   gpointer data UNUSED)
 {
+#warning FIXME : port to GTK3
+/*
     GError *error = NULL;
 
     gnome_help_display ("sflphone.xml", "accounts", &error);
@@ -372,6 +373,7 @@ help_contents_cb (GtkWidget * widget UNUSED,
 
         g_error_free (error);
     }
+    */
 }
 
 static void
@@ -602,7 +604,6 @@ 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);
 
diff --git a/gnome/src/config/shortcuts-config.c b/gnome/src/config/shortcuts-config.c
index 71d475b8dd..21d9cad735 100644
--- a/gnome/src/config/shortcuts-config.c
+++ b/gnome/src/config/shortcuts-config.c
@@ -63,7 +63,7 @@ accel_edited (GtkCellRendererAccel *renderer UNUSED, gchar *path, guint accel_ke
 
     Accelerator* list = shortcuts_get_list ();
     model = gtk_tree_view_get_model (treeview);
-    guint code = XKeysymToKeycode (GDK_DISPLAY(), accel_key);
+    guint code = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), accel_key);
 
     // Disable existing binding if key already used
     int i = 0;
@@ -141,8 +141,8 @@ create_shortcuts_settings ()
     while (list[i].action != NULL) {
         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);
+                            (gint) list[i].mask, VALUE, 
+                            XKeycodeToKeysym (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), list[i].key, 0), -1);
         i++;
     }
 
diff --git a/gnome/src/config/tlsadvanceddialog.c b/gnome/src/config/tlsadvanceddialog.c
index 8e929819a7..c29899797d 100644
--- a/gnome/src/config/tlsadvanceddialog.c
+++ b/gnome/src/config/tlsadvanceddialog.c
@@ -183,34 +183,28 @@ void show_advanced_tls_options (GHashTable * properties)
     gtk_table_attach (GTK_TABLE (table), privateKeyPasswordEntry, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
     /* TLS protocol methods */
-    GtkTreeIter iter;
-
-    GtkListStore * tlsProtocolMethodListStore =  gtk_list_store_new (1, G_TYPE_STRING);
     label = gtk_label_new_with_mnemonic (_ ("TLS protocol method"));
     gtk_table_attach (GTK_TABLE (table), label, 0, 1, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
     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;
+    GtkWidget *tlsProtocolMethodCombo = gtk_combo_box_text_new();
 
-    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);
+    gchar** supported_tls_method = dbus_get_supported_tls_method();
+    int idx = 0;
+    for (char **method = supported_tls_method; method && *method; method++, idx++) {
+        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(tlsProtocolMethodCombo), *method);
 
-        if (g_strcmp0 (*supported_tls_method_ptr, tls_method) == 0)
-            supported_tls_method_iter = iter;
+        if (g_strcmp0 (*method, tls_method) == 0)
+            gtk_combo_box_set_active(GTK_COMBO_BOX(tlsProtocolMethodCombo), idx);
     }
 
-    GtkWidget *tlsProtocolMethodCombo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (tlsProtocolMethodListStore));
     gtk_label_set_mnemonic_widget (GTK_LABEL (label), tlsProtocolMethodCombo);
     gtk_table_attach (GTK_TABLE (table), tlsProtocolMethodCombo, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-    g_object_unref (G_OBJECT (tlsProtocolMethodListStore));
 
     GtkCellRenderer *tlsProtocolMethodCellRenderer;
     tlsProtocolMethodCellRenderer = gtk_cell_renderer_text_new();
     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tlsProtocolMethodCombo), tlsProtocolMethodCellRenderer, TRUE);
     gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tlsProtocolMethodCombo), tlsProtocolMethodCellRenderer, "text", 0, NULL);
-    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (tlsProtocolMethodCombo), &supported_tls_method_iter);
 
     /* Cipher list */
     GtkWidget * cipherListEntry;
@@ -287,7 +281,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/config/videoconf.c b/gnome/src/config/videoconf.c
index 13e1198e67..53da10fa85 100644
--- a/gnome/src/config/videoconf.c
+++ b/gnome/src/config/videoconf.c
@@ -54,17 +54,12 @@ static GtkListStore *v4l2RateList;
 static GtkWidget *v4l2_hbox;
 static GtkWidget *v4l2_nodev;
 
-static GtkWidget *receivingVideoWindow;
-static GtkWidget *receivingVideoArea;
-static VideoRenderer *video_renderer = NULL;
-
 static GtkWidget *preview_button = NULL;
 
 static GtkWidget *drawarea = NULL;
 static int using_clutter;
 static int drawWidth  = 352; // FIXME: should come from dbus signals
 static int drawHeight = 288;
-static const char *drawFormat;
 static VideoRenderer *preview = NULL;
 
 static GtkWidget *codecTreeView;		// View used instead of store to get access to selection
@@ -141,7 +136,7 @@ video_started_cb(DBusGProxy *proxy, gint OUT_shmId, gint OUT_semId, gint OUT_vid
     }
 
     DEBUG("Preview started shm:%d sem:%d size:%d", OUT_shmId, OUT_semId, OUT_videoBufferSize);
-    preview = video_renderer_new(drawarea, drawWidth, drawHeight, drawFormat, OUT_shmId, OUT_semId, OUT_videoBufferSize);
+    preview = video_renderer_new(drawarea, drawWidth, drawHeight, OUT_shmId, OUT_semId, OUT_videoBufferSize);
     g_signal_connect (preview, "notify::running", G_CALLBACK (preview_is_running_cb), preview_button);
     if (video_renderer_run(preview)) {
         ERROR("Video preview run returned an error, unreffing\n");
@@ -154,13 +149,8 @@ preview_button_clicked(GtkButton *button, gpointer data UNUSED)
 {
     preview_button = GTK_WIDGET(button);
     if (g_strcmp0(gtk_button_get_label(button), _("_Start")) == 0) {
-
-        static const char *formats[2] = { "rgb24", "bgra" };
-
-        drawFormat = using_clutter ? formats[0] : formats[1];
-        dbus_start_video_preview(drawWidth, drawHeight, drawFormat);
-    }
-    else { /* user clicked stop */
+        dbus_start_video_preview(drawWidth, drawHeight);
+    } else { /* user clicked stop */
         if (!preview) /* preview was not created yet on the server */
             return ;
         video_renderer_stop(preview);
@@ -655,7 +645,7 @@ static void fill_devices(void)
         gtk_widget_show_all(v4l2_hbox);
         gtk_widget_hide(v4l2_nodev);
     } else {
-        gtk_widget_hide_all(v4l2_hbox);
+        gtk_widget_hide(v4l2_hbox);
         gtk_widget_show(v4l2_nodev);
     }
 }
@@ -665,74 +655,6 @@ void video_device_event_cb(DBusGProxy *proxy UNUSED, void * foo  UNUSED)
     fill_devices();
 }
 
-static void receiving_video_window_deleted_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
-{
-    sflphone_hang_up();
-}
-
-
-// FIXME: Should not be in config, also only handling clutter case for now
-void receiving_video_event_cb(DBusGProxy *proxy, gint shmKey, gint semKey,
-                              gint videoBufferSize, gint destWidth,
-                              gint destHeight, GError *error, gpointer userdata)
-{
-    if (!receivingVideoWindow) {
-        receivingVideoWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-        g_signal_connect (receivingVideoWindow, "delete-event", G_CALLBACK (receiving_video_window_deleted_cb), NULL);
-    }
-
-    (void)proxy;
-    (void)error;
-    (void)userdata;
-    gboolean using_clutter = clutter_init(NULL, NULL) == CLUTTER_INIT_SUCCESS;
-    g_assert(using_clutter);
-
-    if (!receivingVideoArea) {
-        receivingVideoArea = gtk_clutter_embed_new();
-        gtk_container_add(GTK_CONTAINER(receivingVideoWindow), receivingVideoArea);
-    }
-    g_assert(receivingVideoArea);
-    g_assert(gtk_clutter_embed_get_stage(GTK_CLUTTER_EMBED(receivingVideoArea)));
-
-    if (shmKey == -1 || semKey == -1 || videoBufferSize == -1)
-        return;
-
-    gtk_widget_set_size_request (receivingVideoArea, destWidth, destHeight);
-    gtk_widget_show_all(receivingVideoWindow);
-
-    drawFormat = "rgb24";
-    DEBUG("Video started for shm:%d sem:%d bufferSz:%d width:%d height:%d",
-           shmKey, semKey, videoBufferSize, destWidth, destHeight);
-
-    video_renderer = video_renderer_new(receivingVideoArea, destWidth, destHeight, drawFormat, shmKey, semKey, videoBufferSize);
-    g_assert(video_renderer);
-    if (video_renderer_run(video_renderer)) {
-        g_object_unref(video_renderer);
-        video_renderer = NULL;
-        DEBUG("Could not run video renderer");
-    }
-    else
-        DEBUG("Running video renderer");
-}
-
-// FIXME: Should not be in config, only doing clutter case for now
-void stopped_receiving_video_event_cb(DBusGProxy *proxy, gint shmKey, gint semKey, GError *error, gpointer userdata)
-{
-    (void)proxy;
-    (void)error;
-    (void)userdata;
-
-    DEBUG("Video stopped for shm:%d sem:%d", shmKey, semKey);
-
-    if (video_renderer) {
-        if (receivingVideoWindow) {
-            if (GTK_IS_WIDGET(receivingVideoWindow))
-                    gtk_widget_destroy(receivingVideoWindow);
-            receivingVideoArea = receivingVideoWindow = NULL;
-        }
-        video_renderer = NULL;
-    }
-}
 
 
 static GtkWidget* v4l2_box ()
@@ -883,10 +805,6 @@ GtkWidget* create_video_configuration()
     }
     if (!using_clutter) 
         drawarea = gtk_drawing_area_new();
-
-    GdkWindow *win = gtk_widget_get_window(drawarea);
-    if (win && GDK_IS_WINDOW(win))
-        gdk_window_clear(win);
     g_signal_connect(drawarea, "unrealize", G_CALLBACK(on_drawarea_unrealize),
             NULL);
     gtk_widget_set_size_request (drawarea, drawWidth, drawHeight);
diff --git a/gnome/src/config/videoconf.h b/gnome/src/config/videoconf.h
index 27168d9b0e..0521712095 100644
--- a/gnome/src/config/videoconf.h
+++ b/gnome/src/config/videoconf.h
@@ -38,10 +38,5 @@ GtkWidget* create_video_configuration();
 GtkWidget* videocodecs_box();
 void video_started_cb(DBusGProxy *proxy, gint OUT_shmId, gint OUT_semId, gint OUT_videoBufferSize, GError *error, gpointer userdata);
 void video_device_event_cb(DBusGProxy *proxy UNUSED, void * foo  UNUSED);
-void receiving_video_event_cb(DBusGProxy *proxy, gint shmId, gint semId,
-                              gint videoBufferSize, gint destWidth,
-                              gint destHeight, GError *error,
-                              gpointer userdata);
-void stopped_receiving_video_event_cb(DBusGProxy *proxy, gint shmId, gint semId, GError *error, gpointer userdata);
 
 #endif // __VIDEO_CONF_H__
diff --git a/gnome/src/contacts/Makefile.am b/gnome/src/contacts/Makefile.am
index b6fc155e2d..e7bc5965f2 100644
--- a/gnome/src/contacts/Makefile.am
+++ b/gnome/src/contacts/Makefile.am
@@ -20,9 +20,9 @@ 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) \
+                $(GCONF_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/calltree.c b/gnome/src/contacts/calltree.c
index 1953698af1..761ca417c2 100644
--- a/gnome/src/contacts/calltree.c
+++ b/gnome/src/contacts/calltree.c
@@ -33,7 +33,8 @@
 #include <calltree.h>
 #include <stdlib.h>
 #include <glib/gprintf.h>
-#include <eel-gconf-extensions.h>
+#include "eel-gconf-extensions.h"
+
 
 #include "dbus.h"
 #include "calllist.h"
diff --git a/gnome/src/contacts/searchbar.c b/gnome/src/contacts/searchbar.c
index 16c39b384e..44d138e6c8 100644
--- a/gnome/src/contacts/searchbar.c
+++ b/gnome/src/contacts/searchbar.c
@@ -35,7 +35,6 @@
 #include <calltree.h>
 #include <config/addressbook-config.h>
 #include <contacts/addressbook.h>
-// #include <contacts/addressbook/eds.h>
 #include <contacts/addrbookfactory.h>
 
 GtkWidget * searchbox;
@@ -74,12 +73,12 @@ void searchbar_entry_changed (GtkEntry* entry UNUSED, gchar* arg1 UNUSED, gpoint
     }
 }
 
-static void cbox_changed_cb (GtkWidget *widget, gpointer user_data UNUSED)
+static void cbox_changed_cb (GtkComboBox *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);
 }
@@ -107,14 +106,12 @@ 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);
+    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) {
-
+    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);
 
@@ -145,40 +142,36 @@ void update_searchbar_addressbook_list()
         }
         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)));
+            gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(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 (GTK_COMBO_BOX(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)));
-
-        gtk_entry_set_icon_tooltip_text (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY,
-                                     gtk_menu_item_get_label (GTK_MENU_ITEM (item)));
+    if(!addrbook)
+        return;
 
+    gtk_entry_set_icon_tooltip_text (GTK_ENTRY (addressbookentry), GTK_ENTRY_ICON_PRIMARY,
+                                 gtk_menu_item_get_label (GTK_MENU_ITEM (item)));
 
-        if (g_strcmp0 ("Search is", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
-            addrbook->set_search_type(ABOOK_QUERY_IS);
-        }
-        else if (g_strcmp0 ("Search begins with", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
-            addrbook->set_search_type(ABOOK_QUERY_BEGINS_WITH);
-        }
-        else if (g_strcmp0 ("Search contains", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
-            addrbook->set_search_type(ABOOK_QUERY_CONTAINS);
-        }
-  
-        AddressBook_Config *addressbook_config = addressbook_config_load_parameters();
-        addrbook->search (addrbook->search_cb, GTK_ENTRY (addressbookentry), addressbook_config);
+    if (g_strcmp0 ("Search is", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
+        addrbook->set_search_type(ABOOK_QUERY_IS);
+    }
+    else if (g_strcmp0 ("Search begins with", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
+        addrbook->set_search_type(ABOOK_QUERY_BEGINS_WITH);
+    }
+    else if (g_strcmp0 ("Search contains", gtk_menu_item_get_label (GTK_MENU_ITEM (item))) == 0) {
+        addrbook->set_search_type(ABOOK_QUERY_CONTAINS);
     }
 
+    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)
@@ -247,25 +240,18 @@ static void icon_press_cb (GtkEntry *entry, gint position, GdkEventButton *event
 
 static void text_changed_cb (GtkEntry *entry, GParamSpec *pspec UNUSED)
 {
-    gboolean has_text;
-
-    has_text = gtk_entry_get_text_length (entry) > 0;
-    gtk_entry_set_icon_sensitive (entry, GTK_ENTRY_ICON_SECONDARY, has_text);
+    gtk_entry_set_icon_sensitive (entry, GTK_ENTRY_ICON_SECONDARY, gtk_entry_get_text_length (entry) > 0);
 }
 
 
 
 GtkWidget *addressbook_menu_new (void)
 {
-
-    GtkWidget *menu, *item;
-
-    // Create the menu
-    menu = gtk_menu_new ();
+    GtkWidget *menu = gtk_menu_new ();
     gtk_menu_attach_to_widget (GTK_MENU (menu), contacts->searchbar, NULL);
 
     // Populate menu
-    item = gtk_menu_item_new_with_label ("Search is");
+    GtkWidget *item = gtk_menu_item_new_with_label ("Search is");
     g_signal_connect (item, "activate", G_CALLBACK (select_search_type), searchbox);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 
@@ -349,10 +335,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;
@@ -414,10 +399,11 @@ GtkWidget* contacts_searchbar_new ()
     gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 2, 6, 6);
     gtk_container_add (GTK_CONTAINER (align), cbox);
 
+    int cbox_height, cbox_width;
     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);
+    cboxSignalId = g_signal_connect (GTK_COMBO_BOX(cbox), "changed", G_CALLBACK (cbox_changed_cb), NULL);
     // cbox_changed_cb (GTK_WIDGET (cbox), NULL);
 
     cell = gtk_cell_renderer_text_new();
@@ -460,22 +446,9 @@ 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)
 {
     return HistorySearchType;
diff --git a/gnome/src/dbus/Makefile.am b/gnome/src/dbus/Makefile.am
index c9fa5b156f..a23276d9bd 100644
--- a/gnome/src/dbus/Makefile.am
+++ b/gnome/src/dbus/Makefile.am
@@ -26,13 +26,11 @@ 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
 
diff --git a/gnome/src/dbus/configurationmanager-introspec.xml b/gnome/src/dbus/configurationmanager-introspec.xml
index 96ebb09a15..c0ccba720b 100755
--- a/gnome/src/dbus/configurationmanager-introspec.xml
+++ b/gnome/src/dbus/configurationmanager-introspec.xml
@@ -936,10 +936,6 @@
                <tp:docstring>
                </tp:docstring>
            </arg>
-           <arg type="s" name="format" direction="in">
-               <tp:docstring>
-               </tp:docstring>
-           </arg>
            <arg type="i" name="shmKey" direction="out">
                <tp:docstring>
                </tp:docstring>
diff --git a/gnome/src/dbus/dbus.c b/gnome/src/dbus/dbus.c
index 9e6b9011db..c30782e25d 100644
--- a/gnome/src/dbus/dbus.c
+++ b/gnome/src/dbus/dbus.c
@@ -49,8 +49,10 @@
 
 #include <widget/imwidget.h>
 
-#include <eel-gconf-extensions.h>
-#include "videoconf.h"
+#include "eel-gconf-extensions.h"
+
+#include "video/video_renderer.h"
+#include "config/videoconf.h"
 
 #define DEFAULT_DBUS_TIMEOUT 30000
 
@@ -2518,11 +2520,11 @@ dbus_send_text_message (const gchar* callID, const gchar *message)
 }
 
 void
-dbus_start_video_preview (int width, int height, const char *format)
+dbus_start_video_preview (int width, int height)
 {
     GError *error = NULL;
     org_sflphone_SFLphone_ConfigurationManager_start_video_preview_async (
-        configurationManagerProxy, width, height, format, video_started_cb, &error);
+        configurationManagerProxy, width, height, video_started_cb, &error);
 
     if (error) {
         ERROR ("Failed to call start_video_preview () on ConfigurationManager: %s",
diff --git a/gnome/src/dbus/dbus.h b/gnome/src/dbus/dbus.h
index d2fce97e23..fba7161e06 100644
--- a/gnome/src/dbus/dbus.h
+++ b/gnome/src/dbus/dbus.h
@@ -618,7 +618,7 @@ gboolean dbus_start_recorded_file_playback(const gchar *);
 void dbus_stop_recorded_file_playback(const gchar *);
 
 
-void dbus_start_video_preview(int width, int height, const char *format);
+void dbus_start_video_preview(int width, int height);
 
 void dbus_stop_video_preview();
 #endif
diff --git a/gnome/src/eel-gconf-extensions.c b/gnome/src/eel-gconf-extensions.c
index c9fdf210f5..f062107658 100644
--- a/gnome/src/eel-gconf-extensions.c
+++ b/gnome/src/eel-gconf-extensions.c
@@ -29,7 +29,7 @@
 #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;
 
@@ -70,7 +70,7 @@ eel_gconf_client_get_global (void)
                                              GTK_DIALOG_MODAL,
                                              GTK_MESSAGE_ERROR,
                                              GTK_BUTTONS_OK,
-                                             _ ("Cannot find a schema for gpdf preferences. \n"
+                                             _("Cannot find a schema for gpdf preferences. \n"
                                                 "Check your gconf setup, look at gpdf FAQ for \n"
                                                 "more info"));
             gtk_dialog_run (GTK_DIALOG (dialog));
diff --git a/gnome/src/icons/Makefile.am b/gnome/src/icons/Makefile.am
index b9cdfbdcbf..c490f3e1ae 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/imwindow.c b/gnome/src/imwindow.c
index 301ae698ed..0929e7556c 100644
--- a/gnome/src/imwindow.c
+++ b/gnome/src/imwindow.c
@@ -32,7 +32,7 @@
 
 #include <config.h>
 #include <gtk/gtk.h>
-#include <eel-gconf-extensions.h>
+#include "eel-gconf-extensions.h"
 #include <sflphone_const.h>
 
 #include <imwindow.h>
@@ -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 8b4e0d4a2c..0599543fb1 100644
--- a/gnome/src/main.c
+++ b/gnome/src/main.c
@@ -35,10 +35,8 @@
 #include <dbus/dbus.h>
 #include <mainwindow.h>
 #include <statusicon.h>
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
-#include <eel-gconf-extensions.h>
 
+#include "eel-gconf-extensions.h"
 #include <gtk/gtk.h>
 #include <stdlib.h>
 
@@ -85,10 +83,7 @@ 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) ;
+    gtk_init(&argc, &argv);
 
     if (!sflphone_init (&error)) {
         ERROR (error->message);
diff --git a/gnome/src/mainwindow.c b/gnome/src/mainwindow.c
index e37d40a0e6..fff9a7c9a4 100644
--- a/gnome/src/mainwindow.c
+++ b/gnome/src/mainwindow.c
@@ -40,22 +40,16 @@
 #include "sliders.h"
 #include "contacts/searchbar.h"
 #include "assistant.h"
-#include "widget/gtkscrollbook.h"
 #include "widget/minidialog.h"
 #include "uimanager.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;
@@ -67,7 +61,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;
@@ -147,7 +140,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 == current_calls) {
             sflphone_keypad(event->keyval, event->string);
             return TRUE;
@@ -161,13 +154,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
@@ -246,10 +239,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*/,
@@ -385,17 +374,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
@@ -430,9 +424,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));
     }
 }
 
@@ -458,8 +450,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
@@ -476,5 +467,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 b3fc8a8611..54a39c600f 100644
--- a/gnome/src/sflnotify.c
+++ b/gnome/src/sflnotify.c
@@ -27,10 +27,10 @@
  *  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 "sflnotify.h"
+#include "eel-gconf-extensions.h"
+
 
 typedef struct {
     NotifyNotification *notification;
diff --git a/gnome/src/shortcuts.c b/gnome/src/shortcuts.c
index dc56c3cd3e..014b18d1f5 100644
--- a/gnome/src/shortcuts.c
+++ b/gnome/src/shortcuts.c
@@ -46,10 +46,10 @@
 #include "actions.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
@@ -69,36 +69,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);
+    XKeyEvent *key = (XKeyEvent *) xevent;
+    GdkModifierType 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);
-
-            // call associated callback function
+    for (int i = 0; accelerators_list[i].action != NULL; 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;
 }
 
@@ -220,33 +202,21 @@ get_action_callback (const gchar* action)
 static void
 remove_bindings ()
 {
-    GdkDisplay *display = NULL;
-    GdkScreen *screen = NULL;
-    GdkWindow *root = NULL;
-    int i, j = 0;
-
-    display = gdk_display_get_default ();
+    GdkDisplay *display = gdk_display_get_default ();
 
-    for (i = 0; i < gdk_display_get_n_screens (display); i++) {
-        screen = gdk_display_get_screen (display, i);
+    for (int i = 0; i < gdk_display_get_n_screens (display); i++) {
+        GdkScreen *screen = gdk_display_get_screen (display, i);
+        if (screen == NULL)
+            continue;
 
-        if (screen != NULL) {
-            j = 0;
-            root = gdk_screen_get_root_window (screen);
+        GdkWindow *root = gdk_screen_get_root_window (screen);
 
-            // remove filter
-            gdk_window_remove_filter (root, (GdkFilterFunc) filter_keys, NULL);
+        gdk_window_remove_filter (root, (GdkFilterFunc) filter_keys, NULL);
 
-            // unbind shortcuts
-            while (accelerators_list[j].action != NULL) {
-                if (accelerators_list[j].key != 0) {
-                    ungrab_key (accelerators_list[j].key,
-                                accelerators_list[j].mask, root);
-                }
-
-                j++;
-            }
-        }
+        // unbind shortcuts
+        for (int j = 0; accelerators_list[j].action != NULL; j++)
+            if (accelerators_list[j].key != 0)
+                ungrab_key (accelerators_list[j].key, accelerators_list[j].mask, root);
     }
 }
 
@@ -256,33 +226,21 @@ remove_bindings ()
 static void
 create_bindings ()
 {
-    GdkDisplay *display;
-    GdkScreen *screen;
-    GdkWindow *root;
-    int i, j = 0;
-
-    display = gdk_display_get_default ();
+    GdkDisplay *display = gdk_display_get_default ();
 
-    for (i = 0; i < gdk_display_get_n_screens (display); i++) {
-        screen = gdk_display_get_screen (display, i);
+    for (int i = 0; i < gdk_display_get_n_screens (display); i++) {
+        GdkScreen *screen = gdk_display_get_screen (display, i);
+        if (screen == NULL)
+            continue;
 
-        if (screen != NULL) {
-            j = 0;
-            root = gdk_screen_get_root_window (screen);
+        GdkWindow *root = gdk_screen_get_root_window (screen);
 
-            // add filter
-            gdk_window_add_filter (root, (GdkFilterFunc) filter_keys, NULL);
+        gdk_window_add_filter (root, (GdkFilterFunc) filter_keys, NULL);
 
-            // bind shortcuts
-            while (accelerators_list[j].action != NULL) {
-                if (accelerators_list[j].key != 0) {
-                    grab_key (accelerators_list[j].key,
-                              accelerators_list[j].mask, root);
-                }
-
-                j++;
-            }
-        }
+        // bind shortcuts
+        for (int j = 0; accelerators_list[j].action; j++)
+            if (accelerators_list[j].key != 0)
+                grab_key (accelerators_list[j].key, accelerators_list[j].mask, root);
     }
 }
 
@@ -292,27 +250,17 @@ create_bindings ()
 static void
 initialize_binding (const gchar* action, guint key, GdkModifierType mask)
 {
-    int i = 0;
-
-    while (accelerators_list[i].action != NULL) {
+    for (int i = 0; accelerators_list[i].action != NULL; i++) {
         if (g_strcmp0 (action, accelerators_list[i].action) == 0) {
-            break;
-        }
+          accelerators_list[i].key = key;
+          accelerators_list[i].mask = mask;
 
-        i++;
-    }
-
-    if (accelerators_list[i].action == NULL) {
-        ERROR ("Shortcut: Error: Cannot find corresponding action");
-        return;
+          create_bindings ();
+          return;
+        }
     }
 
-    // update config value
-    accelerators_list[i].key = key;
-    accelerators_list[i].mask = mask;
-
-    // update bindings
-    create_bindings ();
+    ERROR ("Shortcut: Error: Cannot find corresponding action");
 }
 
 /*
@@ -487,24 +435,25 @@ 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);
+
+#define UNGRAB(mod) XUngrabKey(d, key, mask | (mod), x)
+    UNGRAB(0);
+    UNGRAB(Mod2Mask);
+    UNGRAB(Mod5Mask);
+    UNGRAB(LockMask);
+    UNGRAB(Mod2Mask | Mod5Mask);
+    UNGRAB(Mod2Mask | LockMask);
+    UNGRAB(Mod5Mask | LockMask);
+    UNGRAB(Mod2Mask | Mod5Mask | LockMask);
+#undef UNGRAB
 
     gdk_flush ();
 
@@ -517,28 +466,25 @@ ungrab_key (guint key, GdkModifierType mask, const GdkWindow *root)
  * 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);
+
+#define GRAB(mod) XGrabKey (d, key, mask | (mod), x, True, GrabModeAsync, GrabModeAsync)
+    GRAB(0);
+    GRAB(Mod2Mask);
+    GRAB(Mod5Mask);
+    GRAB(LockMask);
+    GRAB(Mod2Mask | Mod5Mask);
+    GRAB(Mod2Mask | LockMask);
+    GRAB(Mod5Mask | LockMask);
+    GRAB(Mod2Mask | Mod5Mask | LockMask);
+#undef GRAB
 
     gdk_flush ();
 
diff --git a/gnome/src/shortcuts.h b/gnome/src/shortcuts.h
index 79348c7f00..1004562008 100644
--- a/gnome/src/shortcuts.h
+++ b/gnome/src/shortcuts.h
@@ -33,10 +33,6 @@
 
 #include <gdk/gdkx.h>
 
-#ifndef GDK_DISPLAY
-#define GDK_DISPLAY() GDK_DISPLAY_XDISPLAY(gdk_display_get_default())
-#endif
-
 typedef struct {
     gchar *action;
     guint key;
diff --git a/gnome/src/sliders.c b/gnome/src/sliders.c
index e01fb7f1eb..de197da366 100644
--- a/gnome/src/sliders.c
+++ b/gnome/src/sliders.c
@@ -114,20 +114,15 @@ mute_cb (GtkWidget *widget, gchar*  device)
 void
 set_slider (const gchar * device, gdouble newval)
 {
-    int dev;
-
-    if (g_strcmp0 (device, "speaker") == 0)
-        dev = SPEAKER;
-    else
-        dev = MIKE;
+    int dev = (g_strcmp0 (device, "speaker") == 0) ? SPEAKER : 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 ((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 9e922c7969..e0ec053d86 100644
--- a/gnome/src/statusicon.c
+++ b/gnome/src/statusicon.c
@@ -34,7 +34,8 @@
 #include <mainwindow.h>
 #include <accountlist.h>
 #include <statusicon.h>
-#include <eel-gconf-extensions.h>
+
+#include "eel-gconf-extensions.h"
 
 static GtkStatusIcon *status;
 static GtkWidget *show_menu_item, *hangup_menu_item;
@@ -196,7 +197,7 @@ statusicon_set_tooltip()
         count = account_list_get_registered_accounts();
         tip = g_markup_printf_escaped ("%s - %s", _ ("SFLphone"),
                                        g_markup_printf_escaped (n_ ("%i active account", "%i active accounts", count), count));
-        gtk_status_icon_set_tooltip (status, tip);
+        gtk_status_icon_set_tooltip_markup (status, tip);
         g_free (tip);
 
     }
diff --git a/gnome/src/uimanager.c b/gnome/src/uimanager.c
index 01da2571f5..0c414e264b 100644
--- a/gnome/src/uimanager.c
+++ b/gnome/src/uimanager.c
@@ -36,13 +36,10 @@
 #include <gtk/gtk.h>
 #include <string.h>
 #include <glib/gprintf.h>
-#include <libgnome/gnome-help.h>
 
 #include <uimanager.h>
 #include <statusicon.h>
 #include <widget/imwidget.h>
-#include <eel-gconf-extensions.h>
-
 
 #include "config/audioconf.h"
 #include "uimanager.h"
@@ -51,6 +48,8 @@
 #include "contacts/addrbookfactory.h"
 #include "config/addressbook-config.h"
 
+#include "eel-gconf-extensions.h"
+
 #include "accountlist.h"
 #include "config/accountlistconfigdialog.h"
 
@@ -264,12 +263,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);
@@ -290,12 +289,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);
@@ -313,9 +312,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);
@@ -455,6 +454,8 @@ dialpad_bar_cb(GtkToggleAction *togglemenuitem, gpointer user_data UNUSED)
 static void
 help_contents_cb(GtkAction *action UNUSED)
 {
+#warning FIXME : port to GTK3
+/*
     GError *error = NULL;
 
     gnome_help_display("sflphone.xml", NULL, &error);
@@ -463,6 +464,7 @@ help_contents_cb(GtkAction *action UNUSED)
         g_warning("%s", error->message);
         g_error_free(error);
     }
+    */
 }
 
 static void
diff --git a/gnome/src/video/video_renderer.c b/gnome/src/video/video_renderer.c
index 479b7bb751..217421b786 100644
--- a/gnome/src/video/video_renderer.c
+++ b/gnome/src/video/video_renderer.c
@@ -45,7 +45,12 @@
 #include <clutter-gtk/clutter-gtk.h>
 #include <cairo.h>
 
-#include "dbus.h"
+#include "actions.h"
+
+static GtkWidget *receivingVideoWindow;
+static GtkWidget *receivingVideoArea;
+static VideoRenderer *video_renderer = NULL;
+
 
 #define VIDEO_RENDERER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
             VIDEO_RENDERER_TYPE, VideoRendererPrivate))
@@ -60,7 +65,6 @@ enum
     PROP_RUNNING,
     PROP_WIDTH,
     PROP_HEIGHT,
-    PROP_FORMAT,
     PROP_DRAWAREA,
     PROP_SHMKEY,
     PROP_SEMKEY,
@@ -80,7 +84,6 @@ static void video_renderer_set_property (GObject *object, guint prop_id,
 struct _VideoRendererPrivate {
     guint width;
     guint height;
-    gchar *format;
 
     gchar *shm_buffer;
     gint sem_set_id;
@@ -200,9 +203,6 @@ video_renderer_class_init (VideoRendererClass *klass)
     properties[PROP_HEIGHT] = g_param_spec_int ("height", "Height", "Height of preview video", G_MININT, G_MAXINT, -1,
                                                      G_PARAM_READABLE|G_PARAM_WRITABLE|G_PARAM_CONSTRUCT_ONLY);
 
-    properties[PROP_FORMAT] = g_param_spec_pointer ("format", "Format", "Pixel format of preview video",
-                                                     G_PARAM_READABLE|G_PARAM_WRITABLE|G_PARAM_CONSTRUCT_ONLY);
-
     properties[PROP_SHMKEY] = g_param_spec_int ("shmkey", "ShmKey", "Unique key for shared memory identifier", G_MININT, G_MAXINT, -1,
                                                      G_PARAM_READABLE|G_PARAM_WRITABLE|G_PARAM_CONSTRUCT_ONLY);
 
@@ -241,9 +241,6 @@ video_renderer_get_property (GObject *object, guint prop_id,
         case PROP_HEIGHT:
             g_value_set_int(value, priv->height);
             break;
-        case PROP_FORMAT:
-            g_value_set_pointer(value, priv->format);
-            break;
         case PROP_SHMKEY:
             g_value_set_int(value, priv->shm_key);
             break;
@@ -281,9 +278,6 @@ video_renderer_set_property (GObject *object, guint prop_id,
         case PROP_HEIGHT:
             priv->height = g_value_get_int(value);
             break;
-        case PROP_FORMAT:
-            priv->format = g_value_get_pointer(value);
-            break;
         case PROP_SHMKEY:
             priv->shm_key = g_value_get_int(value);
             break;
@@ -336,13 +330,6 @@ sem_wait(int sem_set_id)
     return semop(sem_set_id, &sem_op, 1);
 }
 
-/* round int value up to next multiple of 4 */
-static int
-align(int value)
-{
-    return (value + 3) &~ 3;
-}
-
 static gboolean
 readFrameFromShm(VideoRendererPrivate *priv)
 {
@@ -368,30 +355,18 @@ readFrameFromShm(VideoRendererPrivate *priv)
     }
 
     if (priv->using_clutter) {
-        if (g_strcmp0(priv->format, "rgb24")) {
-            g_print("clutter render: Unknown pixel format `%s'\n", priv->format);
-            return FALSE;
-        }
-
-        clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE(texture),
+        clutter_texture_set_from_rgb_data(CLUTTER_TEXTURE(texture),
                 (void*)data,
-                FALSE,
+                TRUE,
                 width,
                 height,
-                align(3 /* bytes per pixel */ * width), // stride
-                3,
-                0,
+                4 /* bytes per pixel */ * width, // stride
+                4,
+                CLUTTER_TEXTURE_RGB_FLAG_BGR,
                 NULL);
     } else {
-        if (g_strcmp0(priv->format, "bgra")) {
-            g_print("cairo render: Unknown pixel format `%s'\n", priv->format);
-            return FALSE;
-        }
-
-        cairo_format_t format = CAIRO_FORMAT_RGB24;
+        const cairo_format_t format = CAIRO_FORMAT_RGB24;
         int stride = cairo_format_stride_for_width (format, width);
-        assert(stride == align(4*width));
-
         cairo_surface_t *surface = cairo_image_surface_create_for_data (data,
                                                                  format,
                                                                  width,
@@ -402,9 +377,8 @@ readFrameFromShm(VideoRendererPrivate *priv)
             cairo_set_source_surface(priv->cairo, surface, 0, 0);
 
             cairo_status_t status = cairo_surface_status(surface);
-            if (status != CAIRO_STATUS_SURFACE_FINISHED) {
+            if (status != CAIRO_STATUS_SURFACE_FINISHED)
                 cairo_paint(priv->cairo);
-            }
             cairo_surface_destroy(surface);
         }
     }
@@ -420,12 +394,6 @@ video_renderer_stop(VideoRenderer *preview)
 
     priv->is_running = FALSE;
 
-    if (GTK_IS_WIDGET(priv->drawarea)) {
-        GdkWindow *win = gtk_widget_get_window(priv->drawarea);
-        if (GDK_IS_WINDOW(win))
-            gdk_window_clear(win);
-    }
-
     if (!priv->using_clutter)
         cairo_destroy(priv->cairo);
 
@@ -467,7 +435,7 @@ updateTexture(gpointer data)
  * Create a new #VideoRenderer instance.
  */
 VideoRenderer *
-video_renderer_new (GtkWidget *drawarea, int width, int height, const char *format, int shmkey, int semkey, int vbsize)
+video_renderer_new (GtkWidget *drawarea, int width, int height, int shmkey, int semkey, int vbsize)
 {
     VideoRenderer *result;
 
@@ -475,7 +443,6 @@ video_renderer_new (GtkWidget *drawarea, int width, int height, const char *form
           "drawarea", (gpointer)drawarea,
           "width", (gint)width,
           "height", (gint)height,
-          "format", (gpointer)format,
           "shmkey", (gint)shmkey,
           "semkey", (gint)semkey,
           "vbsize", (gint)vbsize,
@@ -501,7 +468,7 @@ video_renderer_run(VideoRenderer *preview)
     if (priv->sem_set_id == -1)
         return 1;
 
-    priv->using_clutter = !g_strcmp0(priv->format, "rgb24");
+    priv->using_clutter = GTK_CLUTTER_IS_EMBED(priv->drawarea);
     g_print("Preview: using %s render\n", priv->using_clutter ? "clutter" : "cairo");
 
     if (priv->using_clutter) {
@@ -534,3 +501,76 @@ video_renderer_run(VideoRenderer *preview)
 
     return 0;
 }
+
+static void receiving_video_window_deleted_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
+{
+    sflphone_hang_up();
+}
+
+
+void receiving_video_event_cb(DBusGProxy *proxy, gint shmKey, gint semKey,
+                              gint videoBufferSize, gint destWidth,
+                              gint destHeight, GError *error, gpointer userdata)
+{
+    if (!receivingVideoWindow) {
+        receivingVideoWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+        g_signal_connect (receivingVideoWindow, "delete-event", G_CALLBACK (receiving_video_window_deleted_cb), NULL);
+    }
+
+    (void)proxy;
+    (void)error;
+    (void)userdata;
+    gboolean using_clutter = clutter_init(NULL, NULL) == CLUTTER_INIT_SUCCESS;
+
+    if (!receivingVideoArea) {
+        if (using_clutter) {
+            receivingVideoArea = gtk_clutter_embed_new();
+            if (!gtk_clutter_embed_get_stage(GTK_CLUTTER_EMBED(receivingVideoArea))) {
+                gtk_widget_destroy(receivingVideoArea);
+                using_clutter = 0;
+            }
+        }
+        if (!using_clutter)
+          receivingVideoArea = gtk_drawing_area_new();
+    }
+
+    g_assert(receivingVideoArea);
+    gtk_container_add(GTK_CONTAINER(receivingVideoWindow), receivingVideoArea);
+
+    if (shmKey == -1 || semKey == -1 || videoBufferSize == -1)
+        return;
+
+    gtk_widget_set_size_request (receivingVideoArea, destWidth, destHeight);
+    gtk_widget_show_all(receivingVideoWindow);
+
+    DEBUG("Video started for shm:%d sem:%d bufferSz:%d width:%d height:%d",
+           shmKey, semKey, videoBufferSize, destWidth, destHeight);
+
+    video_renderer = video_renderer_new(receivingVideoArea, destWidth, destHeight, shmKey, semKey, videoBufferSize);
+    g_assert(video_renderer);
+    if (video_renderer_run(video_renderer)) {
+        g_object_unref(video_renderer);
+        video_renderer = NULL;
+        DEBUG("Could not run video renderer");
+    }
+    else
+        DEBUG("Running video renderer");
+}
+
+void stopped_receiving_video_event_cb(DBusGProxy *proxy, gint shmKey, gint semKey, GError *error, gpointer userdata)
+{
+    (void)proxy;
+    (void)error;
+    (void)userdata;
+
+    DEBUG("Video stopped for shm:%d sem:%d", shmKey, semKey);
+
+    if (video_renderer) {
+        if (receivingVideoWindow) {
+            if (GTK_IS_WIDGET(receivingVideoWindow))
+                    gtk_widget_destroy(receivingVideoWindow);
+            receivingVideoArea = receivingVideoWindow = NULL;
+        }
+        video_renderer = NULL;
+    }
+}
diff --git a/gnome/src/video/video_renderer.h b/gnome/src/video/video_renderer.h
index 13c735ac43..13c75c8452 100644
--- a/gnome/src/video/video_renderer.h
+++ b/gnome/src/video/video_renderer.h
@@ -34,6 +34,8 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
+#include "dbus.h"
+
 G_BEGIN_DECLS
 
 #define VIDEO_RENDERER_TYPE              (video_renderer_get_type())
@@ -61,10 +63,16 @@ struct _VideoRendererClass {
 };
 
 /* Public interface */
-VideoRenderer *video_renderer_new(GtkWidget *drawarea, int width, int height, const char *format, int shmkey, int semkey, int vbsize);
+VideoRenderer *video_renderer_new(GtkWidget *drawarea, int width, int height, int shmkey, int semkey, int vbsize);
 int video_renderer_run(VideoRenderer *preview);
 void video_renderer_stop(VideoRenderer *preview);
 
+void receiving_video_event_cb(DBusGProxy *proxy, gint shmId, gint semId,
+                              gint videoBufferSize, gint destWidth,
+                              gint destHeight, GError *error,
+                              gpointer userdata);
+void stopped_receiving_video_event_cb(DBusGProxy *proxy, gint shmId, gint semId, GError *error, gpointer userdata);
+
 G_END_DECLS
 
 #endif // __VIDEO_RENDERER_H__
diff --git a/gnome/src/widget/Makefile.am b/gnome/src/widget/Makefile.am
index 7d67024bd3..62fcdc6c6d 100644
--- a/gnome/src/widget/Makefile.am
+++ b/gnome/src/widget/Makefile.am
@@ -3,22 +3,17 @@ include ../../globals.mak
 noinst_LTLIBRARIES = libwidget.la
 
 libwidget_la_SOURCES = \
-		gtkscrollbook.c \
-		gtkscrollbook.h \
 		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 9c118a5870..0000000000
--- a/gnome/src/widget/gtkscrollbook.c
+++ /dev/null
@@ -1,272 +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 "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 index = gtk_notebook_get_current_page (GTK_NOTEBOOK (scroll_book->notebook));
-
-    if (index > 0)
-        gtk_notebook_set_current_page (GTK_NOTEBOOK (scroll_book->notebook), index - 1);
-
-    return TRUE;
-}
-
-static gboolean
-scroll_right_cb (PidginScrollBook *scroll_book)
-{
-    int index = gtk_notebook_get_current_page (GTK_NOTEBOOK (scroll_book->notebook));
-    int count = gtk_notebook_get_n_pages (GTK_NOTEBOOK (scroll_book->notebook));
-
-    if (index + 1 < count)
-        gtk_notebook_set_current_page (GTK_NOTEBOOK (scroll_book->notebook), index + 1);
-
-    return TRUE;
-}
-
-static void
-refresh_scroll_box (PidginScrollBook *scroll_book, int 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>", index+1, count);
-    gtk_label_set_markup (GTK_LABEL (scroll_book->label), label);
-    g_free (label);
-
-    gtk_widget_set_sensitive (scroll_book->left_arrow, index != 0);
-    gtk_widget_set_sensitive (scroll_book->right_arrow, index + 1 != count);
-}
-
-
-static void
-page_count_change_cb (PidginScrollBook *scroll_book)
-{
-    int 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, 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 a012f78259..0000000000
--- 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 fd1087a5a7..b778aaff35 100644
--- a/gnome/src/widget/imwidget.c
+++ b/gnome/src/widget/imwidget.c
@@ -164,8 +164,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) {
diff --git a/gnome/tests/Makefile.am b/gnome/tests/Makefile.am
index 0d3e89f959..272fc571db 100644
--- a/gnome/tests/Makefile.am
+++ b/gnome/tests/Makefile.am
@@ -29,7 +29,7 @@ check_config_LDADD =		$(SFLPHONE_LIBS) @CHECK_LIBS@
 
 check_dbus_SOURCES =		check_dbus.c $(top_srcdir)/src/logger.c $(top_srcdir)/src/accountlist.c $(top_srcdir)/src/actions.c $(top_srcdir)/src/codeclist.c $(top_srcdir)/src/dialpad.c $(top_srcdir)/src/mainwindow.c $(top_srcdir)/src/reqaccount.c $(top_srcdir)/src/sflnotify.c $(top_srcdir)/src/sliders.c $(top_srcdir)/src/statusicon.c $(top_srcdir)/src/callable_obj.c $(top_srcdir)/src/eel-gconf-extensions.c $(top_srcdir)/src/uimanager.c $(top_srcdir)/src/conference_obj.c $(top_srcdir)/src/shortcuts.c $(top_srcdir)/src/imwindow.c
 
-check_dbus_CFLAGS = 		@CHECK_CFLAGS@ @GTK_CFLAGS@ @DBUSGLIB_CFLAGS@ @WEBKIT_CFLAGS@ @LIBGNOMEUI_CFLAGS@
+check_dbus_CFLAGS = 		@CHECK_CFLAGS@ @GTK_CFLAGS@ @DBUSGLIB_CFLAGS@ @WEBKIT_CFLAGS@
 check_dbus_LDADD =			$(SFLPHONE_LIBS) @CHECK_LIBS@ $(top_builddir)/src/widget/libwidget.la $(top_builddir)/src/video/libvideo.la $(top_builddir)/src/icons/libicons.la
 
 ###########################################################
-- 
GitLab