From 8db9286b376c6a4802c00419ca8d19d1e5de65e9 Mon Sep 17 00:00:00 2001 From: martin Date: Sun, 11 Jul 2010 13:29:03 +0000 Subject: [PATCH] SynCompletion: avoid possible crash ./ fix app.Deactivate git-svn-id: trunk@26596 - --- components/synedit/syncompletion.pas | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/components/synedit/syncompletion.pas b/components/synedit/syncompletion.pas index 741414d96f..9d2b3cef6e 100644 --- a/components/synedit/syncompletion.pas +++ b/components/synedit/syncompletion.pas @@ -43,8 +43,7 @@ interface uses LCLProc, LCLIntf, LCLType, SynEditMiscProcs, Classes, Graphics, Forms, Controls, StdCtrls, ExtCtrls, Menus, - SysUtils, SynEditKeyCmds, SynEditHighlighter, - SynEdit; + SysUtils, SynEditKeyCmds, SynEdit; type TSynBaseCompletionPaintItem = @@ -123,6 +122,7 @@ type procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure KeyPress(var Key: char); override; procedure Paint; override; + procedure AppDeactivated(Sender: TObject); // Because Form.Deactrivate isn't called procedure Deactivate; override; procedure SelectPrec; procedure SelectNext; @@ -670,6 +670,11 @@ begin Canvas.LineTo(0, 0); end; +procedure TSynBaseCompletionForm.AppDeactivated(Sender: TObject); +begin + Deactivate; +end; + procedure TSynBaseCompletionForm.ScrollChange(Sender: TObject); begin if Position < Scroll.Position then @@ -835,6 +840,7 @@ end; procedure TSynBaseCompletionForm.SetVisible(Value: Boolean); begin + if Visible = Value then exit;; inherited SetVisible(Value); if (fCurrentEditor <> nil) then begin if Visible then @@ -842,6 +848,10 @@ begin else TSynEdit(fCurrentEditor).UnRegisterStatusChangedHandler({$IFDEF FPC}@{$ENDIF}EditorStatusChanged); end; + if Value then + Application.AddOnDeactivateHandler({$IFDEF FPC}@{$ENDIF}AppDeactivated) + else + Application.RemoveOnDeactivateHandler({$IFDEF FPC}@{$ENDIF}AppDeactivated); end; procedure TSynBaseCompletionForm.SetItemList(const Value: TStrings);