X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-toolbar.c;h=a8e07d03cf28168ab84754ac94afbb4ccfa4e0e2;hb=cac404b01351e3959adb4f4e577da0106ddb37ee;hp=b2bae623cc804adfc1699b93128b79348f1b0237;hpb=82819f280cb7939e58c95d6b70840816ebac780c;p=modest diff --git a/src/widgets/modest-toolbar.c b/src/widgets/modest-toolbar.c index b2bae62..a8e07d0 100644 --- a/src/widgets/modest-toolbar.c +++ b/src/widgets/modest-toolbar.c @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #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); }