diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ephy-start-here.c | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/lib/ephy-start-here.c b/lib/ephy-start-here.c index 06d08de38..3de8dffa3 100644 --- a/lib/ephy-start-here.c +++ b/lib/ephy-start-here.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <gtk/gtk.h> #include <libxml/tree.h> #include <libgnome/gnome-i18n.h> #include <string.h> @@ -303,15 +304,21 @@ attach_content (EphyStartHere *sh, xmlNodePtr node, xmlChar *id) } } +static char * +color_to_string (GdkColor color) +{ + return g_strdup_printf ("#%.2x%.2x%.2x", + color.red >> 8, + color.green >> 8, + color.blue >> 8); +} + static void build_content (EphyStartHere *sh, xmlNodePtr node) { while (node) { xmlChar *id; - xmlNodePtr next; - - next = node->next; id = xmlGetProp (node, "id"); if (id) @@ -320,6 +327,50 @@ build_content (EphyStartHere *sh, xmlNodePtr node) xmlFree (id); } + if (xmlStrEqual (node->name, "section")) + { + GtkWidget *widget, *window; + GdkColor color; + char *str; + + /* create a random widget that we will use to get + * the current style + */ + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + widget = gtk_label_new (""); + gtk_container_add (GTK_CONTAINER (window), widget); + gtk_widget_realize (window); + gtk_widget_realize (widget); + gtk_widget_ensure_style (widget); + + color = widget->style->bg[GTK_STATE_NORMAL]; + str = color_to_string (color); + xmlSetProp (node, "bg", str); + g_free (str); + + color = widget->style->text[GTK_STATE_SELECTED]; + str = color_to_string (color); + xmlSetProp (node, "title", str); + g_free (str); + + color = widget->style->bg[GTK_STATE_ACTIVE]; + str = color_to_string (color); + xmlSetProp (node, "title-bg", str); + g_free (str); + + color = widget->style->bg[GTK_STATE_SELECTED]; + str = color_to_string (color); + xmlSetProp (node, "link", str); + g_free (str); + + color = widget->style->text[GTK_STATE_NORMAL]; + str = color_to_string (color); + xmlSetProp (node, "text", str); + g_free (str); + + gtk_widget_destroy (window); + } + build_content (sh, node->children); node = node->next; } |