From 0b316d9d075e726ec389210e5ece0b3e15dc2933 Mon Sep 17 00:00:00 2001 From: Lipinast Lekrisov Date: Tue, 29 Apr 2025 10:20:26 +0000 Subject: [PATCH] IDE: OnUserInput/NotifyApplicationUserInput fixes --- .../source/dockedresizecontrol.pas | 5 ++++- ide/codeexplorer.pas | 6 +++--- ide/main.pp | 6 +++--- ide/sourceeditor.pp | 14 +++++++------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/dockedformeditor/source/dockedresizecontrol.pas b/components/dockedformeditor/source/dockedresizecontrol.pas index ce76c2d920..45d978bfa9 100644 --- a/components/dockedformeditor/source/dockedresizecontrol.pas +++ b/components/dockedformeditor/source/dockedresizecontrol.pas @@ -114,6 +114,7 @@ end; procedure TResizeControl.AppOnIdle(Sender: TObject; var Done: Boolean); var LFakeMenuNeeded: Boolean; + Mess : TLMessage; begin if FDesignerModified then begin @@ -124,7 +125,9 @@ begin TryBoundDesignForm; if Assigned(OnResized) then OnResized(Self); - Application.NotifyUserInputHandler(Self, 0); // force repaint invisible components + FillChar(Mess,SizeOf(Mess),0); + Mess.Msg := 0; + Application.NotifyUserInputHandler(Self, Mess); // force repaint invisible components end else if LFakeMenuNeeded then TryBoundDesignForm; // always repaint menu on modification diff --git a/ide/codeexplorer.pas b/ide/codeexplorer.pas index 8bb738fd42..1a00ca3127 100644 --- a/ide/codeexplorer.pas +++ b/ide/codeexplorer.pas @@ -43,7 +43,7 @@ uses // LazUtils LazStringUtils, LazLoggerBase, LazTracer, // LCL - LCLProc, LCLType, Forms, Controls, Dialogs, Buttons, ComCtrls, Menus, ExtCtrls, EditBtn, + LCLProc, LCLType, LMessages, Forms, Controls, Dialogs, Buttons, ComCtrls, Menus, ExtCtrls, EditBtn, // CodeTools FileProcs, BasicCodeTools, CustomCodeTool, CodeToolManager, CodeAtom, CodeCache, CodeTree, KeywordFuncLists, FindDeclarationTool, DirectivesTree, @@ -159,7 +159,7 @@ type procedure TreeviewDblClick(Sender: TObject); procedure TreeviewDeletion(Sender: TObject; Node: TTreeNode); procedure TreeviewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure UserInputHandler(Sender: TObject; {%H-}Msg: Cardinal); + procedure UserInputHandler(Sender: TObject; var Msg: TLMessage); private fCategoryNodes: array[TCodeExplorerCategory] of TTreeNode; FCodeFilename: string; @@ -734,7 +734,7 @@ begin end; end; -procedure TCodeExplorerView.UserInputHandler(Sender: TObject; Msg: Cardinal); +procedure TCodeExplorerView.UserInputHandler(Sender: TObject; var Msg: TLMessage); begin if CodeExplorerOptions.Refresh=cerOnIdle then CheckOnIdle; diff --git a/ide/main.pp b/ide/main.pp index cff365ee46..dda701a0f4 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -61,7 +61,7 @@ uses // fpc packages Math, Classes, SysUtils, TypInfo, Types, StrUtils, Contnrs, process, AVL_Tree, // LCL - LCLProc, LCLType, LCLIntf, LResources, HelpIntfs, InterfaceBase, LCLPlatformDef, + LCLProc, LCLType, LCLIntf, LMessages, LResources, HelpIntfs, InterfaceBase, LCLPlatformDef, ComCtrls, Forms, Buttons, Menus, Controls, Graphics, ExtCtrls, Dialogs, LclStrConsts, // CodeTools FileProcs, FindDeclarationTool, LinkScanner, BasicCodeTools, CodeToolsStructs, @@ -186,7 +186,7 @@ type // event handlers procedure MainIDEFormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure MainIDEFormCloseQuery(Sender: TObject; var CanClose: boolean); - procedure HandleApplicationUserInput(Sender: TObject; {%H-}Msg: Cardinal); + procedure HandleApplicationUserInput(Sender: TObject; var Msg: TLMessage); procedure HandleApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); procedure HandleApplicationActivate(Sender: TObject); procedure HandleApplicationDeActivate(Sender: TObject); @@ -12512,7 +12512,7 @@ begin {$ENDIF} end; -procedure TMainIDE.HandleApplicationUserInput(Sender: TObject; Msg: Cardinal); +procedure TMainIDE.HandleApplicationUserInput(Sender: TObject; var Msg: TLMessage); begin Include(FIdleIdeActions, iiaUserInputSinceLastIdle); if ToolStatus=itCodeTools then diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index dfb70b90f4..a07d582162 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -1268,7 +1268,7 @@ type function FindUniquePageName(FileName:string; IgnoreEditor: TSourceEditor):string; function SomethingModified(Verbose: boolean = false): boolean; procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); - procedure OnUserInput(Sender: TObject; Msg: Cardinal); + procedure OnUserInput(Sender: TObject; var Msg: TLMessage); procedure LockAllEditorsInSourceChangeCache; procedure UnlockAllEditorsInSourceChangeCache; procedure BeginGlobalUpdate; @@ -11862,7 +11862,7 @@ begin end; end; -procedure TSourceEditorManager.OnUserInput(Sender: TObject; Msg: Cardinal); +procedure TSourceEditorManager.OnUserInput(Sender: TObject; var Msg: TLMessage); begin CodeToolsToSrcEditTimer.Enabled:=true; // Hints @@ -11872,16 +11872,16 @@ begin if FHints.PtIsOnHint(Mouse.CursorPos) then begin // ignore any action over Hint if FHints.CurHintWindow.Active then exit; - if (Msg = WM_MOUSEMOVE) - or (Msg = LM_MOUSELEAVE) + if (Msg.Msg = WM_MOUSEMOVE) + or (Msg.Msg = LM_MOUSELEAVE) {$IFDEF WINDOWS} - or (Msg = WM_NCMOUSEMOVE) - or ((Msg >= WM_MOUSEFIRST) and (Msg <= WM_MOUSELAST)) + or (Msg.Msg = WM_NCMOUSEMOVE) + or ((Msg.Msg >= WM_MOUSEFIRST) and (Msg.Msg <= WM_MOUSELAST)) {$ENDIF} then exit; end; - if (Msg = WM_MOUSEMOVE) {$IFDEF WINDOWS} or (Msg = WM_NCMOUSEMOVE){$ENDIF} then begin + if (Msg.Msg = WM_MOUSEMOVE) {$IFDEF WINDOWS} or (Msg.Msg = WM_NCMOUSEMOVE){$ENDIF} then begin FHints.HideAutoHintAfterMouseMoved; exit; end;