[Lazarus] Show value hints while debugging fills screen - patch
Mattias Gaertner
nc-gaertnma at netcologne.de
Fri May 26 12:02:13 CEST 2017
On Tue, 23 May 2017 12:35:36 +0200
Russ via Lazarus <lazarus at lists.lazarus-ide.org> wrote:
> I find debugging value hints (TurboPowerIProDsgn installed, "Show value
> hints while debugging") useful but annoying when the hint becomes so big
> it covers the variable being checked or even fills the screen; on single
> monitor systems the only way to close the hint is to scroll down to the
> variable link. Especially annoying when the mouse-over was inadvertent.
>
> The following code illustrates the problem:
> <code>
> program HugeHintProblem;
> var
> HugeHintVar: array[1..100, 1..100] of byte;
> i, j: Integer;
> begin
> for i := 1 to 100 do
> for j := 1 to 100 do
> HugeHintVar[i,j] := random(255);
> { Break on the next statement and mouse-over HugeHintVar - The hint
> will fill the screen (this may take some time).}
> HugeHintVar[1, 1] := 56;
> end.
> </code>
>
> The following patch seems to fix the problem, limiting the hint span
> from the left side of the variable and one line below to the bottom
> right corner of the editor in undocked mode, and to the bottom right
> corner of the IDE in docked mode.
>
> <patch>
> Index: components/ideintf/idehelpintf.pas
> ===================================================================
> --- components/ideintf/idehelpintf.pas (revision 55056)
> +++ components/ideintf/idehelpintf.pas (working copy)
> @@ -383,6 +383,8 @@
> end;
>
> procedure DoHtml;
> + var
> + MaxWidth, MaxHeight: Integer;
> begin
> if HintFont<>nil then
> HintRenderWindow.Font := HintFont;
> @@ -397,10 +399,16 @@
> ms.Free;
> end;
> HtmlHelpProvider.ControlIntf.GetPreferredControlSize(NewWidth,NewHeight);
> + MaxWidth := Screen.ActiveForm.Left + Screen.ActiveForm.Width -
> ScreenPos.x;
> + MaxHeight := Screen.ActiveForm.Top + Screen.ActiveForm.Height -
> ScreenPos.y;
> if NewWidth <= 0 then
> - NewWidth := 500;
> + NewWidth := 500
> + else if NewWidth > MaxWidth then
> + NewWidth := MaxWidth;
> if NewHeight <= 0 then
> - NewHeight := 200;
> + NewHeight := 200
> + else if NewHeight > MaxHeight then
> + NewHeight := MaxHeight;
> HintRenderWindow.HintRectAdjust := Rect(0, 0, NewWidth, NewHeight);
> if MouseOffset then
> HintRenderWindow.OffsetHintRect(ScreenPos)
> </patch>
>
> I have tested this with windows XP, 7 and 8.1, Lazarus V1.64, V1.65 and
> trunk, and with two monitors in various configurations
Thanks, applied.
> I tried to register an account on the bug tracker twice, but the link in
> the confirmation email leads to an APPLICATION ERROR #1902 in Mantis,
> complaining about an invalid confirmation URL
Marc fixed one problem. Does it now work for you?
Mattias
More information about the Lazarus
mailing list