From 24f498292a2db87acf24e023d6b5666da0de5e82 Mon Sep 17 00:00:00 2001 From: Margers Date: Thu, 9 Jan 2025 21:31:15 +0000 Subject: [PATCH] Make TFPMemo view srollable even if no scrollbars are attached to it --- packages/ide/fpviews.pas | 17 +++++++++++++++++ packages/ide/weditor.pas | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/ide/fpviews.pas b/packages/ide/fpviews.pas index 43077e66ef..f43aa2cfac 100644 --- a/packages/ide/fpviews.pas +++ b/packages/ide/fpviews.pas @@ -5012,6 +5012,7 @@ end; procedure TFPMemo.HandleEvent(var Event: TEvent); var DontClear: boolean; S: string; + LineCount,LinesScroll : Sw_Integer; begin case Event.What of evKeyDown : @@ -5028,6 +5029,22 @@ begin end; if not DontClear then ClearEvent(Event); end; + evMouseDown: + if (Event.Buttons=mbScrollUp) then { mouse scroll up} + begin + LinesScroll:=1; + if Event.Double then LinesScroll:=LinesScroll+4; + LineCount:=Max(GetLineCount,1); + ScrollTo(Delta.X,Min(Max(0,LineCount-Size.Y),Delta.Y+LinesScroll)); + ClearEvent(Event); + end else + if (Event.Buttons=mbScrollDown) then { mouse scroll down } + begin + LinesScroll:=-1; + if Event.Double then LinesScroll:=LinesScroll-4; + ScrollTo(Delta.X, Max(0,Delta.Y+LinesScroll)); + ClearEvent(Event); + end; end; inherited HandleEvent(Event); end; diff --git a/packages/ide/weditor.pas b/packages/ide/weditor.pas index a2cab9cac6..46881dea0a 100644 --- a/packages/ide/weditor.pas +++ b/packages/ide/weditor.pas @@ -3583,10 +3583,10 @@ end; procedure TCustomCodeEditor.ScrollTo(X, Y: sw_Integer); begin - inherited ScrollTo(X,Y); - if (HScrollBar=nil) or (VScrollBar=nil) then - begin Delta.X:=X; Delta.Y:=Y; end; - DrawView; + inherited ScrollTo(X,Y); + if (HScrollBar=nil) then Delta.X:=Max(X,0); + if (VScrollBar=nil) then Delta.Y:=Max(Min(Y,GetLineCount-1),0); + if (HScrollBar=nil) or (VScrollBar=nil) then DrawView; end; function TCustomCodeEditor.IsModal: boolean;