gtk: more safer code in WindowFromPoint (fixes #0014497)

git-svn-id: trunk@21569 -
This commit is contained in:
paul 2009-09-04 13:49:41 +00:00
parent bbda022560
commit 907df92e81
2 changed files with 8 additions and 8 deletions

View File

@ -1058,13 +1058,12 @@ begin
FreeWidgetInfo(Widget);
end;
function DestroyWindowFromPointCB(Widget: PGtkWidget; data: gPointer
): GBoolean; cdecl;
function DestroyWindowFromPointCB(Widget: PGtkWidget; data: gPointer): GBoolean; cdecl;
begin
Result:=CallBackDefaultReturn;
if PGtkWidget(LastWFPResult)<>Widget then exit;
LastWFPResult:=0;
LastWFPMousePos:=Point(High(Integer),High(Integer));
Result := CallBackDefaultReturn;
if PGtkWidget(LastWFPResult) <> Widget then Exit;
LastWFPResult := 0;
LastWFPMousePos := Point(High(Integer), High(Integer));
end;
function gtkdeleteCB( widget : PGtkWidget; event : PGdkEvent;

View File

@ -9730,7 +9730,8 @@ begin
Result := PtrUInt(Widget);
end;
// disconnect old handler
if LastWFPResult<>0 then begin
if GTK_IS_OBJECT(Pointer(LastWFPResult)) then
begin
{$IFDEF gtk1}
gtk_signal_disconnect_by_func(GPointer(LastWFPResult),
TGTKSignalFunc(@DestroyWindowFromPointCB), nil);
@ -9742,7 +9743,7 @@ begin
LastWFPMousePos := APoint;
LastWFPResult := Result;
// connect handler
if LastWFPResult<>0 then
if LastWFPResult <> 0 then
g_signal_connect(GPointer(LastWFPResult), 'destroy',
TGTKSignalFunc(@DestroyWindowFromPointCB), nil);
end;