+ if ( flag == MNEMONICS_CONVERT_MARKUP )
+ {
+ bool isMnemonic = true;
+ size_t distanceFromEnd = label.end() - i;
+
+ // is this ampersand introducing a mnemonic or rather an entity?
+ for (size_t j=0; j < wxMARKUP_ENTITY_MAX; j++)
+ {
+ const wxChar *entity = wxMarkupEntities[wxMARKUP_ELEMENT_NAME][j];
+ size_t entityLen = wxStrlen(entity);
+
+ if (distanceFromEnd >= entityLen &&
+ wxString(i, i + entityLen) == entity)
+ {
+ labelGTK << entity;
+ i += entityLen - 1; // the -1 is because main for()
+ // loop already increments i
+ isMnemonic = false;
+
+ break;
+ }
+ }
+
+ if (!isMnemonic)
+ continue;
+ }
+
+ ch = *(++i); // skip '&' itself