Gtk3: proper paint of grid at design time.

This commit is contained in:
zeljan1 2025-03-26 16:53:59 +01:00
parent 1569e7c7b1
commit 4f7b7c63ef
3 changed files with 7 additions and 2 deletions

View File

@ -114,7 +114,6 @@ var
gc: TGdkRGBA;
GtkDC: TGtk3DeviceContext absolute DC;
DotSize: integer;
//matrix: Tcairo_matrix_t;
begin
if not IsValidDC(DC) then
exit;
@ -123,7 +122,8 @@ begin
DotSize := Max(1, GtkDC.CurrentPen.Width);
GtkDC.Save;
//TODO: cairo_get_matrix(pcr, @matrix);
GtkDC.Translate(GtkDC.ScrollbarsOffset);
cairo_set_source_rgb(GtkDC.pcr, gc.red, gc.green, gc.blue);
cairo_set_antialias(GtkDC.pcr, CAIRO_ANTIALIAS_NONE);

View File

@ -252,6 +252,7 @@ type
ParentPixmap: PGdkPixbuf;
Window: PGdkWindow;
fncOrigin:TPoint; // non-client area offsets surface origin
ScrollbarsOffset: TPoint; // for scrollingwincontrol and forms.
constructor Create(AWidget: PGtkWidget; const APaintEvent: Boolean = False); virtual;
constructor Create(AWindow: PGdkWindow; const APaintEvent: Boolean); virtual;
constructor CreateFromCairo(AWidget: PGtkWidget; ACairo: PCairo_t); virtual;
@ -1971,6 +1972,8 @@ procedure TGtk3DeviceContext.CreateObjects;
var
Matrix: Tcairo_matrix_t;
begin
ScrollbarsOffset.X := 0;
ScrollbarsOffset.Y := 0;
FLastPenX := 0;
FLastPenY := 0;
FBgBrush := nil; // created on demand

View File

@ -1795,6 +1795,7 @@ begin
P.X := P.X + Round(AScrolledWin^.get_hadjustment^.get_value);
if VScrollPolicy < GTK_POLICY_NEVER then
P.Y := P.Y + Round(AScrolledWin^.get_vadjustment^.get_value);
TGtk3DeviceContext(Msg.DC).ScrollbarsOffset := Point(P.X, P.Y);
cairo_translate(AContext, -P.X, -P.Y);
with TGtk3DeviceContext(Msg.DC).fncOrigin do
begin
@ -10491,6 +10492,7 @@ begin
P.X := P.X + Round(AScrolledWin^.get_hadjustment^.get_value);
if VScrollPolicy < GTK_POLICY_NEVER then
P.Y := P.Y + Round(AScrolledWin^.get_vadjustment^.get_value);
TGtk3DeviceContext(Msg.DC).ScrollbarsOffset := Point(P.X, P.Y);
cairo_translate(AContext, -P.X, -P.Y);
with TGtk3DeviceContext(Msg.DC).fncOrigin do
begin