diff --git a/daemon/src/dbus/configurationmanager-introspec.xml b/daemon/src/dbus/configurationmanager-introspec.xml
index eb6c41ce0e7961fbaa4b18250db969faed7a59bb..1b1a618096fdaa8101050082ded41755f8e8cf83 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 13dd8d0a09c4569c8fcc8d2f849e887b9e18e587..fabb6ba488ca83844cd87431b7cf2f8299e025c7 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 3d19878a2cf140ad3ee27ffa8464308821194a74..4ce60449f1d70594eb85feb54dbcde82adfd8adb 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 66e34e4481a1cb4a51dcfcdce373641931e88840..6a9e6d8e21c61c12c2e5b384479a04851c95583d 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 9ab10de29bb6a1b9689099ce0b52f3253214721a..e28eb51420efb1122cda851e69d832f384bdd3a4 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 4d8d2a95f9b1b9910b3b3fa1ff8d6fdf93f66b53..c3fdc2e688eb857cf9bd701cbb0be95144ef29cf 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 0caa8b6afeb31c4454d92c40b3edbd2d09bf4f60..ebafdc9bb99d21b910803d856d48df68fead864b 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 9fa4ed843abe11815440814267ee71dfba464b3e..9f11878f82258211fcd62cc1599f3784b62a59fd 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 a1670ad0a79c086123911ff4944514ce4a5913e7..9909fcec7833a34f0fcf1e42f8a3424fd51ebcf3 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 ac7c7fe1a6366ea8a1d212808eb621888883d32f..cb2db073700a81ac6e281c0520a8236300f117f5 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 b4bf453d8f11c476ad2c5236651bad506234527f..9cb3ea0fc808ee8918f8d963b8abf245ecf5ada4 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 fb03aa31d06de6330051ec04daf46ef3ff99bea1..07be3e5ff20a38daf17f40acae9400b14aedc72d 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 f11a89bb6c5bfdc89097c4ab601ea211aca71654..ec61feef57595336d76ed239219105fe179f75d8 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 decd58bbf9d514d8ad09d1627f68724b4f702582..51bd15e2c5b78521812c169175993d753d3dae96 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 78724bda7f06a4228e6fcccd6528e655e9e46e79..586f4a03e17118344fcc3b0fbd6bb9f97bf6bae8 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 71d475b8ddf24955a043e53787a5d29d2b907065..21d9cad735e2353049a86101a7a35170a0692a33 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 8e929819a7506b5fe77c8f705c76beb38a7dc035..c29899797d5940c76c95ce0670c35332bc9ad000 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 13e1198e6757a7d54e369b5b757d89733b20c854..53da10fa8542551322be97533f1e18ea4f682e7d 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 27168d9b0e75480ebe3a3b22d4fda0a1971dbfb8..05217120951d6d81badf1053c820b7147c0df90e 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 b6fc155e2d235066265732629dd4c3622680360d..e7bc5965f28b13e86df9cfd1a4ce05b94895d68e 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 1953698af1994cc558d1509797e3213ed64dd6df..761ca417c2646ac9bb3e266b14ed6719f0f8ec64 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 16c39b384e4fca9f95b89bdd6501338b0112a1b2..44d138e6c83b6db42dd9f6e4cc495aa2cac19829 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 c9fa5b156f89c82f446802678c8fd0c07570f22d..a23276d9bd795fc5f2ad2855ec633209f6210232 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 96ebb09a15323cd940770e8b8886e354b30e396f..c0ccba720bede073d05170a1ff443ec811b8ed47 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 9e6b9011db8192cb9a20ba4f166c24cba30270a1..c30782e25dc6ca91e6a12e02d3fcddd71f0a4bb8 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 d2fce97e232a8b5cb75aabd2a7881e08ca261849..fba7161e060e21988c10197e8c2d704fd86cc1e0 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 c9fdf210f59ab1a9854244de9b9e6a46246fe0c7..f062107658646023a877b6643f34e56610022505 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 b9cdfbdcbf420f6508f0372cacb136c3a9d623bc..c490f3e1ae01abad55fe64d9076bc3ef07996b84 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 301ae698ed96310993acfbc0870982c1c292f88f..0929e7556c888dbfd95ca28c019c680355c2145c 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 8b4e0d4a2c98be49892ce4e97ab1b40259813a99..0599543fb136bf37139ebffbac20739f541379ae 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 e37d40a0e64dfc800f49de6d1509954098fed3bd..fff9a7c9a4af981ad13e09853719e3cc475803e7 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 b3fc8a8611a85a2851cb2397e75bd446d1fa73a2..54a39c600f023bff63781951203c4e91ce0796c4 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 dc56c3cd3e78aee1066e5e0d9982f10ea94ac489..014b18d1f5db10f68d3ee7be516076ccdb276db4 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 79348c7f00574021d57b9d68ba36e8083183a0e5..10045620081de002332dcb8331e41d784209e592 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 e01fb7f1ebd401da8df5146cc80e19c6cfc60216..de197da366ef672b8467c811f8bccae679fa9062 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 9e922c7969c5a5be3727e7b75bcaf97410e85a5b..e0ec053d86d9504d7a619f34151a58f9af977479 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 01da2571f55819b1962cb32f91b38aa96636b70e..0c414e264b0b33a5629aba7b924d56b0dd610b44 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 479b7bb7519e5399059bb18934e9117d097ac61d..217421b7867ea811ac1a55e09df3b7dcb9d98116 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 13c735ac434e357e00ec444a62215a2c7a4bea94..13c75c84521ca2bf7bdde126421590b5c9bc29c2 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 7d67024bd31d970a0a517caabb678ef8b795747e..62fcdc6c6dc00cb96385d9dd93703d2582af51ac 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 9c118a587011adc2aab4a5985fa0a1c134b871ca..0000000000000000000000000000000000000000
--- 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 a012f7825923bb04a5ccf5a8e39eebfac2729627..0000000000000000000000000000000000000000
--- a/gnome/src/widget/gtkscrollbook.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * @file gtkscrollbook  GTK+ Scrolling notebook Widget
- * @ingroup pidgin
- */
-
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-
-#ifndef __PIDGIN_SCROLL_BOOK_H__
-#define __PIDGIN_SCROLL_BOOK_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PIDGIN_TYPE_SCROLL_BOOK             (pidgin_scroll_book_get_type ())
-#define PIDGIN_SCROLL_BOOK(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBook))
-#define PIDGIN_SCROLL_BOOK_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST ((vtable), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBookClass))
-#define PIDGIN_IS_SCROLL_BOOK(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_SCROLL_BOOK))
-#define PIDGIN_IS_SCROLL_BOOK_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), PIDGIN_TYPE_SCROLL_BOOK))
-#define PIDGIN_SCROLL_BOOK_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_CLASS ((inst), PIDGIN_TYPE_SCROLL_BOOK, PidginScrollBookClass))
-
-typedef struct _PidginScrollBook      PidginScrollBook;
-typedef struct _PidginScrollBookClass PidginScrollBookClass;
-
-struct _PidginScrollBook {
-    GtkVBox parent_instance;
-
-    GtkWidget *notebook;
-    GtkWidget *hbox;
-    GtkWidget *label;
-    GtkWidget *left_arrow;
-    GtkWidget *right_arrow;
-    GList *children;
-
-    /* Padding for future expansion */
-    void (*_gtk_reserved1) (void);
-    void (*_gtk_reserved2) (void);
-    void (*_gtk_reserved3) (void);
-
-};
-
-
-struct _PidginScrollBookClass {
-    GtkContainerClass parent_class;
-
-    /* Padding for future expansion */
-    void (*_gtk_reserved0) (void);
-    void (*_gtk_reserved1) (void);
-    void (*_gtk_reserved2) (void);
-    void (*_gtk_reserved3) (void);
-};
-
-
-GType         pidgin_scroll_book_get_type (void) G_GNUC_CONST;
-GtkWidget    *pidgin_scroll_book_new (void);
-
-G_END_DECLS
-
-#endif  /* __PIDGIN_SCROLL_BOOK_H__ */
diff --git a/gnome/src/widget/imwidget.c b/gnome/src/widget/imwidget.c
index fd1087a5a77618355599ed26071d225d83421119..b778aaff3518f5c950524f5b93246b044f165d46 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 0d3e89f9599a289ce4f61a8caae2246ca24823f5..272fc571dbd9f5f48caaf5c26703e484457534ae 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
 
 ###########################################################