~evgeni/libdbusmenu/optional-valgrind

« back to all changes in this revision

Viewing changes to libdbusmenu-gtk/genericmenuitem.c

  • Committer: Charles Kerr
  • Date: 2012-04-11 22:26:45 UTC
  • mfrom: (401.3.4 double-underscore)
  • Revision ID: charles.kerr@canonical.com-20120411222645-w3p7sivhscyp22zc
merge lp:~ted/dbusmenu/double-underscore to fix the double underscore regression introduced earlier.

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
        return FALSE;
242
242
}
243
243
 
 
244
/* Sanitize the label by removing "__" meaning "_" */
 
245
gchar *
 
246
sanitize_label (const gchar * in_label)
 
247
{
 
248
        static GRegex * underscore_regex = NULL;
 
249
 
 
250
        g_return_val_if_fail(in_label != NULL, NULL);
 
251
 
 
252
        if (underscore_regex == NULL) {
 
253
                underscore_regex = g_regex_new("__", 0, 0, NULL);
 
254
        }
 
255
 
 
256
        return g_regex_replace_literal(underscore_regex,
 
257
                                       in_label,
 
258
                                       -1,    /* length */
 
259
                                       0,     /* start */
 
260
                                       "_",   /* replacement */
 
261
                                       0,     /* flags */
 
262
                                       NULL); /* error */
 
263
}
 
264
 
244
265
/* Set the label on the item */
245
266
static void
246
267
set_label (GtkMenuItem * menu_item, const gchar * in_label)
319
340
                        gtk_label_set_use_underline(GTK_LABEL(labelw), TRUE);
320
341
                        gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item));
321
342
                        gtk_label_set_markup_with_mnemonic(labelw, local_label);
 
343
                } else {
 
344
                        gchar * sanitized = sanitize_label(local_label);
 
345
                        gtk_label_set_markup(labelw, sanitized);
 
346
                        g_free(sanitized);
322
347
                }
323
348
 
324
349
                gtk_widget_show(GTK_WIDGET(labelw));
343
368
                                gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(labelw), GTK_WIDGET(menu_item));
344
369
                                gtk_label_set_markup_with_mnemonic(labelw, local_label);
345
370
                        } else {
346
 
                                gtk_label_set_markup(labelw, local_label);
 
371
                                gchar * sanitized = sanitize_label(local_label);
 
372
                                gtk_label_set_markup(labelw, sanitized);
 
373
                                g_free(sanitized);
347
374
                        }
348
375
                }
349
376
        }