* fixed obscure bug #12695 where gtk2 listview caused a crash

git-svn-id: trunk@17554 -
This commit is contained in:
andrew 2008-11-23 22:32:28 +00:00
parent 332817a926
commit f05a37586c
2 changed files with 12 additions and 0 deletions

View File

@ -60,6 +60,7 @@ type
cell_area: PGdkRectangle;
expose_area:PGdkRectangle;
flags: TGtkCellRendererState); cdecl;
DefaultFinalize: procedure(aObject: PGObject); cdecl;
end;
function LCLIntfCellRenderer_GetType: TGtkType;
@ -295,6 +296,12 @@ begin
//DebugLn(['LCLIntfCellRenderer_Render END ',DbgSName(LCLObject)]);
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;
//aClass: PLCLIntfCellRendererClass
var
@ -306,6 +313,8 @@ begin
RendererClass := GTK_CELL_RENDERER_CLASS(aClass);
LCLClass^.DefaultGtkGetSize := RendererClass^.get_size;
LCLClass^.DefaultGtkRender := RendererClass^.render;
LCLClass^.DefaultFinalize := PGObjectClass(RendererClass)^.finalize;
PGObjectClass(RendererClass)^.finalize := @LCLIntfCellRenderer_ClassFinalize;
RendererClass^.get_size := @LCLIntfCellRenderer_GetSize;
RendererClass^.render := @LCLIntfCellRenderer_Render;
end;
@ -316,6 +325,7 @@ procedure LCLIntfCellRenderer_Init(Instance:PGTypeInstance;
// theClass: PLCLIntfCellRendererClass
begin
//DebugLn(['LCLIntfCellRenderer_Init ']);
PGtkCellRendererText(Instance)^.text := nil;
end;
function LCLIntfCellRenderer_GetType: TGtkType;

View File

@ -1004,6 +1004,8 @@ begin
GetCommonTreeViewWidgets(PGtkWidget(ALV.Handle), Widgets);
with Widgets^ do
begin
if gtk_widget_realized(MainView) = False then
exit;
Path := gtk_tree_path_new_from_indices(AIndex, -1);
gtk_tree_view_get_cell_area(PGtkTreeView(MainView), Path, nil, @ItemRect);
gtk_tree_path_free(Path);