Qt: fixed infinite loop and crash with spurious events from mdiarea, when try to focusin/focusout

mdichild form.

git-svn-id: trunk@33334 -
This commit is contained in:
zeljko 2011-11-05 12:50:38 +00:00
parent bfc0d54628
commit 576ac959ca

View File

@ -584,8 +584,10 @@ begin
// WriteLn('KILL: ', OldWidget.LCLObject.ClassName);
Msg.msg := LM_KILLFOCUS;
Msg.wParam := PtrInt(NewWidget);
if (OldWidget is TQtMainWindow) and (TQtMainWindow(OldWidget).IsMdiChild) then
TQtMainWindow(OldWidget).SlotActivateWindow(False)
if (OldWidget is TQtMainWindow) and (TQtMainWindow(OldWidget).IsMdiChild) and
Assigned(TQtMainWindow(OldWidget).LCLObject) and
not (csDesigning in TQtMainWindow(OldWidget).LCLObject.ComponentState) then
// DO NOT TRIGGER ANYTHING, THIS IS SPURIOUS EVENT FROM MDIAREA
else
OldWidget.DeliverMessage(Msg);
end;
@ -594,8 +596,10 @@ begin
// WriteLn('SET: ', NewWidget.LCLObject.ClassName);
Msg.msg := LM_SETFOCUS;
Msg.wParam := PtrInt(OldWidget);
if (NewWidget is TQtMainWindow) and (TQtMainWindow(NewWidget).IsMdiChild) then
TQtMainWindow(NewWidget).SlotActivateWindow(True)
if (NewWidget is TQtMainWindow) and (TQtMainWindow(NewWidget).IsMdiChild) and
Assigned(TQtMainWindow(NewWidget).LCLObject) and
not (csDesigning in TQtMainWindow(NewWidget).LCLObject.ComponentState) then
// DO NOT TRIGGER ANYTHING, THIS IS SPURIOUS EVENT FROM MDIAREA
else
NewWidget.DeliverMessage(Msg);
end;