IDE: OnUserInput/NotifyApplicationUserInput fixes

This commit is contained in:
Lipinast Lekrisov 2025-04-29 10:20:26 +00:00 committed by Maxim Ganetsky
parent 899f36897a
commit 0b316d9d07
4 changed files with 17 additions and 14 deletions

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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;