mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 00:19:26 +02:00
* fixed obscure bug #12695 where gtk2 listview caused a crash
git-svn-id: trunk@17554 -
This commit is contained in:
parent
332817a926
commit
f05a37586c
@ -60,6 +60,7 @@ type
|
|||||||
cell_area: PGdkRectangle;
|
cell_area: PGdkRectangle;
|
||||||
expose_area:PGdkRectangle;
|
expose_area:PGdkRectangle;
|
||||||
flags: TGtkCellRendererState); cdecl;
|
flags: TGtkCellRendererState); cdecl;
|
||||||
|
DefaultFinalize: procedure(aObject: PGObject); cdecl;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function LCLIntfCellRenderer_GetType: TGtkType;
|
function LCLIntfCellRenderer_GetType: TGtkType;
|
||||||
@ -295,6 +296,12 @@ begin
|
|||||||
//DebugLn(['LCLIntfCellRenderer_Render END ',DbgSName(LCLObject)]);
|
//DebugLn(['LCLIntfCellRenderer_Render END ',DbgSName(LCLObject)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure LCLIntfCellRenderer_ClassFinalize(aObject: PGObject); cdecl;
|
||||||
|
begin
|
||||||
|
PGtkCellRendererText(aObject)^.text := nil;
|
||||||
|
PLCLIntfCellRendererClass(G_OBJECT_GET_CLASS(aObject))^.DefaultFinalize(aObject);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure LCLIntfCellRenderer_ClassInit(aClass: Pointer); cdecl;
|
procedure LCLIntfCellRenderer_ClassInit(aClass: Pointer); cdecl;
|
||||||
//aClass: PLCLIntfCellRendererClass
|
//aClass: PLCLIntfCellRendererClass
|
||||||
var
|
var
|
||||||
@ -306,6 +313,8 @@ begin
|
|||||||
RendererClass := GTK_CELL_RENDERER_CLASS(aClass);
|
RendererClass := GTK_CELL_RENDERER_CLASS(aClass);
|
||||||
LCLClass^.DefaultGtkGetSize := RendererClass^.get_size;
|
LCLClass^.DefaultGtkGetSize := RendererClass^.get_size;
|
||||||
LCLClass^.DefaultGtkRender := RendererClass^.render;
|
LCLClass^.DefaultGtkRender := RendererClass^.render;
|
||||||
|
LCLClass^.DefaultFinalize := PGObjectClass(RendererClass)^.finalize;
|
||||||
|
PGObjectClass(RendererClass)^.finalize := @LCLIntfCellRenderer_ClassFinalize;
|
||||||
RendererClass^.get_size := @LCLIntfCellRenderer_GetSize;
|
RendererClass^.get_size := @LCLIntfCellRenderer_GetSize;
|
||||||
RendererClass^.render := @LCLIntfCellRenderer_Render;
|
RendererClass^.render := @LCLIntfCellRenderer_Render;
|
||||||
end;
|
end;
|
||||||
@ -316,6 +325,7 @@ procedure LCLIntfCellRenderer_Init(Instance:PGTypeInstance;
|
|||||||
// theClass: PLCLIntfCellRendererClass
|
// theClass: PLCLIntfCellRendererClass
|
||||||
begin
|
begin
|
||||||
//DebugLn(['LCLIntfCellRenderer_Init ']);
|
//DebugLn(['LCLIntfCellRenderer_Init ']);
|
||||||
|
PGtkCellRendererText(Instance)^.text := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function LCLIntfCellRenderer_GetType: TGtkType;
|
function LCLIntfCellRenderer_GetType: TGtkType;
|
||||||
|
@ -1004,6 +1004,8 @@ begin
|
|||||||
GetCommonTreeViewWidgets(PGtkWidget(ALV.Handle), Widgets);
|
GetCommonTreeViewWidgets(PGtkWidget(ALV.Handle), Widgets);
|
||||||
with Widgets^ do
|
with Widgets^ do
|
||||||
begin
|
begin
|
||||||
|
if gtk_widget_realized(MainView) = False then
|
||||||
|
exit;
|
||||||
Path := gtk_tree_path_new_from_indices(AIndex, -1);
|
Path := gtk_tree_path_new_from_indices(AIndex, -1);
|
||||||
gtk_tree_view_get_cell_area(PGtkTreeView(MainView), Path, nil, @ItemRect);
|
gtk_tree_view_get_cell_area(PGtkTreeView(MainView), Path, nil, @ItemRect);
|
||||||
gtk_tree_path_free(Path);
|
gtk_tree_path_free(Path);
|
||||||
|
Loading…
Reference in New Issue
Block a user