mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-26 09:09:10 +02:00
Gtk3: implemented TCustomListView.ItemDelete, fixed crash in gtk3cellrenderer
git-svn-id: trunk@43200 -
This commit is contained in:
parent
a79e21d916
commit
216a903513
@ -662,7 +662,8 @@ procedure LCLIntfCellRenderer_CellDataFunc(cell_layout:PGtkCellLayout;
|
||||
var
|
||||
LCLCellRenderer: PLCLIntfCellRenderer absolute cell;
|
||||
APath: PGtkTreePath;
|
||||
Str: PgChar;
|
||||
S: String;
|
||||
// Str: PgChar;
|
||||
ListColumn: TListColumn;
|
||||
ListItem: TListItem;
|
||||
Value: TGValue;
|
||||
@ -711,15 +712,14 @@ begin
|
||||
else
|
||||
LCLCellRenderer^.ColumnIndex := ListColumn.Index;
|
||||
|
||||
S := '';
|
||||
if LCLCellRenderer^.ColumnIndex <= 0 then
|
||||
Str := PgChar(ListItem.Caption)
|
||||
S := ListItem.Caption
|
||||
else
|
||||
if ListColumn.Index-1 <= ListItem.SubItems.Count-1 then
|
||||
Str := PgChar(ListItem.SubItems.Strings[LCLCellRenderer^.ColumnIndex-1]);
|
||||
S := ListItem.SubItems.Strings[LCLCellRenderer^.ColumnIndex-1];
|
||||
|
||||
//Value.data[0].v_pointer := PChar(Str);
|
||||
//g_object_set_property(PGObject(cell), 'text', @Value);
|
||||
Value.set_string(Str);
|
||||
Value.data[0].v_pointer := PgChar(S);
|
||||
cell^.set_property('text', @Value);
|
||||
end else
|
||||
if (wtListBox in TGtk3Widget(Data).WidgetType) then
|
||||
@ -731,10 +731,10 @@ begin
|
||||
cell^.get_property('text', @Value);
|
||||
// DebugLn('PropertyType=',dbgs(Value.g_type),' IsString=',dbgs(Value.g_type = G_TYPE_STRING),' getString=',Value.get_string);
|
||||
|
||||
Str := PgChar(TCustomListBox(TGtk3Widget(Data).LCLObject).Items.Strings[LCLCellRenderer^.Index]);
|
||||
S := TCustomListBox(TGtk3Widget(Data).LCLObject).Items.Strings[LCLCellRenderer^.Index];
|
||||
// DebugLn('LCLCellRenderer^.Index=',dbgs(LCLCellRenderer^.Index),' text=',Str);
|
||||
// Value.data[0].v_pointer := PChar(Str);
|
||||
Value.set_string(Str);
|
||||
Value.data[0].v_pointer := PgChar(S);
|
||||
// Value.set_string(Str);
|
||||
// set text only if we are not ownerdrawn !
|
||||
cell^.set_property('text', @Value);
|
||||
// DebugLn('IsFixedCellSize ',dbgs(PGtkTreeView(TGtk3Widget(Data).GetContainerWidget)^.get_fixed_height_mode));
|
||||
|
@ -543,6 +543,7 @@ type
|
||||
procedure SetColumnWidth(AIndex: Integer; AColumn: TListColumn; AWidth: Integer);
|
||||
procedure SetColumnVisible(AIndex: Integer; AColumn: TListColumn; AVisible: Boolean);
|
||||
|
||||
procedure ItemDelete(AIndex: Integer);
|
||||
procedure ItemInsert(AIndex: Integer; AItem: TListItem);
|
||||
procedure ItemSetText(AIndex, ASubIndex: Integer; AItem: TListItem; const AText: String);
|
||||
procedure ItemSetState(const AIndex: Integer; const AItem: TListItem; const AState: TListItemState;
|
||||
@ -5421,6 +5422,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGtk3ListView.ItemDelete(AIndex: Integer);
|
||||
var
|
||||
AModel: PGtkTreeModel;
|
||||
Iter: TGtkTreeIter;
|
||||
begin
|
||||
if IsTreeView then
|
||||
AModel := PGtkTreeView(getContainerWidget)^.get_model
|
||||
else
|
||||
AModel := PGtkIconView(getContainerWidget)^.get_model;
|
||||
if gtk_tree_model_iter_nth_child(AModel, @Iter, nil, AIndex) then
|
||||
gtk_list_store_remove(PGtkListStore(AModel), @Iter);
|
||||
end;
|
||||
|
||||
procedure TGtk3ListView.ItemInsert(AIndex: Integer; AItem: TListItem);
|
||||
var
|
||||
AModel: PGtkTreeModel;
|
||||
|
@ -600,7 +600,10 @@ type
|
||||
class procedure TGtk3WSCustomListView.ItemDelete(const ALV: TCustomListView;
|
||||
const AIndex: Integer);
|
||||
begin
|
||||
DebugLn('TGtk3WSCustomListView.ItemDelete ');
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemDelete') then
|
||||
Exit;
|
||||
TGtk3ListView(ALV.Handle).ItemDelete(AIndex);
|
||||
// DebugLn('TGtk3WSCustomListView.ItemDelete ');
|
||||
// inherited ItemDelete(ALV, AIndex);
|
||||
end;
|
||||
|
||||
@ -669,7 +672,7 @@ class procedure TGtk3WSCustomListView.ItemSetImage(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem; const ASubIndex,
|
||||
AImageIndex: Integer);
|
||||
begin
|
||||
DebugLn('TGtk3WSCustomListView.ItemSetImage ');
|
||||
// DebugLn('TGtk3WSCustomListView.ItemSetImage ');
|
||||
// inherited ItemSetImage(ALV, AIndex, AItem, ASubIndex, AImageIndex);
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user