From 576ac959ca19f671714eecbac8ee466a70b21dde Mon Sep 17 00:00:00 2001 From: zeljko Date: Sat, 5 Nov 2011 12:50:38 +0000 Subject: [PATCH] Qt: fixed infinite loop and crash with spurious events from mdiarea, when try to focusin/focusout mdichild form. git-svn-id: trunk@33334 - --- lcl/interfaces/qt/qtobject.inc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lcl/interfaces/qt/qtobject.inc b/lcl/interfaces/qt/qtobject.inc index 7b3db40c73..4f9bdb8646 100644 --- a/lcl/interfaces/qt/qtobject.inc +++ b/lcl/interfaces/qt/qtobject.inc @@ -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;