summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2010-05-21 16:22:42 -0500
committerShaun McCance <shaunm@gnome.org>2010-05-21 16:22:42 -0500
commit55da84092d431ba44f17cba8a96aaac54ce02273 (patch)
tree9ab7564a03933b56867b96da585ef017210bba9e
parentc705db1f687033c686e6269ae4876a780bfee423 (diff)
downloadyelp-55da84092d431ba44f17cba8a96aaac54ce02273.tar.gz
[libyelp/yelp-view] Special right-click menu for mailto: links
-rw-r--r--libyelp/yelp-view.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c
index b237c6ce..783f7057 100644
--- a/libyelp/yelp-view.c
+++ b/libyelp/yelp-view.c
@@ -812,15 +812,31 @@ view_populate_popup (YelpView *view,
g_free (priv->popup_link_uri);
priv->popup_link_uri = uri;
- item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
- g_signal_connect (item, "activate",
- G_CALLBACK (popup_open_link), view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ if (g_str_has_prefix (priv->popup_link_uri, "mailto:")) {
+ /* Not using a mnemonic because underscores are common in email
+ * addresses, and we'd have to escape them. There doesn't seem
+ * to be a quick GTK+ function for this. In practice, there will
+ * probably only be one menu item for mailto link popups anyway,
+ * so the mnemonic's not that big of a deal.
+ */
+ gchar *label = g_strdup_printf (_("Send email to %s"),
+ priv->popup_link_uri + 7);
+ item = gtk_menu_item_new_with_label (label);
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ else {
+ item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- item = gtk_menu_item_new_with_mnemonic (_("Open Link in New _Window"));
- g_signal_connect (item, "activate",
- G_CALLBACK (popup_open_link_new), view);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ item = gtk_menu_item_new_with_mnemonic (_("Open Link in New _Window"));
+ g_signal_connect (item, "activate",
+ G_CALLBACK (popup_open_link_new), view);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
}
else {
item = gtk_action_create_menu_item (gtk_action_group_get_action (priv->action_group,