summaryrefslogtreecommitdiff
path: root/gtk/gtklinkbutton.c
diff options
context:
space:
mode:
authorSven Neumann <sven@gimp.org>2008-08-07 11:37:57 +0000
committerSven Neumann <neo@src.gnome.org>2008-08-07 11:37:57 +0000
commit75d4f90a1458164e5a08626e04bffc3159d0750b (patch)
tree1719425b73eddb7c9d8bb746ef1044c11278f352 /gtk/gtklinkbutton.c
parent0324c243f3922601a169b1dc244000226cd11945 (diff)
downloadgtk+-75d4f90a1458164e5a08626e04bffc3159d0750b.tar.gz
Bug 546771 - Add writable property "visited" to GtkLinkButton
2008-08-07 Sven Neumann <sven@gimp.org> Bug 546771 - Add writable property "visited" to GtkLinkButton * gtk/gtk.symbols * gtk/gtklinkbutton.[ch]: expose the 'visited' state as a read-write property with getters and setters. Also move the nick and blurb of the "uri" property to the proper translation domain. svn path=/trunk/; revision=21032
Diffstat (limited to 'gtk/gtklinkbutton.c')
-rw-r--r--gtk/gtklinkbutton.c102
1 files changed, 85 insertions, 17 deletions
diff --git a/gtk/gtklinkbutton.c b/gtk/gtklinkbutton.c
index da74322b50..10c4620801 100644
--- a/gtk/gtklinkbutton.c
+++ b/gtk/gtklinkbutton.c
@@ -54,8 +54,8 @@ struct _GtkLinkButtonPrivate
enum
{
PROP_0,
-
- PROP_URI
+ PROP_URI,
+ PROP_VISITED
};
#define GTK_LINK_BUTTON_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_LINK_BUTTON, GtkLinkButtonPrivate))
@@ -141,10 +141,25 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
g_object_class_install_property (gobject_class,
PROP_URI,
g_param_spec_string ("uri",
- _("URI"),
- _("The URI bound to this button"),
+ P_("URI"),
+ P_("The URI bound to this button"),
NULL,
G_PARAM_READWRITE));
+ /**
+ * GtkLinkButton:visited
+ *
+ * The 'visited' state of this button. A visited link is drawn in a
+ * different color.
+ *
+ * Since: 2.14
+ */
+ g_object_class_install_property (gobject_class,
+ PROP_VISITED,
+ g_param_spec_boolean ("visited",
+ P_("Visited"),
+ P_("Whether this link has been visited."),
+ FALSE,
+ G_PARAM_READWRITE));
g_type_class_add_private (gobject_class, sizeof (GtkLinkButtonPrivate));
}
@@ -156,12 +171,13 @@ gtk_link_button_init (GtkLinkButton *link_button)
gtk_button_set_relief (GTK_BUTTON (link_button), GTK_RELIEF_NONE);
- g_signal_connect (link_button, "enter_notify_event",
+ g_signal_connect (link_button, "enter-notify-event",
G_CALLBACK (gtk_link_button_enter_cb), NULL);
- g_signal_connect (link_button, "leave_notify_event",
+ g_signal_connect (link_button, "leave-notify-event",
G_CALLBACK (gtk_link_button_leave_cb), NULL);
- g_signal_connect (link_button, "drag_data_get",
+ g_signal_connect (link_button, "drag-data-get",
G_CALLBACK (gtk_link_button_drag_data_get_cb), NULL);
+
g_object_set (link_button, "has-tooltip", TRUE, NULL);
g_signal_connect (link_button, "query-tooltip",
G_CALLBACK (gtk_link_button_query_tooltip_cb), NULL);
@@ -196,6 +212,9 @@ gtk_link_button_get_property (GObject *object,
case PROP_URI:
g_value_set_string (value, link_button->priv->uri);
break;
+ case PROP_VISITED:
+ g_value_set_boolean (value, link_button->priv->visited);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -215,6 +234,9 @@ gtk_link_button_set_property (GObject *object,
case PROP_URI:
gtk_link_button_set_uri (link_button, g_value_get_string (value));
break;
+ case PROP_VISITED:
+ gtk_link_button_set_visited (link_button, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -450,9 +472,7 @@ gtk_link_button_clicked (GtkButton *button)
if (uri_func)
(* uri_func) (link_button, link_button->priv->uri, uri_func_data);
- link_button->priv->visited = TRUE;
-
- set_link_color (link_button);
+ gtk_link_button_set_visited (link_button, TRUE);
}
static gboolean
@@ -612,7 +632,8 @@ gtk_link_button_query_tooltip_cb (GtkWidget *widget,
* @link_button: a #GtkLinkButton
* @uri: a valid URI
*
- * Sets @uri as the URI where the #GtkLinkButton points.
+ * Sets @uri as the URI where the #GtkLinkButton points. As a side-effect
+ * this unsets the 'visited' state of the button.
*
* Since: 2.10
*/
@@ -630,13 +651,9 @@ gtk_link_button_set_uri (GtkLinkButton *link_button,
g_free (priv->uri);
priv->uri = g_strdup (uri);
- if (priv->visited)
- {
- priv->visited = FALSE;
- set_link_color (link_button);
- }
-
g_object_notify (G_OBJECT (link_button), "uri");
+
+ gtk_link_button_set_visited (link_button, FALSE);
}
/**
@@ -691,5 +708,56 @@ gtk_link_button_set_uri_hook (GtkLinkButtonUriFunc func,
return old_uri_func;
}
+/**
+ * gtk_link_button_set_visited:
+ * @link_button: a #GtkLinkButton
+ * @visited: the new 'visited' state
+ *
+ * Sets the 'visited' state of the URI where the #GtkLinkButton
+ * points. See gtk_link_button_get_visited() for more details.
+ *
+ * Since: 2.14
+ */
+void
+gtk_link_button_set_visited (GtkLinkButton *link_button,
+ gboolean visited)
+{
+ g_return_if_fail (GTK_IS_LINK_BUTTON (link_button));
+
+ visited = visited != FALSE;
+
+ if (link_button->priv->visited != visited)
+ {
+ link_button->priv->visited = visited;
+
+ set_link_color (link_button);
+
+ g_object_notify (G_OBJECT (link_button), "visited");
+ }
+}
+
+/**
+ * gtk_link_button_get_visited:
+ * @link_button: a #GtkLinkButton
+ *
+ * Retrieves the 'visited' state of the URI where the #GtkLinkButton
+ * points. The button becomes visited when it is clicked. If the URI
+ * is changed on the button, the 'visited' state is unset again.
+ *
+ * The state may also be changed using gtk_link_button_set_visited().
+ *
+ * Return value: %TRUE if the link has been visited, %FALSE otherwise
+ *
+ * Since: 2.14
+ */
+gboolean
+gtk_link_button_get_visited (GtkLinkButton *link_button)
+{
+ g_return_val_if_fail (GTK_IS_LINK_BUTTON (link_button), FALSE);
+
+ return link_button->priv->visited;
+}
+
+
#define __GTK_LINK_BUTTON_C__
#include "gtkaliasdef.c"