From 5c49e5e936ded97a806bb73243f75fd0eedfb326 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?=
 <rafael.carre@savoirfairelinux.com>
Date: Fri, 26 Aug 2011 16:37:18 -0400
Subject: [PATCH] Don't give glib warnings if icons are not found

---
 gnome/src/imwindow.c   | 36 ++++++++++++++++++++----------------
 gnome/src/imwindow.h   |  6 ------
 gnome/src/mainwindow.c |  5 ++++-
 gnome/src/uimanager.c  | 11 +++++++----
 4 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/gnome/src/imwindow.c b/gnome/src/imwindow.c
index f501e8fe96..8d5c07f2eb 100644
--- a/gnome/src/imwindow.c
+++ b/gnome/src/imwindow.c
@@ -38,11 +38,23 @@
 #include <imwindow.h>
 #include <contacts/calltab.h>
 #include <contacts/calltab.h>
+#include <sys/stat.h>
 
 /** Local variables */
 static GtkWidget *im_window = NULL;
 static GtkWidget *im_notebook = NULL;
 
+
+static void im_window_init();
+
+static GtkWindow *im_window_get()
+{
+    if (im_window == NULL)
+        im_window_init();
+
+    return GTK_WINDOW(im_window);
+}
+
 static gboolean window_configure_cb (GtkWidget *wini UNUSED, GdkEventConfigure *event)
 {
     int pos_x, pos_y;
@@ -50,7 +62,7 @@ static gboolean window_configure_cb (GtkWidget *wini UNUSED, GdkEventConfigure *
     eel_gconf_set_integer (CONF_IM_WINDOW_WIDTH, event->width);
     eel_gconf_set_integer (CONF_IM_WINDOW_HEIGHT, event->height);
 
-    gtk_window_get_position (GTK_WINDOW (im_window_get()), &pos_x, &pos_y);
+    gtk_window_get_position (im_window_get(), &pos_x, &pos_y);
     eel_gconf_set_integer (CONF_IM_WINDOW_POSITION_X, pos_x);
     eel_gconf_set_integer (CONF_IM_WINDOW_POSITION_Y, pos_y);
 
@@ -106,7 +118,9 @@ im_window_init()
     gtk_container_set_border_width (GTK_CONTAINER (im_window), 0);
     gtk_window_set_title (GTK_WINDOW (im_window), window_title);
     gtk_window_set_default_size (GTK_WINDOW (im_window), width, height);
-    gtk_window_set_default_icon_from_file (LOGO, NULL);
+    struct stat st;
+    if (!stat(LOGO, &st))
+        gtk_window_set_default_icon_from_file (LOGO, NULL);
     gtk_window_set_position (GTK_WINDOW (im_window), GTK_WIN_POS_MOUSE);
 
     gtk_widget_set_name (im_window, "imwindow");
@@ -129,20 +143,9 @@ im_window_init()
     gtk_window_move (GTK_WINDOW (im_window), position_x, position_y);
 }
 
-GtkWidget *
-im_window_get()
-{
-    if (im_window == NULL)
-        im_window_init();
-
-    return im_window;
-}
-
-
 gboolean
 im_window_is_active ()
 {
-
     if (!im_window)
         return FALSE;
     else
@@ -152,13 +155,14 @@ im_window_is_active ()
 gboolean
 im_window_is_visible ()
 {
-    return gtk_widget_get_visible (im_window);
+    return gtk_widget_get_visible (GTK_WIDGET(im_window_get()));
 }
 
+
 void
 im_window_show ()
 {
-    gtk_window_present (GTK_WINDOW (im_window_get ()));
+    gtk_window_present (im_window_get ());
 }
 
 void
@@ -169,7 +173,7 @@ im_window_add (GtkWidget *widget)
         im_window_add_tab (widget);
 
         /* Show it all */
-        gtk_widget_show_all (im_window);
+        gtk_widget_show_all (GTK_WIDGET(im_window_get()));
     } 
     else {
         ERROR ("InstantMessaging: Error: Could not create the main instant messaging window");
diff --git a/gnome/src/imwindow.h b/gnome/src/imwindow.h
index f0d1de2e07..1a3ab3f1cf 100644
--- a/gnome/src/imwindow.h
+++ b/gnome/src/imwindow.h
@@ -42,12 +42,6 @@
   * @brief The IM window of the client.
   */
 
-/*! @function
- * Display the IM window
- * @return GtkWidget* The IM window
- */
-GtkWidget *im_window_get();
-
 /*!	@function
 @abstract	Add IM widget to the IM window
  */
diff --git a/gnome/src/mainwindow.c b/gnome/src/mainwindow.c
index 66b201fd5f..18f917172a 100644
--- a/gnome/src/mainwindow.c
+++ b/gnome/src/mainwindow.c
@@ -44,6 +44,7 @@
 #include <widget/minidialog.h>
 #include "uimanager.h"
 
+#include <sys/stat.h>
 #include <gtk/gtk.h>
 #include <eel-gconf-extensions.h>
 
@@ -200,7 +201,9 @@ create_main_window ()
     gtk_container_set_border_width (GTK_CONTAINER (window), 0);
     gtk_window_set_title (GTK_WINDOW (window), window_title);
     gtk_window_set_default_size (GTK_WINDOW (window), width, height);
-    gtk_window_set_default_icon_from_file (LOGO, NULL);
+    struct stat st;
+    if (!stat(LOGO, &st))
+        gtk_window_set_default_icon_from_file (LOGO, NULL);
     gtk_window_set_position (GTK_WINDOW (window) , GTK_WIN_POS_MOUSE);
 
     /* Connect the destroy event of the window with our on_destroy function
diff --git a/gnome/src/uimanager.c b/gnome/src/uimanager.c
index 0ca3b4fdc8..e3c2f44e27 100644
--- a/gnome/src/uimanager.c
+++ b/gnome/src/uimanager.c
@@ -53,6 +53,8 @@
 #include "accountlist.h"
 #include "config/accountlistconfigdialog.h"
 
+#include <sys/stat.h>
+
 void show_edit_number (callable_obj_t *call);
 
 static GtkWidget *toolbar;
@@ -1731,12 +1733,13 @@ show_edit_number (callable_obj_t *call)
 
 }
 
-GtkWidget*
+static GtkWidget*
 create_waiting_icon()
 {
-    GtkWidget * waiting_icon;
-    waiting_icon = gtk_image_menu_item_new_with_label ("");
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (waiting_icon),
+    GtkWidget * waiting_icon = gtk_image_menu_item_new_with_label ("");
+    struct stat st;
+    if (!stat(ICONS_DIR "/wait-on.gif", &st))
+        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (waiting_icon),
                                    gtk_image_new_from_animation (gdk_pixbuf_animation_new_from_file (
                                            ICONS_DIR "/wait-on.gif", NULL)));
     gtk_menu_item_set_right_justified (GTK_MENU_ITEM (waiting_icon), TRUE);
-- 
GitLab