[Lazarus] IDE CoolBar issue
Ondrej Pokorny
lazarus at kluug.net
Wed Sep 9 09:26:08 CEST 2015
On 09.09.2015 08:34, Juha Manninen wrote:
> On Wed, Sep 9, 2015 at 8:09 AM, patspiper <patspiper at gmail.com> wrote:
>> The patch works indeed. I haven't inspected the dektop manager code, but
>> QueueAsync call may be more suited for the task than a timer.
> Another choice in OnIdle handler.
> The benefit would be that also the initial update of the IDE Coolbar
> would be delayed and the IDE would be ready for editing sooner.
> Lazarus still starts a lot slower than many competing advanced
> programmers' editors. There is no good reason for it because we don't
> use virtual machines like Java or .NET based systems do (including
> Delphi now).
> I optimized the Component Palette startup a lot but there is still more to do.
>
> Juha
Attempt number 2 using QueueAsyncCall and a class variable (I don't like
global variables for such things but one could be used here as well if
you like it more).
Ondrej
-------------- next part --------------
Index: ide/desktopmanager.pas
===================================================================
--- ide/desktopmanager.pas (revision 49788)
+++ ide/desktopmanager.pas (working copy)
@@ -62,8 +62,11 @@
end;
TShowDesktopsToolButton = class(TIDEToolButton)
+ private class var
+ DoChangeDesktopName: string;
private
procedure ChangeDesktop(Sender: TObject);
+ class procedure DoChangeDesktop({%H-}Data: PtrInt);
procedure SaveAsDesktop(Sender: TObject);
procedure MenuOnPopup(Sender: TObject);
@@ -143,11 +146,17 @@
end;
procedure TShowDesktopsToolButton.ChangeDesktop(Sender: TObject);
+begin
+ DoChangeDesktopName := (Sender as TShowDesktopItem).DesktopName;
+ Application.QueueAsyncCall(@DoChangeDesktop, 1);
+end;
+
+class procedure TShowDesktopsToolButton.DoChangeDesktop(Data: PtrInt);
var
xDesktopName: string;
xDesktop: TDesktopOpt;
begin
- xDesktopName := (Sender as TShowDesktopItem).DesktopName;
+ xDesktopName := DoChangeDesktopName;
if xDesktopName = '' then
Exit;
More information about the Lazarus
mailing list