[balsa/gtk3] Port to GdkRGBA and GtkStyleContext



commit 2bbc7749a781945228e923f76feb0dc20a1f8867
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Jan 17 17:20:50 2011 -0500

    Port to GdkRGBA and GtkStyleContext

 ChangeLog                         |   32 +++++++++++++
 src/balsa-app.h                   |    6 +-
 src/balsa-cite-bar.c              |    8 ++-
 src/balsa-message.c               |   40 ++++++-----------
 src/balsa-mime-widget-image.c     |    4 +-
 src/balsa-mime-widget-message.c   |   55 +++++++++++++-----------
 src/balsa-mime-widget-text.c      |   87 +++++++++++++++++++++---------------
 src/balsa-mime-widget-vcalendar.c |    1 -
 src/balsa-print-object-text.c     |    6 +-
 src/main-window.c                 |   30 ++++++++----
 src/pref-manager.c                |   24 +++++-----
 src/quote-color.c                 |   29 ------------
 src/quote-color.h                 |    2 -
 src/save-restore.c                |   16 +++----
 src/sendmsg-window.c              |   15 +++---
 15 files changed, 186 insertions(+), 169 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 78f4392..db98aaf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,37 @@
 2011-01-17  Peter Bloomfield
 
+	* src/balsa-app.h: port from GdkColor to GdkRGBA.
+	* src/balsa-cite-bar.c (balsa_cite_bar_draw): ditto, and from
+	GtkStyle to GtkStyleContext.
+	* src/balsa-message.c (bm_on_set_style), (balsa_message_init),
+	(get_crypto_content_icon): ditto.
+	* src/balsa-mime-widget-image.c (balsa_mime_widget_new_image):
+	ditto.
+	* src/balsa-mime-widget-message.c (balsa_mime_widget_new_message),
+	(balsa_mime_widget_new_message_tl), (bm_header_widget_realized),
+	(bm_header_widget_set_style), (bm_header_widget_new),
+	(bmwm_buffer_set_prefs),
+	(balsa_mime_widget_message_set_headers_d): ditto, and reorganize
+	widget-showing.
+	* src/balsa-mime-widget-text.c (balsa_mime_widget_new_text),
+	(bm_modify_font_from_string), (quote_tag), (draw_cite_bar_real),
+	(bm_widget_new_vcard), (fill_text_buf_cited): ditto, and drop
+	allocate_quote_colors.
+	* src/balsa-mime-widget-vcalendar.c
+	* src/balsa-print-object-text.c (balsa_print_object_text_draw):
+	port from GdkColor to GdkRGBA.
+	* src/main-window.c: port from GtkStyle to GtkStyleContext.
+	* src/pref-manager.c (apply_prefs), (set_prefs): port from
+	GdkColor to GdkRGBA.
+	* src/quote-color.c (is_a_quote): drop allocate_quote_colors.
+	* src/quote-color.h: ditto.
+	* src/save-restore.c (save_color), (load_color): port from
+	GdkColor to GdkRGBA.
+	* src/sendmsg-window.c (add_urlref_attachment),
+	(create_email_or_string_entry), (create_text_area): ditto.
+
+2011-01-17  Peter Bloomfield
+
 	* libbalsa/source-viewer.c (libbalsa_show_message_source): new
 	override font API.
 
diff --git a/src/balsa-app.h b/src/balsa-app.h
index 1430692..3c7ec75 100644
--- a/src/balsa-app.h
+++ b/src/balsa-app.h
@@ -268,13 +268,13 @@ extern struct BalsaApplication {
     /* Colour of quoted text. */
     gboolean mark_quoted;
     gchar *quote_regex;
-    GdkColor quoted_color[MAX_QUOTED_COLOR];
+    GdkRGBA quoted_color[MAX_QUOTED_COLOR];
 
     /* text color of URL's */
-    GdkColor url_color;
+    GdkRGBA url_color;
 
     /* label color of bad addresses */
-    GdkColor bad_address_color;
+    GdkRGBA bad_address_color;
 
     guint pwindow_option;
     gboolean wordwrap;
diff --git a/src/balsa-cite-bar.c b/src/balsa-cite-bar.c
index a0e0050..627c460 100644
--- a/src/balsa-cite-bar.c
+++ b/src/balsa-cite-bar.c
@@ -128,12 +128,14 @@ balsa_cite_bar_get_preferred_height(GtkWidget * widget,
 static gboolean
 balsa_cite_bar_draw(GtkWidget * widget, cairo_t * cr)
 {
-    GtkStyle *style;
+    GtkStyleContext *context;
+    GdkRGBA rgba;
     BalsaCiteBar *cite_bar;
     int n, x;
 
-    style = gtk_widget_get_style(widget);
-    gdk_cairo_set_source_color(cr, &style->fg[GTK_STATE_NORMAL]);
+    context = gtk_widget_get_style_context(widget);
+    gtk_style_context_get_color(context, GTK_STATE_FLAG_NORMAL, &rgba);
+    gdk_cairo_set_source_rgba(cr, &rgba);
 
     cite_bar = BALSA_CITE_BAR(widget);
     for (n = x = 0; n < cite_bar->bars; n++) {
diff --git a/src/balsa-message.c b/src/balsa-message.c
index c54e728..de792f9 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -332,33 +332,20 @@ bm_header_tl_buttons(BalsaMessage * bm)
 }
 
 
-/* Callback for the "style-set" signal; set the message background to
- * match the base color of any content in a text-view. */
+/* Callback for the "style-updated" signal; set the message background to
+ * match the base color of the content in the tree-view. */
 static void
 bm_on_set_style(GtkWidget * widget,
-	        GtkStyle * previous_style,
 	        BalsaMessage * bm)
 {
-    GtkWidget *target = bm->cont_viewport;
-    GtkStyle *new_style, *text_view_style;
-    int n;
-
-    new_style = gtk_style_copy(gtk_widget_get_style(target));
-    text_view_style =
-	gtk_rc_get_style_by_paths(gtk_widget_get_settings(target),
-				  NULL, NULL, gtk_text_view_get_type());
-    if (text_view_style)
-	for (n = GTK_STATE_NORMAL; n <= GTK_STATE_INSENSITIVE; n++)
-	    new_style->bg[n] = text_view_style->base[n];
-    else {
-	GdkColor color;
+    GtkStyleContext *context;
+    GdkRGBA rgba;
 
-	gdk_color_parse("White", &color);
-	for (n = GTK_STATE_NORMAL; n <= GTK_STATE_INSENSITIVE; n++)
-	    new_style->bg[n] = color;
-    }
-    gtk_widget_set_style(target, new_style);
-    g_object_unref(G_OBJECT(new_style));
+    context = gtk_widget_get_style_context(bm->treeview);
+    gtk_style_context_get_background_color(context, GTK_STATE_FLAG_NORMAL,
+                                           &rgba);
+    gtk_widget_override_background_color(bm->cont_viewport,
+                                         GTK_STATE_FLAG_NORMAL, &rgba);
 }
 
 static void
@@ -701,7 +688,7 @@ balsa_message_init(BalsaMessage * bm)
     bm->cont_viewport = gtk_viewport_new(NULL, NULL);
     gtk_container_add(GTK_CONTAINER(scroll), bm->cont_viewport);
     gtk_widget_show_all(scroll);
-    g_signal_connect_after(bm, "style-set",
+    g_signal_connect_after(bm, "style-updated",
 			   G_CALLBACK(bm_on_set_style), bm);
     g_signal_connect(bm->cont_viewport, "size-allocate",
 		     G_CALLBACK(on_content_size_alloc), NULL);
@@ -781,7 +768,6 @@ balsa_message_init(BalsaMessage * bm)
     label = gtk_label_new(_("Message parts"));
     gtk_notebook_append_page(GTK_NOTEBOOK(bm), scroll, label);
     gtk_container_add(GTK_CONTAINER(scroll), bm->treeview);
-    gtk_widget_show_all(scroll);
     gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bm), FALSE);
 
     bm->current_part = NULL;
@@ -2704,8 +2690,10 @@ get_crypto_content_icon(LibBalsaMessageBody * body, const gchar * content_type,
     icon_name = balsa_mime_widget_signature_icon_name(libbalsa_message_body_protect_state(body));
     if (!icon_name)
         return NULL;
-    icon = gtk_widget_render_icon(GTK_WIDGET(balsa_app.main_window), icon_name,
-                                  GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
+    icon =
+        gtk_widget_render_icon_pixbuf(GTK_WIDGET(balsa_app.main_window),
+                                      icon_name,
+                                      GTK_ICON_SIZE_LARGE_TOOLBAR);
     if (!icon_title)
         return icon;
 
diff --git a/src/balsa-mime-widget-image.c b/src/balsa-mime-widget-image.c
index ce01d1b..9dfe6d9 100644
--- a/src/balsa-mime-widget-image.c
+++ b/src/balsa-mime-widget-image.c
@@ -67,15 +67,15 @@ balsa_mime_widget_new_image(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
     g_object_set_data(G_OBJECT(image), "mime-body", mime_body);
     g_object_unref(pixbuf);
     gtk_container_add(GTK_CONTAINER(mw->widget), image);
+#if 0
     gtk_widget_modify_bg(mw->widget, GTK_STATE_NORMAL,
                          &gtk_widget_get_style(GTK_WIDGET(bm))->
                          light[GTK_STATE_NORMAL]);
+#endif
 
     g_signal_connect(G_OBJECT(mw->widget), "button-press-event",
                      G_CALLBACK(balsa_image_button_press_cb), data);
 
-    gtk_widget_show(image);
-
     return mw;
 }
 
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 218e2ee..f050457 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -119,8 +119,6 @@ balsa_mime_widget_new_message(BalsaMessage * bm,
 	    break;
 	}
 	g_free(access_type);
-        if (mw)
-            gtk_widget_show_all(mw->widget);
     } else if (!g_ascii_strcasecmp("message/rfc822", content_type)) {
 	GtkWidget *emb_hdrs;
 
@@ -132,7 +130,6 @@ balsa_mime_widget_new_message(BalsaMessage * bm,
 	gtk_container_set_border_width(GTK_CONTAINER(mw->container),
 				       BMW_MESSAGE_PADDING);
 	gtk_container_add(GTK_CONTAINER(mw->widget), mw->container);
-        gtk_widget_show(mw->container);
 
         mw->header_widget = emb_hdrs = bm_header_widget_new(bm, NULL);
 	gtk_box_pack_start(GTK_BOX(mw->container), emb_hdrs, FALSE, FALSE, 0);
@@ -379,7 +376,7 @@ balsa_mime_widget_new_message_tl(BalsaMessage * bm, GtkWidget * tl_buttons)
     BalsaMimeWidget *mw;
 
     mw = g_object_new(BALSA_TYPE_MIME_WIDGET, NULL);
-    
+
     mw->widget = gtk_vbox_new(FALSE, BMW_MESSAGE_PADDING);
     gtk_container_set_border_width(GTK_CONTAINER(mw->widget), BMW_MESSAGE_PADDING);
 
@@ -389,7 +386,6 @@ balsa_mime_widget_new_message_tl(BalsaMessage * bm, GtkWidget * tl_buttons)
     mw->container = gtk_vbox_new(FALSE, BMW_MESSAGE_PADDING);
     gtk_box_pack_start(GTK_BOX(mw->widget), mw->container, TRUE, TRUE,
 		       BMW_CONTAINER_BORDER - BMW_MESSAGE_PADDING);
-    gtk_widget_show_all(mw->widget);
 
     return mw;
 }
@@ -404,29 +400,33 @@ balsa_mime_widget_new_message_tl(BalsaMessage * bm, GtkWidget * tl_buttons)
 static void
 bm_header_widget_realized(GtkWidget * widget, BalsaMessage * bm)
 {
-    GtkWidget *tl_buttons =
+    GtkStyleContext *context;
+    GdkRGBA rgba;
+    GtkWidget *tl_buttons;
+
+    context = gtk_widget_get_style_context(GTK_WIDGET(bm));
+    gtk_style_context_get_background_color(context, GTK_STATE_FLAG_NORMAL,
+                                           &rgba);
+    gtk_widget_override_background_color(bm_header_widget_get_text_view
+                                         (widget), GTK_STATE_FLAG_NORMAL,
+                                         &rgba);
+
+    tl_buttons =
         GTK_WIDGET(g_object_get_data(G_OBJECT(widget), "tl-buttons"));
-    GtkStyle *style = gtk_widget_get_style(GTK_WIDGET(bm));
-
-    gtk_widget_modify_bg(widget, GTK_STATE_NORMAL,
-                         &style->dark[GTK_STATE_NORMAL]);
-    gtk_widget_modify_base(bm_header_widget_get_text_view(widget),
-                           GTK_STATE_NORMAL,
-                           &style->mid[GTK_STATE_NORMAL]);
     if (tl_buttons) {
-        /* use a fresh style here to deal with pixmap themes correctly */
-        GtkStyle *new_style = gtk_style_new();
-        new_style->bg[GTK_STATE_NORMAL] = style->mid[GTK_STATE_NORMAL];
-        gtk_widget_set_style(tl_buttons, new_style);
-        g_object_unref(new_style);
+        gtk_widget_override_background_color(tl_buttons,
+                                             GTK_STATE_FLAG_NORMAL, &rgba);
     }
+
+    gtk_style_context_get_color(context, GTK_STATE_FLAG_NORMAL, &rgba);
+    gtk_widget_override_color(bm_header_widget_get_text_view(widget),
+                              GTK_STATE_FLAG_NORMAL, &rgba);
 }
 
 /* Callback for the "style-set" signal; reset colors when theme is
  * changed. */
 static void
-bm_header_widget_set_style(GtkWidget * widget, GtkStyle * previous_style,
-			   BalsaMessage * bm)
+bm_header_widget_set_style(GtkWidget * widget, BalsaMessage * bm)
 {
     g_signal_handlers_block_by_func(widget, bm_header_widget_set_style,
 				    bm);
@@ -486,7 +486,7 @@ bm_header_widget_new(BalsaMessage * bm, GtkWidget * buttons)
     g_object_set_data(G_OBJECT(widget), "tl-buttons", buttons);
     g_signal_connect_after(widget, "realize",
 			   G_CALLBACK(bm_header_widget_realized), bm);
-    g_signal_connect_after(widget, "style-set",
+    g_signal_connect_after(widget, "style-updated",
 			   G_CALLBACK(bm_header_widget_set_style), bm);
 
     hbox = gtk_hbox_new(FALSE, 0);
@@ -671,6 +671,7 @@ bmwm_buffer_set_prefs(GtkTextBuffer * buffer)
 {
     GtkTextTagTable *table = gtk_text_buffer_get_tag_table(buffer);
     GtkTextTag *tag;
+    GdkColor color;
 
     tag = gtk_text_tag_table_lookup(table, "subject-font");
     g_object_set(tag, "font", balsa_app.subject_font, NULL);
@@ -678,8 +679,12 @@ bmwm_buffer_set_prefs(GtkTextBuffer * buffer)
     tag = gtk_text_tag_table_lookup(table, "message-font");
     g_object_set(tag, "font", balsa_app.message_font, NULL);
 
+    color.red   = G_MAXUINT16 * balsa_app.url_color.red;
+    color.green = G_MAXUINT16 * balsa_app.url_color.green;
+    color.blue  = G_MAXUINT16 * balsa_app.url_color.blue;
+    color.pixel = 0;
     tag = gtk_text_tag_table_lookup(table, "url");
-    g_object_set(tag, "foreground-gdk", &balsa_app.url_color, NULL);
+    g_object_set(tag, "foreground-gdk", &color, NULL);
 }
 
 void
@@ -711,10 +716,10 @@ balsa_mime_widget_message_set_headers_d(BalsaMessage * bm,
     }
 
     if (bm->shown_headers == HEADERS_NONE) {
-	gtk_widget_hide(widget);
+        g_signal_connect(G_OBJECT(widget), "realize",
+                         G_CALLBACK(gtk_widget_hide), NULL);
 	return;
-    } else
-	gtk_widget_show_all(widget);
+    }
 
     bm->tab_position = 0;
 
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index fe28abd..d457db9 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -220,8 +220,6 @@ balsa_mime_widget_new_text(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
 		     (gpointer)mime_body);
 
     buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(mw->widget));
-    allocate_quote_colors(GTK_WIDGET(bm), balsa_app.quoted_color,
-			  0, MAX_QUOTED_COLOR - 1);
 
     url_list = fill_text_buf_cited(mw->widget, ptr,
                                    libbalsa_message_body_is_flowed(mime_body),
@@ -346,7 +344,7 @@ bm_modify_font_from_string(GtkWidget * widget, const char *font)
 {
     PangoFontDescription *desc =
         pango_font_description_from_string(balsa_app.message_font);
-    gtk_widget_modify_font(widget, desc);
+    gtk_widget_override_font(widget, desc);
     pango_font_description_free(desc);
 }
 
@@ -376,11 +374,20 @@ quote_tag(GtkTextBuffer * buffer, gint level, gint margin)
         tag = gtk_text_tag_table_lookup(table, name);
 
         if (!tag) {
+            GdkRGBA *rgba;
+            GdkColor color;
+
+            rgba = &balsa_app.quoted_color[q_level];
+            /* As of now, GtkTextTag has no "foreground-rgba" property :( */
+            color.red   = G_MAXUINT16 * rgba->red;
+            color.green = G_MAXUINT16 * rgba->green;
+            color.blue  = G_MAXUINT16 * rgba->blue;
+            color.pixel = 0;
+
             tag =
-                gtk_text_buffer_create_tag(buffer, name, "foreground-gdk",
-                                           &balsa_app.quoted_color[q_level],
-					   "left-margin",
-                                           BALSA_LEFT_MARGIN
+                gtk_text_buffer_create_tag(buffer, name,
+                                           "foreground-gdk", &color,
+					   "left-margin", BALSA_LEFT_MARGIN
                                            + margin * level,
                                            NULL);
             /* Set a low priority, so we can set both quote color and
@@ -915,39 +922,44 @@ draw_cite_bar_real(cite_bar_t * bar, cite_bar_draw_mode_t * draw_mode)
 
     /* initialise iters if we don't have the widget yet */
     if (!bar->bar) {
-	gtk_text_buffer_get_iter_at_offset(draw_mode->buffer, &bar->start_iter,
-					   bar->start_offs);
-	gtk_text_buffer_get_iter_at_offset(draw_mode->buffer, &bar->end_iter,
-					   bar->end_offs);
+        gtk_text_buffer_get_iter_at_offset(draw_mode->buffer,
+                                           &bar->start_iter,
+                                           bar->start_offs);
+        gtk_text_buffer_get_iter_at_offset(draw_mode->buffer,
+                                           &bar->end_iter,
+                                           bar->end_offs);
     }
 
     /* get the locations */
-    gtk_text_view_get_iter_location(draw_mode->view, &bar->start_iter, &location);
-    gtk_text_view_buffer_to_window_coords(draw_mode->view, GTK_TEXT_WINDOW_TEXT,
-					  location.x, location.y,
-					  &x_pos, &y_pos);
-    gtk_text_view_get_iter_location(draw_mode->view, &bar->end_iter, &location);
-    gtk_text_view_buffer_to_window_coords(draw_mode->view, GTK_TEXT_WINDOW_TEXT,
-					  location.x, location.y,
-					  &x_pos, &height);
+    gtk_text_view_get_iter_location(draw_mode->view, &bar->start_iter,
+                                    &location);
+    gtk_text_view_buffer_to_window_coords(draw_mode->view,
+                                          GTK_TEXT_WINDOW_TEXT, location.x,
+                                          location.y, &x_pos, &y_pos);
+    gtk_text_view_get_iter_location(draw_mode->view, &bar->end_iter,
+                                    &location);
+    gtk_text_view_buffer_to_window_coords(draw_mode->view,
+                                          GTK_TEXT_WINDOW_TEXT, location.x,
+                                          location.y, &x_pos, &height);
     height -= y_pos;
 
     /* add a new widget if necessary */
-    if (bar->bar == NULL) {
-	bar->bar = balsa_cite_bar_new(height, bar->depth, draw_mode->dimension);
-	gtk_widget_modify_fg(bar->bar, GTK_STATE_NORMAL,
-			     &balsa_app.quoted_color[(bar->depth - 1) % MAX_QUOTED_COLOR]);
-        gtk_widget_modify_bg(bar->bar, GTK_STATE_NORMAL,
-                             &gtk_widget_get_style(GTK_WIDGET
-                                                   (draw_mode->view))->
-                             base[GTK_STATE_NORMAL]);
-	gtk_widget_show(bar->bar);
-	gtk_text_view_add_child_in_window(draw_mode->view, bar->bar,
-					  GTK_TEXT_WINDOW_TEXT, 0, y_pos);
+    if (!bar->bar) {
+        bar->bar =
+            balsa_cite_bar_new(height, bar->depth, draw_mode->dimension);
+
+        gtk_widget_override_color(bar->bar, GTK_STATE_FLAG_NORMAL,
+                                  &balsa_app.
+                                  quoted_color[(bar->depth -
+                                                1) % MAX_QUOTED_COLOR]);
+
+        gtk_widget_show(bar->bar);
+        gtk_text_view_add_child_in_window(draw_mode->view, bar->bar,
+                                          GTK_TEXT_WINDOW_TEXT, 0, y_pos);
     } else if (bar->y_pos != y_pos || bar->height != height) {
-	/* shift/resize existing widget */
-	balsa_cite_bar_resize(BALSA_CITE_BAR(bar->bar), height);
-	gtk_text_view_move_child(draw_mode->view, bar->bar, 0, y_pos);
+        /* shift/resize existing widget */
+        balsa_cite_bar_resize(BALSA_CITE_BAR(bar->bar), height);
+        gtk_text_view_move_child(draw_mode->view, bar->bar, 0, y_pos);
     }
 
     /* remember current values */
@@ -1174,7 +1186,6 @@ bm_widget_new_vcard(BalsaMessage *bm, LibBalsaMessageBody *mime_body,
     }
         
     g_object_set_data(G_OBJECT(mw->widget), "mime-body", mime_body);
-    gtk_widget_show_all(mw->widget);
     return mw;
 }
 
@@ -1237,6 +1248,7 @@ fill_text_buf_cited(GtkWidget *widget, const gchar *text_body,
     regex_t rex;
 #endif                          /* USE_GREGEX */
     gboolean have_regex;
+    GdkColor color;
 
     /* prepare citation regular expression for plain bodies */
     if (is_plain) {
@@ -1262,9 +1274,12 @@ fill_text_buf_cited(GtkWidget *widget, const gchar *text_body,
     margin = (char_width / 72.0) *
         gdk_screen_get_resolution(gdk_screen_get_default());
 
+    color.red   = G_MAXUINT16 * balsa_app.url_color.red;
+    color.green = G_MAXUINT16 * balsa_app.url_color.green;
+    color.blue  = G_MAXUINT16 * balsa_app.url_color.blue;
+    color.pixel = 0;
     gtk_text_buffer_create_tag(buffer, "url",
-                               "foreground-gdk",
-                               &balsa_app.url_color, NULL);
+                               "foreground-gdk", &color, NULL);
     gtk_text_buffer_create_tag(buffer, "emphasize",
                                "foreground", "red",
                                "underline", PANGO_UNDERLINE_SINGLE,
diff --git a/src/balsa-mime-widget-vcalendar.c b/src/balsa-mime-widget-vcalendar.c
index 6925319..cee76de 100644
--- a/src/balsa-mime-widget-vcalendar.c
+++ b/src/balsa-mime-widget-vcalendar.c
@@ -96,7 +96,6 @@ balsa_mime_widget_new_vcalendar(BalsaMessage * bm,
 	gtk_container_add(GTK_CONTAINER(mw->widget), event);
     }
 
-    gtk_widget_show_all(mw->widget);
     g_object_unref(vcal_obj);
 
     return mw;
diff --git a/src/balsa-print-object-text.c b/src/balsa-print-object-text.c
index e39f88e..4f6f942 100644
--- a/src/balsa-print-object-text.c
+++ b/src/balsa-print-object-text.c
@@ -803,9 +803,9 @@ balsa_print_object_text_draw(BalsaPrintObject * self,
 	    gint k = (po->cite_level - 1) % MAX_QUOTED_COLOR;
 
 	    cairo_set_source_rgb(cairo_ctx,
-				 (gdouble) balsa_app.quoted_color[k].red / 65536.0,
-				 (gdouble) balsa_app.quoted_color[k].green / 65536.0,
-				 (gdouble) balsa_app.quoted_color[k].blue / 65536.0);
+				 balsa_app.quoted_color[k].red,
+				 balsa_app.quoted_color[k].green,
+				 balsa_app.quoted_color[k].blue);
 	}
     }
     cairo_move_to(cairo_ctx, self->c_at_x + po->cite_level * C_LABEL_SEP,
diff --git a/src/main-window.c b/src/main-window.c
index f45c588..abad69c 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -948,16 +948,6 @@ balsa_window_class_init(BalsaWindowClass * klass)
 {
     GObjectClass *object_class = (GObjectClass *) klass;
 
-    gtk_rc_parse_string("style \"balsa-notebook-tab-button-style\"\n"
-                        "{\n"
-                          "GtkWidget::focus-padding = 0\n"
-                          "GtkWidget::focus-line-width = 0\n"
-                          "xthickness = 0\n"
-                          "ythickness = 0\n"
-                        "}\n"
-                        "widget \"*.balsa-notebook-tab-button\"\n"
-                        "style    \"balsa-notebook-tab-button-style\"");
-
     window_signals[OPEN_MAILBOX_NODE] =
         g_signal_new("open_mailbox_node",
                      G_TYPE_FROM_CLASS(object_class),
@@ -2256,6 +2246,7 @@ bw_notebook_label_new(BalsaMailboxNode * mbnode)
     GtkWidget *but;
     GtkSettings *settings;
     gint w, h;
+    GtkCssProvider *css_provider;
 
     box = gtk_hbox_new(FALSE, 4);
 
@@ -2273,6 +2264,25 @@ bw_notebook_label_new(BalsaMailboxNode * mbnode)
     gtk_button_set_relief(GTK_BUTTON(but), GTK_RELIEF_NONE);
     gtk_widget_set_name(but, "balsa-notebook-tab-button");
 
+    /* Try to make small close buttons: */
+    css_provider = gtk_css_provider_new();
+    if (!gtk_css_provider_load_from_data(css_provider,
+                                         "#balsa-notebook-tab-button"
+                                         "{"
+                                           "-GtkWidget-focus-padding: 0;"
+                                           "-GtkWidget-focus-line-width: 0;"
+                                           "border-width: 0;"
+                                           "padding: 0;"
+                                           "margin: 0;"
+                                         "}",
+                                         -1, NULL))
+        g_print("Could not load CSS data.\n");
+
+    gtk_style_context_add_provider(gtk_widget_get_style_context(but) ,
+                                   GTK_STYLE_PROVIDER(css_provider),
+                                   GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+    g_object_unref(css_provider);
+
     settings = gtk_widget_get_settings(GTK_WIDGET(lab));
     gtk_icon_size_lookup_for_settings(settings, GTK_ICON_SIZE_MENU, &w, &h);
     gtk_widget_set_size_request(but, w, h);
diff --git a/src/pref-manager.c b/src/pref-manager.c
index 9c44875..e79800d 100644
--- a/src/pref-manager.c
+++ b/src/pref-manager.c
@@ -1070,17 +1070,17 @@ apply_prefs(GtkDialog * pbox)
 
     /* quoted text color */
     for (i = 0; i < MAX_QUOTED_COLOR; i++) {
-        gtk_color_button_get_color(GTK_COLOR_BUTTON(pui->quoted_color[i]),
-                                   &balsa_app.quoted_color[i]);
+        gtk_color_button_get_rgba(GTK_COLOR_BUTTON(pui->quoted_color[i]),
+                                  &balsa_app.quoted_color[i]);
     }
 
     /* url color */
-    gtk_color_button_get_color(GTK_COLOR_BUTTON(pui->url_color),
-                               &balsa_app.url_color);
+    gtk_color_button_get_rgba(GTK_COLOR_BUTTON(pui->url_color),
+                              &balsa_app.url_color);
 
     /* bad address color */
-    gtk_color_button_get_color(GTK_COLOR_BUTTON(pui->bad_address_color),
-                               &balsa_app.bad_address_color);
+    gtk_color_button_get_rgba(GTK_COLOR_BUTTON(pui->bad_address_color),
+                              &balsa_app.bad_address_color);
 
     /* sorting and threading */
     libbalsa_mailbox_set_sort_field(NULL, pui->sort_field_index);
@@ -1320,12 +1320,12 @@ set_prefs(void)
 
     /* Colour */
     for (i = 0; i < MAX_QUOTED_COLOR; i++)
-        gtk_color_button_set_color(GTK_COLOR_BUTTON(pui->quoted_color[i]),
-                                   &balsa_app.quoted_color[i]);
-    gtk_color_button_set_color(GTK_COLOR_BUTTON(pui->url_color),
-                               &balsa_app.url_color);
-    gtk_color_button_set_color(GTK_COLOR_BUTTON(pui->bad_address_color),
-                               &balsa_app.bad_address_color);
+        gtk_color_button_set_rgba(GTK_COLOR_BUTTON(pui->quoted_color[i]),
+                                  &balsa_app.quoted_color[i]);
+    gtk_color_button_set_rgba(GTK_COLOR_BUTTON(pui->url_color),
+                              &balsa_app.url_color);
+    gtk_color_button_set_rgba(GTK_COLOR_BUTTON(pui->bad_address_color),
+                              &balsa_app.bad_address_color);
 
     /* Information Message */
     pm_combo_box_set_level(pui->information_message_menu,
diff --git a/src/quote-color.c b/src/quote-color.c
index 5dcac00..30b0de9 100644
--- a/src/quote-color.c
+++ b/src/quote-color.c
@@ -80,32 +80,3 @@ is_a_quote(const gchar * str, regex_t * rex)
 
     return cnt;
 }
-
-
-/*
- * void allocate_quote_colors.
- *
- * Allocate a color for each of the gradients from the correct
- * colormap.
- */
-void
-allocate_quote_colors(GtkWidget * widget, GdkColor color[],
-                      gint first, gint last)
-{
-    gint i;
-
-    for (i = first; i <= last; i++) {
-#if 0
-        if (!gdk_colormap_alloc_color(balsa_app.colormap,
-                                      &color[i], FALSE, TRUE)) {
-            /* Use black instead: */
-            color[i].red = color[i].green = color[i].blue = 0;
-            gdk_colormap_alloc_color(balsa_app.colormap, &color[i], FALSE,
-                                     TRUE);
-        }
-#endif
-    }
-}
-
-
-
diff --git a/src/quote-color.h b/src/quote-color.h
index 2288581..d515969 100644
--- a/src/quote-color.h
+++ b/src/quote-color.h
@@ -51,8 +51,6 @@ extern "C" {
 #else                           /* USE_GREGEX */
     extern guint is_a_quote(const gchar *, regex_t * rex);
 #endif                          /* USE_GREGEX */
-    extern void allocate_quote_colors(GtkWidget *, GdkColor color[], gint, gint);
-
 
 #ifdef __cplusplus
 }
diff --git a/src/save-restore.c b/src/save-restore.c
index 7939fe0..8bb26f0 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -62,8 +62,8 @@ static gint config_folder_init(const gchar * group);
 static gint config_mailbox_init(const gchar * group);
 static gchar *config_get_unused_group(const gchar * group);
 
-static void save_color(gchar * key, GdkColor * color);
-static void load_color(gchar * key, GdkColor * color);
+static void save_color(gchar * key, GdkRGBA * rgba);
+static void load_color(gchar * key, GdkRGBA * rgba);
 static void save_mru(GList  *mru, const gchar * group);
 static void load_mru(GList **mru, const gchar * group);
 
@@ -1939,12 +1939,11 @@ config_view_remove(const gchar * url)
 }
 
 static void
-save_color(gchar * key, GdkColor * color)
+save_color(gchar * key, GdkRGBA * rgba)
 {
     gchar *str;
 
-    str = g_strdup_printf("#%04x%04x%04x", color->red, color->green,
-                          color->blue);
+    str = gdk_rgba_to_string(rgba);
     libbalsa_conf_set_string(key, str);
     g_free(str);
 }
@@ -2054,15 +2053,12 @@ config_mailbox_filters_save(LibBalsaMailbox * mbox)
 }
 
 static void
-load_color(gchar * key, GdkColor * color)
+load_color(gchar * key, GdkRGBA * rgba)
 {
     gchar *str;
 
     str = libbalsa_conf_get_string(key);
-    if (g_ascii_strncasecmp(str, "rgb:", 4)
-        || sscanf(str + 4, "%4hx/%4hx/%4hx", &color->red, &color->green,
-                  &color->blue) != 3)
-        gdk_color_parse(str, color);
+    gdk_rgba_parse(rgba, str);
     g_free(str);
 }
 
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index 078f0a9..e2785eb 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -2211,9 +2211,10 @@ add_urlref_attachment(BalsaSendmsg * bsmsg, gchar *url)
 	fprintf(stderr, "Trying to attach '%s'\n", url);
 
     /* get the pixbuf for the attachment's content type */
-    pixbuf = gtk_widget_render_icon(GTK_WIDGET(balsa_app.main_window),
-				    GTK_STOCK_JUMP_TO,
-				    GTK_ICON_SIZE_MENU, NULL);
+    pixbuf =
+        gtk_widget_render_icon_pixbuf(GTK_WIDGET(balsa_app.main_window),
+                                      GTK_STOCK_JUMP_TO,
+                                      GTK_ICON_SIZE_MENU);
 
     /* create a new attachment info block */
     attach_data = balsa_attach_info_new(bsmsg);
@@ -2597,7 +2598,9 @@ create_email_or_string_entry(GtkWidget * table, const gchar * label,
 		     GTK_FILL, GTK_FILL | GTK_SHRINK, 0, 0);
 
     desc = pango_font_description_from_string(balsa_app.message_font);
+#if 0
     gtk_widget_modify_font(arr[1], desc);
+#endif
     pango_font_description_free(desc);
 
     gtk_table_attach(GTK_TABLE(table), arr[1], 1, 2, y_pos, y_pos + 1,
@@ -3191,9 +3194,7 @@ create_text_area(BalsaSendmsg * bsmsg)
     GtkWidget *table;
 
 #if HAVE_GTKSOURCEVIEW
-    bsmsg->text = libbalsa_source_view_new(TRUE, balsa_app.quoted_color);
-    gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(bsmsg->text),
-                                          FALSE);
+    bsmsg->text = libbalsa_source_view_new(TRUE);
 #else                           /* HAVE_GTKSOURCEVIEW */
     bsmsg->text = gtk_text_view_new();
 #endif                          /* HAVE_GTKSOURCEVIEW */
@@ -3203,7 +3204,7 @@ create_text_area(BalsaSendmsg * bsmsg)
 
     /* set the message font */
     desc = pango_font_description_from_string(balsa_app.message_font);
-    gtk_widget_modify_font(bsmsg->text, desc);
+    gtk_widget_override_font(bsmsg->text, desc);
     pango_font_description_free(desc);
 
     buffer = gtk_text_view_get_buffer(text_view);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]