diff --git a/lcl/interfaces/gtk2/gtk2cellrenderer.pas b/lcl/interfaces/gtk2/gtk2cellrenderer.pas index bb7880f068..11bbee1767 100644 --- a/lcl/interfaces/gtk2/gtk2cellrenderer.pas +++ b/lcl/interfaces/gtk2/gtk2cellrenderer.pas @@ -124,6 +124,7 @@ begin exit; ItemIndex := GetItemIndex(PLCLIntfCellRenderer(cell), Widget); + if ItemIndex < 0 then ItemIndex := 0; @@ -180,6 +181,7 @@ begin AreaRect := Bounds(background_area^.x, background_area^.y, background_area^.Width, background_area^.Height); + ItemIndex := GetItemIndex(PLCLIntfCellRenderer(cell), Widget); if ItemIndex < 0 then @@ -189,7 +191,10 @@ begin LVTarget := dtSubItem else LVTarget := dtItem; - LVSubItem := ColumnIndex-1; + if AWinControl.FCompStyle = csListView then + LVSubItem := ColumnIndex + else + LVSubItem := ColumnIndex - 1; LVStage := cdPrePaint; LVState := GtkCellRendererStateToListViewDrawState(flags); DCWidget:=Widget; diff --git a/lcl/interfaces/gtk2/gtk2wscustomlistview.inc b/lcl/interfaces/gtk2/gtk2wscustomlistview.inc index 96d86cefa9..d3b88def83 100644 --- a/lcl/interfaces/gtk2/gtk2wscustomlistview.inc +++ b/lcl/interfaces/gtk2/gtk2wscustomlistview.inc @@ -1078,7 +1078,9 @@ begin begin Column := gtk_tree_view_get_column(PGtkTreeView(MainView), ASubItem); gtk_tree_view_get_cell_area(PGtkTreeView(MainView), Path, Column, @ItemRect); - if gtk_tree_view_get_headers_visible(PGtkTreeView(MainView)) then + // do not make any offset for drLabel and drIcon. issue #23094 + if not (ACode in [drIcon, drLabel]) and + gtk_tree_view_get_headers_visible(PGtkTreeView(MainView)) then begin gtk_tree_view_column_cell_get_size(gtk_tree_view_get_column(PGtkTreeView(MainView), 0), @ARect, @L, @T, @W, @H);