# HG changeset patch # User Nathan Walp # Date 1071653585 0 # Node ID 7e1bb4deca24254d59694b44b2f75d18d577f608 # Parent d12b234959d5fcf99a7ff5753cfd0ec028e76913 [gaim-migrate @ 8547] if we're gonna have mnemonics, let's use 'em! (there was going to be a clever play on words there, but it's 4:30, so it's not gonna happen) committer: Tailor Script diff -r d12b234959d5 -r 7e1bb4deca24 src/gtkblist.c --- a/src/gtkblist.c Tue Dec 16 05:41:30 2003 +0000 +++ b/src/gtkblist.c Wed Dec 17 09:33:05 2003 +0000 @@ -1758,13 +1758,15 @@ g_free(account); } for(tmp = parts; tmp; tmp = tmp->next) { - char *label, *value; + char *label, *tmp2, *value; pce = tmp->data; if(pce->secret) continue; - label = g_markup_escape_text(pce->label, -1); + tmp2 = g_markup_escape_text(pce->label, -1); + label = gaim_text_strip_mnemonic(tmp2); + g_free(tmp2); value = g_markup_escape_text(g_hash_table_lookup(chat->components, pce->identifier), -1); @@ -3446,7 +3448,7 @@ rowbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0); - label = gtk_label_new(pce->label); + label = gtk_label_new_with_mnemonic(pce->label); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(data->sg, label); gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); @@ -3463,6 +3465,7 @@ data->entries = g_list_append(data->entries, spin); gtk_widget_set_size_request(spin, 50, -1); gtk_box_pack_end(GTK_BOX(rowbox), spin, FALSE, FALSE, 0); + gtk_label_set_mnemonic_widget(label, spin); } else { @@ -3487,6 +3490,7 @@ g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(add_chat_cb), data); + gtk_label_set_mnemonic_widget(label, entry); } g_free(pce); diff -r d12b234959d5 -r 7e1bb4deca24 src/util.c --- a/src/util.c Tue Dec 16 05:41:30 2003 +0000 +++ b/src/util.c Wed Dec 17 09:33:05 2003 +0000 @@ -2434,3 +2434,32 @@ return FALSE; } +char *gaim_text_strip_mnemonic(const char *in) +{ + char *out; + char *a; + const char *b; + + g_return_val_if_fail(in != NULL, NULL); + + out = g_malloc(strlen(in)+1); + a = out; + b = in; + + while(*b) { + if(*b == '_') { + if(*(b+1) == '_') { + *(a++) = '_'; + b += 2; + } else { + b++; + } + } else { + *(a++) = *(b++); + } + } + *a = '\0'; + + return out; +} + diff -r d12b234959d5 -r 7e1bb4deca24 src/util.h --- a/src/util.h Tue Dec 16 05:41:30 2003 +0000 +++ b/src/util.h Wed Dec 17 09:33:05 2003 +0000 @@ -590,6 +590,16 @@ */ gboolean gaim_message_meify(char *message, size_t len); +/** + * Removes the underscore characters from a string used identify the mnemonic + * character. + * + * @param in The string to strip + * + * @return The stripped string + */ +char * gaim_text_strip_mnemonic(const char *in); + /*@}*/ #ifdef __cplusplus