From 305c95353212549585415430cc21c93adee46b79 Mon Sep 17 00:00:00 2001 From: Maxim Ganetsky Date: Wed, 11 Jun 2025 23:03:00 +0300 Subject: [PATCH] LCL-Gtk2: fixed centering of multiline captions for TButton, TToggleBox and TBitBtn, issue #41696 --- lcl/interfaces/gtk2/gtk2wsbuttons.pp | 2 ++ lcl/interfaces/gtk2/gtk2wsstdctrls.pp | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lcl/interfaces/gtk2/gtk2wsbuttons.pp b/lcl/interfaces/gtk2/gtk2wsbuttons.pp index 8660710aef..ab98088b53 100644 --- a/lcl/interfaces/gtk2/gtk2wsbuttons.pp +++ b/lcl/interfaces/gtk2/gtk2wsbuttons.pp @@ -169,6 +169,8 @@ begin if ImageWidget <> nil then g_object_unref(ImageWidget); + if LabelWidget <> nil then + gtk_label_set_justify(PGtkLabel(LabelWidget), GTK_JUSTIFY_CENTER); ABitBtnInfo^.LabelWidget := LabelWidget; end; diff --git a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp index 72fb115ebe..d484cf39e8 100644 --- a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp +++ b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp @@ -350,6 +350,7 @@ type TGtk2WSToggleBox = class(TWSToggleBox) published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLHandle; override; + class procedure SetFont(const AWinControl: TWinControl; const AFont: TFont); override; end; { TGtk2WSRadioButton } @@ -2563,6 +2564,7 @@ begin { Creates the button and inserts it into the EventBox } BtnWidget := gtk_button_new_with_label('button'); + gtk_label_set_justify(PGtkLabel(PGtkBin(BtnWidget)^.Child), GTK_JUSTIFY_CENTER); gtk_container_add(PGtkContainer(EventBox), BtnWidget); gtk_widget_show_all(EventBox); @@ -2885,6 +2887,20 @@ begin TGtk2WSCustomCheckBox.SetCallbacks(Widget, WidgetInfo); end; +class procedure TGtk2WSToggleBox.SetFont(const AWinControl: TWinControl; + const AFont: TFont); +var + LblWidget: PGtkWidget; +begin + if not AWinControl.HandleAllocated then exit; + + inherited SetFont(AWinControl, AFont); + + LblWidget := PGtkBin({%H-}PGtkWidget(AWinControl.Handle))^.Child; + if LblWidget <> nil then + gtk_label_set_justify(PGtkLabel(LblWidget), GTK_JUSTIFY_CENTER); +end; + { TGtk2WSCustomStaticText } class function TGtk2WSCustomStaticText.GetLabelWidget(AFrame: PGtkFrame): PGtkLabel;