From a9009de33af1acd137fdbcb2fea8a2b8b4b095ee Mon Sep 17 00:00:00 2001 From: mattias Date: Tue, 23 Nov 2010 10:23:46 +0000 Subject: [PATCH] LCL: added -dEnableActiveControl2 to avoid endless loop for docked forms git-svn-id: trunk@28429 - --- lcl/include/customform.inc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lcl/include/customform.inc b/lcl/include/customform.inc index bc167502a2..cf4417ec04 100644 --- a/lcl/include/customform.inc +++ b/lcl/include/customform.inc @@ -2258,6 +2258,9 @@ function TCustomForm.SetFocusedControl(Control: TWinControl): Boolean; var ParentForm: TCustomForm; + {$IFDEF EnableActiveControl2} + CurControl: TWinControl; + {$ENDIF} begin LastFocusedControl := Control; Result := False; @@ -2323,6 +2326,22 @@ begin try if not Screen.SetFocusedForm(Self) then Exit; + {$IFDEF EnableActiveControl2} + // update ActiveControls of all parent forms + CurControl := Control.Parent; + while CurControl <> nil do + begin + if CurControl is TCustomForm then begin + {$IFDEF VerboseFocus} + if TCustomForm(CurControl).FActiveControl<>Control then + debugln(['TCustomForm.SetFocusedControl Self=',DbgSName(Self),' SomeParent=',DbgSName(CurControl),' OldActiveControl=',DbgSName(TCustomForm(CurControl).FActiveControl),' New=',DbgSName(Control)]); + {$ENDIF} + TCustomForm(CurControl).FActiveControl := Control; + TCustomForm(CurControl).FreeNotification(Control); + end; + CurControl := CurControl.Parent; + end; + {$ENDIF} Result := SendEnterExitLoop; finally Control.ControlState := Control.ControlState - [csFocusing];