Under gtk1 on linux it is not possible to have an underscore character
displayed. The attached patch fixes this
Colin
diff -uNr lazarus/lcl/interfaces/gtk/gtkproc.inc /dos/fpc/lazarus.w/lcl/interfaces/gtk/gtkproc.inc
--- lazarus/lcl/interfaces/gtk/gtkproc.inc 2006-03-04 11:04:49.000000000 +0000
+++ /dos/fpc/lazarus.w/lcl/interfaces/gtk/gtkproc.inc 2006-03-04 11:29:14.000000000 +0000
@@ -5663,15 +5681,21 @@
// It would be cool, to know if a window manager with the gnome feature
// is running, but there is probably no reliable code to do that, so we
// simply delete all ampersands and don't set the letter shortcut.
- DeleteAmpersands(s);
+ // DeleteAmpersands(s);
+ // gtk_label_set_text(LabelWidget,PChar(s));
+
+ // Do not use gtk_label_parse_uline as it mangles underscore characters
+ System.Delete(s,ShortCutPos,1);
gtk_label_set_text(LabelWidget,PChar(s));
- Accelerate(LCLMenuItem,MenuItemWidget,
- gtk_label_parse_uline(LabelWidget,PChar(s)),
- 0,{$Ifdef GTK2}'activate'{$Else}'activate_item'{$EndIF});
+ gtk_label_set_pattern(LabelWidget, PChar(StringOfChar(' ', ShortCutPos-1)+'_'));
+ //Accelerate(LCLMenuItem,MenuItemWidget,
+ //gtk_label_parse_uline(LabelWidget,PChar(s)),
+ //0,{$Ifdef GTK2}'activate'{$Else}'activate_item'{$EndIF});
end;
end
else begin
gtk_label_set_text(LabelWidget,PChar(s));
+ gtk_label_set_pattern(LabelWidget, nil); // Ensure any underlines removed
end;
end;