From d8fa21133467177c0c9d5524abf6f6c61cc73026 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 17 Aug 2002 23:41:21 +0000 Subject: [PATCH] fixed changing menuitem separator and normal git-svn-id: trunk@2412 - --- lcl/interfaces/gtk/gtkproc.inc | 102 ++++++++++++++++----------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/lcl/interfaces/gtk/gtkproc.inc b/lcl/interfaces/gtk/gtkproc.inc index 70c74ab521..4695120481 100644 --- a/lcl/interfaces/gtk/gtkproc.inc +++ b/lcl/interfaces/gtk/gtkproc.inc @@ -2539,64 +2539,59 @@ begin end; {------------------------------------------------------------------------------ - procedure SetMenuItemLabelText(LCLMenuItem: TMenuItem; + procedure UpdateInnerMenuItem(LCLMenuItem: TMenuItem; MenuItemWidget: PGtkWidget); - Sets the caption of a menuitem + Update the inner widgets of a menuitem widget. ------------------------------------------------------------------------------} -procedure SetMenuItemLabelText(LCLMenuItem: TMenuItem; - MenuItemWidget: PGtkWidget); -var - ShortCutPos: integer; - s: string; - LabelWidget: PGtkLabel; -begin - if (MenuItemWidget=nil) or (LCLMenuItem=nil) then exit; - LabelWidget:=gtk_object_get_data(PGtkObject(MenuItemWidget), 'LCLLabel'); - if LabelWidget=nil then exit; - //Check for a shortcut key - s:=LCLMenuItem.Caption; - ShortCutPos := pos('&', s); - if ShortCutPos <> 0 then begin - if (LCLMenuItem.Parent<>nil) - and (LCLMenuItem.Parent.HandleAllocated) - and GtkWidgetIsA(PGtkWidget(LCLMenuItem.Parent.Handle),GTK_MENU_BAR_TYPE) - then begin - // this is a menu item in the main bar of a form - // -> accelerator should be Alt+Key - s[ShortCutPos] := '_'; - Accelerate(LCLMenuItem,MenuItemWidget, - gtk_label_parse_uline(LabelWidget,PChar(s)), - GDK_MOD1_MASK,'activate_item'); - end else begin - // Because gnome changes menuitem shortcuts via keyboard, we can't - // set the accelerator. - // 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); - gtk_label_set_text(LabelWidget,PChar(s)); - {Accelerate(LCLMenuItem,MenuItemWidget, - gtk_label_parse_uline(LabelWidget,PChar(s)),0,'activate_item');} - end; - end - else begin - gtk_label_set_text(LabelWidget,PChar(s)); - end; -end; - -{------------------------------------------------------------------------------ - procedure CreateInnerMenuItem(LCLMenuItem: TMenuItem; - MenuItemWidget: PGtkWidget); - - Creates the inner widgets of a menuitem widget. - ------------------------------------------------------------------------------} -procedure CreateInnerMenuItem(LCLMenuItem: TMenuItem; +procedure UpdateInnerMenuItem(LCLMenuItem: TMenuItem; MenuItemWidget: PGtkWidget); var HBoxWidget: PGtkWidget; LabelWidget: PGtkAccelLabel; + procedure SetMenuItemLabelText(LCLMenuItem: TMenuItem; + MenuItemWidget: PGtkWidget); + var + ShortCutPos: integer; + s: string; + LabelWidget: PGtkLabel; + begin + if (MenuItemWidget=nil) or (LCLMenuItem=nil) then exit; + LabelWidget:=gtk_object_get_data(PGtkObject(MenuItemWidget), 'LCLLabel'); + if LabelWidget=nil then begin + end; + //Check for a shortcut key + s:=LCLMenuItem.Caption; + ShortCutPos := pos('&', s); + if ShortCutPos <> 0 then begin + if (LCLMenuItem.Parent<>nil) + and (LCLMenuItem.Parent.HandleAllocated) + and GtkWidgetIsA(PGtkWidget(LCLMenuItem.Parent.Handle),GTK_MENU_BAR_TYPE) + then begin + // this is a menu item in the main bar of a form + // -> accelerator should be Alt+Key + s[ShortCutPos] := '_'; + Accelerate(LCLMenuItem,MenuItemWidget, + gtk_label_parse_uline(LabelWidget,PChar(s)), + GDK_MOD1_MASK,'activate_item'); + end else begin + // Because gnome changes menuitem shortcuts via keyboard, we can't + // set the accelerator. + // 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); + gtk_label_set_text(LabelWidget,PChar(s)); + {Accelerate(LCLMenuItem,MenuItemWidget, + gtk_label_parse_uline(LabelWidget,PChar(s)),0,'activate_item');} + end; + end + else begin + gtk_label_set_text(LabelWidget,PChar(s)); + end; + end; + procedure CreateIcon; var IconImg, IconMask: PGdkPixmap; @@ -2707,7 +2702,7 @@ begin gtk_menu_item_right_justify(PGtkMenuItem(MenuItemWidget)); // create the hbox containing the label and the control - CreateInnerMenuItem(LCLMenuItem,MenuItemWidget); + UpdateInnerMenuItem(LCLMenuItem,MenuItemWidget); gtk_widget_show(MenuItemWidget); Result:=MenuItemWidget; @@ -3241,7 +3236,7 @@ var TempWidget, TempWidget2 : Pointer; begin - // Create the VBox, we need that to place controls outside + // Create the VBox. We need that to place controls outside // the client area (like menu and the statusbar) Result := gtk_vbox_new(False, 0); If FormWidget = nil then @@ -4068,6 +4063,9 @@ end; { ============================================================================= $Log$ + Revision 1.171 2003/05/01 11:44:03 mattias + fixed changing menuitem separator and normal + Revision 1.170 2003/04/26 10:45:34 mattias fixed right control release