* modest-header-view.[ch]:
[modest] / src / widgets / modest-toolbar.c
index b2bae62..a8e07d0 100644 (file)
@@ -27,6 +27,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <glib/gi18n.h>
 #include "modest-toolbar.h"
 
 /* 'private'/'protected' functions */
@@ -103,12 +104,24 @@ modest_toolbar_class_init (ModestToolbarClass *klass)
 static void
 modest_toolbar_init (ModestToolbar *obj)
 {
+       ModestToolbarPrivate *priv;
+       priv = MODEST_TOOLBAR_GET_PRIVATE(obj);
+
+       priv->tooltips = NULL;
        
 }
 
 static void
 modest_toolbar_finalize (GObject *obj)
 {
+       ModestToolbarPrivate *priv;
+       priv = MODEST_TOOLBAR_GET_PRIVATE(obj);
+
+       if (priv->tooltips) {
+               g_object_ref_sink (G_OBJECT(priv->tooltips));
+               priv->tooltips = NULL;
+       }
+
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -182,12 +195,12 @@ static gboolean
 modest_toolbar_set_buttons (ModestToolbar *self, const GSList *buttons)
 {
        const GSList *cursor;
-       GtkTooltips *tooltips;
-       
-       g_return_val_if_fail (self, FALSE);
+       ModestToolbarPrivate *priv;
+
+       priv = MODEST_TOOLBAR_GET_PRIVATE(self);
        
-       tooltips = gtk_tooltips_new ();
-       gtk_tooltips_enable (tooltips);
+       priv->tooltips = gtk_tooltips_new ();
+       gtk_tooltips_enable (priv->tooltips);
        gtk_toolbar_set_tooltips (GTK_TOOLBAR(self), TRUE);
 
        cursor = buttons;
@@ -204,19 +217,21 @@ modest_toolbar_set_buttons (ModestToolbar *self, const GSList *buttons)
                                g_printerr ("modest: error getting data for toolbar button %d\n",
                                            button_id);
                        else {
-                               GtkWidget *icon;
-                               GtkToolItem *button;
-                               GdkPixbuf *pixbuf;
+                               GtkWidget *icon = NULL;
+                               GtkToolItem *button = NULL;
+                               GdkPixbuf *pixbuf = NULL;
                                
                                pixbuf = modest_icon_factory_get_icon_at_size (icon_name, 24, 24);
-                               icon   = gtk_image_new_from_pixbuf ((GdkPixbuf*)pixbuf);
+                               if (pixbuf)
+                                       icon   = gtk_image_new_from_pixbuf ((GdkPixbuf*)pixbuf);
                                button = gtk_tool_button_new (icon, label);
                                g_object_set_data (G_OBJECT(button), "button_id",
                                                   GINT_TO_POINTER(button_id));
                                g_signal_connect (G_OBJECT(button), "clicked", 
                                                  G_CALLBACK(on_toolbutton_clicked), self);
 
-                               gtk_tooltips_set_tip (tooltips, GTK_WIDGET(button),tooltip, NULL);
+                               gtk_tooltips_set_tip (priv->tooltips, GTK_WIDGET(button),
+                                                     tooltip, NULL);
                                gtk_widget_show_all (GTK_WIDGET(button));
                                gtk_toolbar_insert (GTK_TOOLBAR(self), button, -1);
                        }