mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-27 21:20:30 +02:00
MG: fixed mem some leaks in ide and gtk
git-svn-id: trunk@746 -
This commit is contained in:
parent
1178bab300
commit
2cdaebdae9
@ -2443,22 +2443,10 @@ end;
|
|||||||
procedure TGTKObject.RemoveCallbacks(Sender : TObject);
|
procedure TGTKObject.RemoveCallbacks(Sender : TObject);
|
||||||
var
|
var
|
||||||
gObject : gtk_Object;
|
gObject : gtk_Object;
|
||||||
Info: PWinWidgetInfo;
|
|
||||||
Widget: pointer;
|
|
||||||
begin
|
begin
|
||||||
gObject := ObjectToGTKObject(Sender);
|
gObject := ObjectToGTKObject(Sender);
|
||||||
if gObject = nil then Exit;
|
if gObject = nil then Exit;
|
||||||
|
|
||||||
if (Sender is TWinControl) and (TWinControl(Sender).HandleAllocated) then
|
|
||||||
begin
|
|
||||||
Widget:=Pointer(TWinControl(Sender).Handle);
|
|
||||||
if GtkWidgetIsA(Widget,gtk_object_get_type) then
|
|
||||||
Begin
|
|
||||||
Info := GetWidgetInfo(Widget, False);
|
|
||||||
if Info <> nil then Dispose(Info);
|
|
||||||
gtk_object_set_data(Widget, 'widgetinfo', nil);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if not (Sender is TMenuItem) then
|
if not (Sender is TMenuItem) then
|
||||||
gtk_signal_handlers_destroy(gObject);
|
gtk_signal_handlers_destroy(gObject);
|
||||||
end;
|
end;
|
||||||
@ -2477,10 +2465,11 @@ var
|
|||||||
Widget: PGtkWidget;
|
Widget: PGtkWidget;
|
||||||
FixWidget: PGtkWidget;
|
FixWidget: PGtkWidget;
|
||||||
begin
|
begin
|
||||||
RemoveCallbacks(Sender);
|
|
||||||
Handle := hwnd(ObjectToGtkObject(Sender));
|
Handle := hwnd(ObjectToGtkObject(Sender));
|
||||||
if Handle=0 then exit;
|
if Handle=0 then exit;
|
||||||
|
|
||||||
|
RemoveCallbacks(Sender);
|
||||||
|
|
||||||
Widget:=PGtkWidget(Handle);
|
Widget:=PGtkWidget(Handle);
|
||||||
FixWidget:=GetFixedWidget(Widget);
|
FixWidget:=GetFixedWidget(Widget);
|
||||||
|
|
||||||
@ -2516,8 +2505,9 @@ begin
|
|||||||
if Sender is TCommonDialog then
|
if Sender is TCommonDialog then
|
||||||
DestroyCommonDialogAddOns(TCommonDialog(Sender));
|
DestroyCommonDialogAddOns(TCommonDialog(Sender));
|
||||||
|
|
||||||
|
|
||||||
// destroy the widget
|
// destroy the widget
|
||||||
gtk_widget_destroy(Widget);
|
DestroyWidget(Widget);
|
||||||
//writeln('>>> LM_DESTROY END ',Sender.Classname,' Sender=',HexStr(Cardinal(Sender),8),' Handle=',HexStr(Cardinal(Handle),8));
|
//writeln('>>> LM_DESTROY END ',Sender.Classname,' Sender=',HexStr(Cardinal(Sender),8),' Handle=',HexStr(Cardinal(Handle),8));
|
||||||
|
|
||||||
// remove all remaining messages to this component
|
// remove all remaining messages to this component
|
||||||
@ -3968,14 +3958,14 @@ var
|
|||||||
if TabPixmapWidget<>nil then begin
|
if TabPixmapWidget<>nil then begin
|
||||||
// there is a pixmap for an old image in the tab
|
// there is a pixmap for an old image in the tab
|
||||||
// -> remove the pixmap widget
|
// -> remove the pixmap widget
|
||||||
gtk_widget_destroy(TabPixmapWidget);
|
DestroyWidget(TabPixmapWidget);
|
||||||
gtk_object_set_data(PGtkObject(TabWidget), 'TabPixmap', nil);
|
gtk_object_set_data(PGtkObject(TabWidget), 'TabPixmap', nil);
|
||||||
TabPixmapWidget:=nil;
|
TabPixmapWidget:=nil;
|
||||||
end;
|
end;
|
||||||
if MenuPixmapWidget<>nil then begin
|
if MenuPixmapWidget<>nil then begin
|
||||||
// there is a pixmap for an old image in the menu
|
// there is a pixmap for an old image in the menu
|
||||||
// -> remove the pixmap widget
|
// -> remove the pixmap widget
|
||||||
gtk_widget_destroy(MenuPixmapWidget);
|
DestroyWidget(MenuPixmapWidget);
|
||||||
gtk_object_set_data(PGtkObject(MenuWidget), 'TabPixmap', nil);
|
gtk_object_set_data(PGtkObject(MenuWidget), 'TabPixmap', nil);
|
||||||
MenuPixmapWidget:=nil;
|
MenuPixmapWidget:=nil;
|
||||||
end;
|
end;
|
||||||
@ -4031,7 +4021,7 @@ var
|
|||||||
// -> remove it
|
// -> remove it
|
||||||
gtk_object_set_data(PGtkObject(TabWidget), 'TabCloseBtn',
|
gtk_object_set_data(PGtkObject(TabWidget), 'TabCloseBtn',
|
||||||
nil);
|
nil);
|
||||||
gtk_widget_destroy(TabCloseBtnWidget);
|
DestroyWidget(TabCloseBtnWidget);
|
||||||
TabCloseBtnWidget:=nil;
|
TabCloseBtnWidget:=nil;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -5293,6 +5283,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.168 2002/08/21 11:29:35 lazarus
|
||||||
|
MG: fixed mem some leaks in ide and gtk
|
||||||
|
|
||||||
Revision 1.167 2002/08/21 08:13:37 lazarus
|
Revision 1.167 2002/08/21 08:13:37 lazarus
|
||||||
MG: accelerated new/dispose of gdiobjects
|
MG: accelerated new/dispose of gdiobjects
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user