diff --git a/lcl/interfaces/gtk2/gtk2proc.inc b/lcl/interfaces/gtk2/gtk2proc.inc index 4959e71205..5f52f6a687 100644 --- a/lcl/interfaces/gtk2/gtk2proc.inc +++ b/lcl/interfaces/gtk2/gtk2proc.inc @@ -4067,13 +4067,10 @@ function GetControlWindow(Widget: Pointer) : PGDKWindow; begin if Widget <> nil then begin - If not GTKWidgetIsA(PGTKWidget(Widget), GTK_Layout_Get_Type) then - Result := PGTKWidget(Widget)^.Window + If GTKWidgetIsA(PGTKWidget(Widget), GTK_Layout_Get_Type) then + Result := PGtkLayout(Widget)^.bin_window else - begin - gtk_widget_realize(Widget); // associate with window - Result := PGtkLayout(Widget)^.bin_window; - end; + Result := PGTKWidget(Widget)^.Window; if (Result=nil) and (GTK_WIDGET_NO_WINDOW(Widget)) then Result:=gtk_widget_get_parent_window(Widget); end else diff --git a/lcl/interfaces/gtk2/gtk2winapi.inc b/lcl/interfaces/gtk2/gtk2winapi.inc index bad8c9bfab..3c2fa982da 100644 --- a/lcl/interfaces/gtk2/gtk2winapi.inc +++ b/lcl/interfaces/gtk2/gtk2winapi.inc @@ -9411,6 +9411,8 @@ begin end; if Widget = nil then Exit(0); + if GTKWidgetIsA(Widget, GTK_Layout_Get_Type) then + gtk_widget_realize(Widget); // associate with window Window := GetControlWindow(Widget); if Window = nil then Exit(0);