- //Format mnemonics properly for GTK2. This can be called from GTK1.x, but
- //it's not very useful because mnemonics don't exist prior to GTK2.
- wxString label2;
- for (size_t i = 0; i < label.Len(); i++)
+ wxControl::SetLabel(label);
+
+ // frames don't support mnemonics even under GTK+ 2
+ const wxString labelGTK = GTKRemoveMnemonics(label);
+
+ gtk_frame_set_label(w, labelGTK.empty() ? (char *)NULL
+ : wxGTK_CONV(labelGTK));
+}
+
+// worker function implementing both GTKConvert/RemoveMnemonics()
+//
+// notice that under GTK+ 1 we only really need to support MNEMONICS_REMOVE as
+// it doesn't support mnemonics anyhow but this would make the code so ugly
+// that we do the same thing for GKT+ 1 and 2
+enum MnemonicsFlag
+{
+ MNEMONICS_REMOVE,
+ MNEMONICS_CONVERT
+};
+
+static wxString GTKProcessMnemonics(const wxString& label, MnemonicsFlag flag)
+{
+ const size_t len = label.length();
+ wxString labelGTK;
+ labelGTK.reserve(len);
+ for ( size_t i = 0; i < len; i++ )