mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-21 02:10:19 +02:00
Gtk3: safer way to free allocated data.
This commit is contained in:
parent
324cb06157
commit
51a8bb1b80
@ -542,7 +542,6 @@ type
|
|||||||
procedure SetListBoxStyle(AValue: TListBoxStyle);
|
procedure SetListBoxStyle(AValue: TListBoxStyle);
|
||||||
procedure SetMultiSelect(AValue: Boolean);
|
procedure SetMultiSelect(AValue: Boolean);
|
||||||
protected
|
protected
|
||||||
procedure DestroyWidget; override;
|
|
||||||
function CreateWidget(const {%H-}Params: TCreateParams):PGtkWidget; override;
|
function CreateWidget(const {%H-}Params: TCreateParams):PGtkWidget; override;
|
||||||
function EatArrowKeys(const {%H-}AKey: Word): Boolean; override;
|
function EatArrowKeys(const {%H-}AKey: Word): Boolean; override;
|
||||||
public
|
public
|
||||||
@ -5408,6 +5407,12 @@ begin
|
|||||||
TGtk3Widget(AData).DeliverMessage(Msg, False);
|
TGtk3Widget(AData).DeliverMessage(Msg, False);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure FreeStoreStringList(aData: gpointer); cdecl;
|
||||||
|
begin
|
||||||
|
TGtkListStoreStringList(aData).Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TGtk3ListBox.CreateWidget(const Params: TCreateParams): PGtkWidget;
|
function TGtk3ListBox.CreateWidget(const Params: TCreateParams): PGtkWidget;
|
||||||
var
|
var
|
||||||
AListBox: TCustomListBox;
|
AListBox: TCustomListBox;
|
||||||
@ -5433,7 +5438,8 @@ begin
|
|||||||
g_object_unref (liststore);
|
g_object_unref (liststore);
|
||||||
|
|
||||||
ItemList := TGtkListStoreStringList.Create(PGtkListStore(PGtkTreeView(FCentralWidget)^.get_model), 0, LCLObject);
|
ItemList := TGtkListStoreStringList.Create(PGtkListStore(PGtkTreeView(FCentralWidget)^.get_model), 0, LCLObject);
|
||||||
g_object_set_data(PGObject(FCentralWidget),GtkListItemLCLListTag, ItemList);
|
g_object_set_data_full(PGObject(FCentralWidget),GtkListItemLCLListTag, ItemList, @FreeStoreStringList);
|
||||||
|
// g_object_set_data(PGObject(FCentralWidget),GtkListItemLCLListTag, ItemList);
|
||||||
|
|
||||||
Renderer := LCLIntfCellRenderer_New();
|
Renderer := LCLIntfCellRenderer_New();
|
||||||
|
|
||||||
@ -5598,20 +5604,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TGtk3ListBox.DestroyWidget;
|
|
||||||
var
|
|
||||||
aData: TGtkListStoreStringList;
|
|
||||||
begin
|
|
||||||
if FCentralWidget <> nil then
|
|
||||||
begin
|
|
||||||
aData := TGtkListStoreStringList(g_object_get_data(PGObject(FCentralWidget),GtkListItemLCLListTag));
|
|
||||||
if aData <> nil then
|
|
||||||
aData.Free;
|
|
||||||
g_object_set_data(PGObject(FCentralWidget),GtkListItemLCLListTag, nil);
|
|
||||||
end;
|
|
||||||
inherited DestroyWidget;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TGtk3ListBox.GetSelCount: Integer;
|
function TGtk3ListBox.GetSelCount: Integer;
|
||||||
var
|
var
|
||||||
Selection: PGtkTreeSelection;
|
Selection: PGtkTreeSelection;
|
||||||
|
Loading…
Reference in New Issue
Block a user