# HG changeset patch # User Tim Ringenbach # Date 1113009868 0 # Node ID 6f67d4088da0f85a09535e7418de2c5a9115ce37 # Parent 08981462ebbb31313bdb44e0237228f46e12d69c [gaim-migrate @ 12442] added some things to the change log added mouse-over hyperlink colorage committer: Tailor Script diff -r 08981462ebbb -r 6f67d4088da0 ChangeLog --- a/ChangeLog Fri Apr 08 22:44:02 2005 +0000 +++ b/ChangeLog Sat Apr 09 01:24:28 2005 +0000 @@ -32,6 +32,9 @@ or change your nick (Richard Laager) * Text Replacement Plugin rewritten, works in real time and far more intuitively (Benjamin Kahn with help from Richard Laager) + * Full message bckground colors are now supported + * Smooth scrolling when receiving a new message + * Themeable mouse-over hyperlink coloring Bug fixes: * People using input methods can now use Enter again. diff -r 08981462ebbb -r 6f67d4088da0 src/gtkimhtml.c --- a/src/gtkimhtml.c Fri Apr 08 22:44:02 2005 +0000 +++ b/src/gtkimhtml.c Sat Apr 09 01:24:28 2005 +0000 @@ -420,21 +420,47 @@ int x, y; char *tip = NULL; GSList *tags = NULL, *templist = NULL; + GdkColor *norm, *pre; + GtkTextTag *tag = NULL, *oldprelit_tag; + + oldprelit_tag = GTK_IMHTML(imhtml)->prelit_tag; + gdk_window_get_pointer(GTK_WIDGET(imhtml)->window, NULL, NULL, NULL); gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(imhtml), GTK_TEXT_WINDOW_WIDGET, - event->x, event->y, &x, &y); + event->x, event->y, &x, &y); gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(imhtml), &iter, x, y); tags = gtk_text_iter_get_tags(&iter); templist = tags; while (templist) { - GtkTextTag *tag = templist->data; + tag = templist->data; tip = g_object_get_data(G_OBJECT(tag), "link_url"); if (tip) break; templist = templist->next; } + if (tip) { + gtk_widget_style_get(GTK_WIDGET(imhtml), "hyperlink-prelight-color", &pre, NULL); + GTK_IMHTML(imhtml)->prelit_tag = tag; + if (tag != oldprelit_tag) { + if (pre) + g_object_set(G_OBJECT(tag), "foreground-gdk", pre, NULL); + else + g_object_set(G_OBJECT(tag), "foreground", "light blue", NULL); + } + } else { + GTK_IMHTML(imhtml)->prelit_tag = NULL; + } + + if (GTK_IMHTML(imhtml)->prelit_tag != oldprelit_tag) { + gtk_widget_style_get(GTK_WIDGET(imhtml), "hyperlink-color", &norm, NULL); + if (norm) + g_object_set(G_OBJECT(oldprelit_tag), "foreground-gdk", norm, NULL); + else + g_object_set(G_OBJECT(oldprelit_tag), "foreground", "blue", NULL); + } + if (GTK_IMHTML(imhtml)->tip) { if ((tip == GTK_IMHTML(imhtml)->tip)) { return FALSE; @@ -453,7 +479,7 @@ GTK_IMHTML(imhtml)->tip_timer = 0; } - if(tip){ + if (tip){ if (!GTK_IMHTML(imhtml)->editable) gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor); GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT, @@ -468,6 +494,16 @@ gboolean gtk_leave_event_notify(GtkWidget *imhtml, GdkEventCrossing *event, gpointer data) { /* when leaving the widget, clear any current & pending tooltips and restore the cursor */ + if (GTK_IMHTML(imhtml)->prelit_tag) { + GdkColor *norm; + gtk_widget_style_get(GTK_WIDGET(imhtml), "hyperlink-color", &norm, NULL); + if (norm) + g_object_set(G_OBJECT(GTK_IMHTML(imhtml)->prelit_tag), "foreground-gdk", norm, NULL); + else + g_object_set(G_OBJECT(GTK_IMHTML(imhtml)->prelit_tag), "foreground", "blue", NULL); + GTK_IMHTML(imhtml)->prelit_tag = NULL; + } + if (GTK_IMHTML(imhtml)->tip_window) { gtk_widget_destroy(GTK_IMHTML(imhtml)->tip_window); GTK_IMHTML(imhtml)->tip_window = NULL; @@ -1175,6 +1211,10 @@ _("Hyperlink color"), _("Color to draw hyperlinks."), GDK_TYPE_COLOR, G_PARAM_READABLE)); + gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("hyperlink-prelight-color", + _("Hyperlink prelight color"), + _("Color to draw hyperlinks when mouse is over them."), + GDK_TYPE_COLOR, G_PARAM_READABLE)); binding_set = gtk_binding_set_by_class (parent_class); gtk_binding_entry_add_signal (binding_set, GDK_b, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_BOLD); diff -r 08981462ebbb -r 6f67d4088da0 src/gtkimhtml.h --- a/src/gtkimhtml.h Fri Apr 08 22:44:02 2005 +0000 +++ b/src/gtkimhtml.h Sat Apr 09 01:24:28 2005 +0000 @@ -89,6 +89,7 @@ GtkWidget *tip_window; char *tip; guint tip_timer; + GtkTextTag *prelit_tag; GList *scalables; GdkRectangle old_rect;