[gtk+] ilabel: Redo gtk_label_get_link_colors()
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] ilabel: Redo gtk_label_get_link_colors()
- Date: Fri, 6 Jan 2012 04:24:24 +0000 (UTC)
commit 15ac5728229c37f958ed977702875bcad0b5b1dc
Author: Benjamin Otte <otte redhat com>
Date: Fri Jan 6 04:25:02 2012 +0100
ilabel: Redo gtk_label_get_link_colors()
Don't pass out an allocated color, assign it instead. Gets rid of having
to call gdk_color_free() all the time.
gtk/gtklabel.c | 58 +++++++++++++++++++++++++++++--------------------------
1 files changed, 31 insertions(+), 27 deletions(-)
---
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 8ee4a7e..6abcb66 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -503,8 +503,8 @@ static gboolean gtk_label_activate_link (GtkLabel *label,
static void gtk_label_activate_current_link (GtkLabel *label);
static GtkLabelLink *gtk_label_get_current_link (GtkLabel *label);
static void gtk_label_get_link_colors (GtkWidget *widget,
- GdkColor **link_color,
- GdkColor **visited_link_color);
+ GdkColor *link_color,
+ GdkColor *visited_link_color);
static void emit_activate_link (GtkLabel *label,
GtkLabelLink *link);
@@ -2254,8 +2254,8 @@ typedef struct
GList *links;
GString *new_str;
gsize text_len;
- GdkColor *link_color;
- GdkColor *visited_link_color;
+ GdkColor link_color;
+ GdkColor visited_link_color;
} UriParserData;
static void
@@ -2330,9 +2330,9 @@ start_element_handler (GMarkupParseContext *context,
}
if (visited)
- color = pdata->visited_link_color;
+ color = &pdata->visited_link_color;
else
- color = pdata->link_color;
+ color = &pdata->link_color;
g_string_append_printf (pdata->new_str,
"<span color=\"#%04x%04x%04x\" underline=\"single\">",
@@ -2436,21 +2436,33 @@ link_free (GtkLabelLink *link)
}
static void
-gtk_label_get_link_colors (GtkWidget *widget,
- GdkColor **link_color,
- GdkColor **visited_link_color)
+gtk_label_get_link_colors (GtkWidget *widget,
+ GdkColor *link_color,
+ GdkColor *visited_link_color)
{
GtkStyleContext *context;
+ GdkColor *link, *visited;
context = gtk_widget_get_style_context (widget);
gtk_style_context_get_style (context,
- "link-color", link_color,
- "visited-link-color", visited_link_color,
+ "link-color", &link,
+ "visited-link-color", &visited,
NULL);
- if (!*link_color)
- *link_color = gdk_color_copy (&default_link_color);
- if (!*visited_link_color)
- *visited_link_color = gdk_color_copy (&default_visited_link_color);
+ if (link)
+ {
+ *link_color = *link;
+ gdk_color_free (link);
+ }
+ else
+ *link_color = default_link_color;
+
+ if (visited)
+ {
+ *visited_link_color = *visited;
+ gdk_color_free (visited);
+ }
+ else
+ *visited_link_color = default_visited_link_color;
}
static gboolean
@@ -2508,17 +2520,12 @@ parse_uri_markup (GtkLabel *label,
*new_str = g_string_free (pdata.new_str, FALSE);
*links = pdata.links;
- gdk_color_free (pdata.link_color);
- gdk_color_free (pdata.visited_link_color);
-
return TRUE;
failed:
g_markup_parse_context_free (context);
g_string_free (pdata.new_str, TRUE);
g_list_free_full (pdata.links, (GDestroyNotify) link_free);
- gdk_color_free (pdata.link_color);
- gdk_color_free (pdata.visited_link_color);
return FALSE;
}
@@ -4086,8 +4093,8 @@ gtk_label_draw (GtkWidget *widget,
cairo_region_t *clip;
GdkRectangle rect;
GdkColor *text_color;
- GdkColor *link_color;
- GdkColor *visited_link_color;
+ GdkColor link_color;
+ GdkColor visited_link_color;
if (info->selectable &&
gtk_widget_has_focus (widget) &&
@@ -4124,9 +4131,9 @@ gtk_label_draw (GtkWidget *widget,
gtk_label_get_link_colors (widget, &link_color, &visited_link_color);
if (active_link->visited)
- text_color = visited_link_color;
+ text_color = &visited_link_color;
else
- text_color = link_color;
+ text_color = &link_color;
if (info->link_clicked)
state |= GTK_STATE_FLAG_ACTIVE;
@@ -4142,9 +4149,6 @@ gtk_label_draw (GtkWidget *widget,
cairo_move_to (cr, x, y);
_gtk_pango_fill_layout (cr, priv->layout);
- gdk_color_free (link_color);
- gdk_color_free (visited_link_color);
-
cairo_restore (cr);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]