mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-11 11:20:12 +00:00
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
This commit is contained in:
parent
0324c243f3
commit
75d4f90a14
@ -1,3 +1,12 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2008-08-07 Michael Natterer <mitch@imendio.com>
|
2008-08-07 Michael Natterer <mitch@imendio.com>
|
||||||
|
|
||||||
* gtk/gtkicontheme.c (apply_emblems): move variables to local
|
* gtk/gtkicontheme.c (apply_emblems): move variables to local
|
||||||
|
@ -2103,6 +2103,8 @@ gtk_link_button_new_with_label
|
|||||||
gtk_link_button_get_uri
|
gtk_link_button_get_uri
|
||||||
gtk_link_button_set_uri
|
gtk_link_button_set_uri
|
||||||
gtk_link_button_set_uri_hook
|
gtk_link_button_set_uri_hook
|
||||||
|
gtk_link_button_get_visited
|
||||||
|
gtk_link_button_set_visited
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -54,8 +54,8 @@ struct _GtkLinkButtonPrivate
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
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))
|
#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,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_URI,
|
PROP_URI,
|
||||||
g_param_spec_string ("uri",
|
g_param_spec_string ("uri",
|
||||||
_("URI"),
|
P_("URI"),
|
||||||
_("The URI bound to this button"),
|
P_("The URI bound to this button"),
|
||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READWRITE));
|
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));
|
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);
|
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_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_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_CALLBACK (gtk_link_button_drag_data_get_cb), NULL);
|
||||||
|
|
||||||
g_object_set (link_button, "has-tooltip", TRUE, NULL);
|
g_object_set (link_button, "has-tooltip", TRUE, NULL);
|
||||||
g_signal_connect (link_button, "query-tooltip",
|
g_signal_connect (link_button, "query-tooltip",
|
||||||
G_CALLBACK (gtk_link_button_query_tooltip_cb), NULL);
|
G_CALLBACK (gtk_link_button_query_tooltip_cb), NULL);
|
||||||
@ -196,6 +212,9 @@ gtk_link_button_get_property (GObject *object,
|
|||||||
case PROP_URI:
|
case PROP_URI:
|
||||||
g_value_set_string (value, link_button->priv->uri);
|
g_value_set_string (value, link_button->priv->uri);
|
||||||
break;
|
break;
|
||||||
|
case PROP_VISITED:
|
||||||
|
g_value_set_boolean (value, link_button->priv->visited);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -215,6 +234,9 @@ gtk_link_button_set_property (GObject *object,
|
|||||||
case PROP_URI:
|
case PROP_URI:
|
||||||
gtk_link_button_set_uri (link_button, g_value_get_string (value));
|
gtk_link_button_set_uri (link_button, g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_VISITED:
|
||||||
|
gtk_link_button_set_visited (link_button, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -450,9 +472,7 @@ gtk_link_button_clicked (GtkButton *button)
|
|||||||
if (uri_func)
|
if (uri_func)
|
||||||
(* uri_func) (link_button, link_button->priv->uri, uri_func_data);
|
(* uri_func) (link_button, link_button->priv->uri, uri_func_data);
|
||||||
|
|
||||||
link_button->priv->visited = TRUE;
|
gtk_link_button_set_visited (link_button, TRUE);
|
||||||
|
|
||||||
set_link_color (link_button);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -612,7 +632,8 @@ gtk_link_button_query_tooltip_cb (GtkWidget *widget,
|
|||||||
* @link_button: a #GtkLinkButton
|
* @link_button: a #GtkLinkButton
|
||||||
* @uri: a valid URI
|
* @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
|
* Since: 2.10
|
||||||
*/
|
*/
|
||||||
@ -630,13 +651,9 @@ gtk_link_button_set_uri (GtkLinkButton *link_button,
|
|||||||
g_free (priv->uri);
|
g_free (priv->uri);
|
||||||
priv->uri = g_strdup (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");
|
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;
|
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__
|
#define __GTK_LINK_BUTTON_C__
|
||||||
#include "gtkaliasdef.c"
|
#include "gtkaliasdef.c"
|
||||||
|
@ -79,6 +79,11 @@ GtkLinkButtonUriFunc gtk_link_button_set_uri_hook (GtkLinkButtonUriFunc fu
|
|||||||
gpointer data,
|
gpointer data,
|
||||||
GDestroyNotify destroy);
|
GDestroyNotify destroy);
|
||||||
|
|
||||||
|
gboolean gtk_link_button_get_visited (GtkLinkButton *link_button);
|
||||||
|
void gtk_link_button_set_visited (GtkLinkButton *link_button,
|
||||||
|
gboolean visited);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GTK_LINK_BUTTON_H__ */
|
#endif /* __GTK_LINK_BUTTON_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user