Hi

The GroupBox auto size doesn't work very well, because it doesn't take
the label width into account.  If the label is wider than all of the
children, it will get clipped.  Any reason why GetGTKDefaultWidgetSize
wasn't used, like virtually everywhere else in gtk2wsstdctrls.pp?

I attach a patch that uses GetGTKDefaultWidgetSize.

Henry
Index: lcl/interfaces/gtk2/gtk2wsstdctrls.pp
===================================================================
--- lcl/interfaces/gtk2/gtk2wsstdctrls.pp	(revision 45769)
+++ lcl/interfaces/gtk2/gtk2wsstdctrls.pp	(working copy)
@@ -2365,32 +2365,9 @@
 class procedure TGtk2WSCustomGroupBox.GetPreferredSize(
   const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
   WithThemeSpace: Boolean);
-var
-  Widget: PGtkWidget;
-  border_width: Integer;
 begin
-  Widget := PGtkWidget(GetFrameWidget({%H-}PGTKEventBox(AWinControl.Handle)));
-
-  if Assigned(PGtkFrame(Widget)^.label_widget) then
-  begin
-    PreferredWidth := gtk_widget_get_xthickness(Widget) * 2 +
-                    gtk_widget_get_xthickness(PGtkFrame(Widget)^.label_widget);
-    PreferredHeight := Max(gtk_widget_get_ythickness(Widget),
-                         gtk_widget_get_ythickness(PGtkFrame(Widget)^.label_widget)) +
-                     gtk_widget_get_ythickness(Widget);
-  end else
-  begin
-    PreferredWidth := gtk_widget_get_xthickness(Widget) * 2;
-    PreferredHeight := gtk_widget_get_ythickness(Widget) * 2;
-  end;
-
-  if WithThemeSpace then
-  begin
-    border_width := (PGtkContainer(Widget)^.flag0 and bm_TGtkContainer_border_width) shr
-                    bp_TGtkContainer_border_width;
-    inc(PreferredWidth, border_width);
-    inc(PreferredHeight, 2 * border_width);
-  end;
+  GetGTKDefaultWidgetSize(AWinControl, PreferredWidth, PreferredHeight,
+                          WithThemeSpace);
 end;
 
 class procedure TGtk2WSCustomGroupBox.SetFont(const AWinControl: TWinControl;
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to