Merge lp:~ted/libdbusmenu/double-underscore into lp:libdbusmenu/0.6

Proposed by Ted Gould
Status: Merged
Approved by: Charles Kerr
Approved revision: 405
Merged at revision: 413
Proposed branch: lp:~ted/libdbusmenu/double-underscore
Merge into: lp:libdbusmenu/0.6
Diff against target: 53 lines (+28/-1)
1 file modified
libdbusmenu-gtk/genericmenuitem.c (+28/-1)
To merge this branch: bzr merge lp:~ted/libdbusmenu/double-underscore
Reviewer Review Type Date Requested Status
Charles Kerr (community) Approve
Review via email: mp+101650@code.launchpad.net

Description of the change

Fixes the double underscore issue introduced earlier.

To post a comment you must log in.
Revision history for this message
Charles Kerr (charlesk) wrote :

Looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libdbusmenu-gtk/genericmenuitem.c'
2--- libdbusmenu-gtk/genericmenuitem.c 2012-04-09 17:07:32 +0000
3+++ libdbusmenu-gtk/genericmenuitem.c 2012-04-11 21:35:21 +0000
4@@ -241,6 +241,27 @@
5 return FALSE;
6 }
7
8+/* Sanitize the label by removing "__" meaning "_" */
9+gchar *
10+sanitize_label (const gchar * in_label)
11+{
12+ static GRegex * underscore_regex = NULL;
13+
14+ g_return_val_if_fail(in_label != NULL, NULL);
15+
16+ if (underscore_regex == NULL) {
17+ underscore_regex = g_regex_new("__", 0, 0, NULL);
18+ }
19+
20+ return g_regex_replace_literal(underscore_regex,
21+ in_label,
22+ -1, /* length */
23+ 0, /* start */
24+ "_", /* replacement */
25+ 0, /* flags */
26+ NULL); /* error */
27+}
28+
29 /* Set the label on the item */
30 static void
31 set_label (GtkMenuItem * menu_item, const gchar * in_label)
32@@ -319,6 +340,10 @@
33 gtk_label_set_use_underline(GTK_LABEL(labelw), TRUE);
34 gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item));
35 gtk_label_set_markup_with_mnemonic(labelw, local_label);
36+ } else {
37+ gchar * sanitized = sanitize_label(local_label);
38+ gtk_label_set_markup(labelw, sanitized);
39+ g_free(sanitized);
40 }
41
42 gtk_widget_show(GTK_WIDGET(labelw));
43@@ -343,7 +368,9 @@
44 gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item));
45 gtk_label_set_markup_with_mnemonic(labelw, local_label);
46 } else {
47- gtk_label_set_markup(labelw, local_label);
48+ gchar * sanitized = sanitize_label(local_label);
49+ gtk_label_set_markup(labelw, sanitized);
50+ g_free(sanitized);
51 }
52 }
53 }

Subscribers

People subscribed via source and target branches

to all changes: