From 4580ca77db3a8a47b6035e759dafaebfa118a395 Mon Sep 17 00:00:00 2001 From: Mirek Fidler Date: Thu, 15 Feb 2024 21:04:05 +0100 Subject: [PATCH] CtrlLib, ide: Horizontal scrool wheel support in LineEdit, TreeCtrl, ide IconDes, LayDes and DiffCtrl --- reference/Events/Events.cpp | 5 +++++ uppsrc/CtrlCore/CtrlCore.h | 2 +- uppsrc/CtrlCore/CtrlMouse.cpp | 4 ++-- uppsrc/CtrlLib/LineEdit.cpp | 5 +++++ uppsrc/CtrlLib/TextEdit.h | 1 + uppsrc/CtrlLib/TreeCtrl.cpp | 5 +++++ uppsrc/CtrlLib/TreeCtrl.h | 1 + uppsrc/IconDes/Event.cpp | 8 -------- uppsrc/IconDes/IconDes.cpp | 17 +++++++++++++++++ uppsrc/IconDes/IconDes.h | 1 + uppsrc/TextDiffCtrl/TextCtrl.cpp | 5 +++++ uppsrc/TextDiffCtrl/TextDiffCtrl.h | 1 + uppsrc/ide/LayDes/LayDes.h | 21 +++++++++++---------- uppsrc/ide/LayDes/laydes.cpp | 5 +++++ 14 files changed, 60 insertions(+), 21 deletions(-) diff --git a/reference/Events/Events.cpp b/reference/Events/Events.cpp index 73aeb4dce..ac36ebc48 100644 --- a/reference/Events/Events.cpp +++ b/reference/Events/Events.cpp @@ -161,6 +161,11 @@ struct App : TopWindow { Log(Format("MouseWheel(Point(%d, %d), %d, %x)", p.x, p.y, zdelta, (int)keyflags)); } + virtual void MouseWheelH(Point p, int zdelta, dword keyflags) + { + Log(Format("MouseWheelH(Point(%d, %d), %d, %x)", p.x, p.y, zdelta, (int)keyflags)); + } + virtual void MouseLeave() { Log("MouseLeave"); diff --git a/uppsrc/CtrlCore/CtrlCore.h b/uppsrc/CtrlCore/CtrlCore.h index f4dadd10e..f75e231a3 100644 --- a/uppsrc/CtrlCore/CtrlCore.h +++ b/uppsrc/CtrlCore/CtrlCore.h @@ -988,7 +988,7 @@ public: virtual void MiddleHold(Point p, dword keyflags); virtual void MiddleUp(Point p, dword keyflags); virtual void MouseWheel(Point p, int zdelta, dword keyflags); - virtual void MouseWheelHor(Point p, int zdelta, dword keyflags); + virtual void MouseWheelH(Point p, int zdelta, dword keyflags); virtual void MouseLeave(); virtual void Pen(Point p, const PenInfo& pen, dword keyflags); diff --git a/uppsrc/CtrlCore/CtrlMouse.cpp b/uppsrc/CtrlCore/CtrlMouse.cpp index 3895ba6b4..2e02352cb 100644 --- a/uppsrc/CtrlCore/CtrlMouse.cpp +++ b/uppsrc/CtrlCore/CtrlMouse.cpp @@ -129,7 +129,7 @@ void Ctrl::MouseWheel(Point p, int zd, dword kf) } } -void Ctrl::MouseWheelHor(Point p, int zd, dword kf) +void Ctrl::MouseWheelH(Point p, int zd, dword kf) { Ctrl *parent = GetParent(); if(parent) { @@ -238,7 +238,7 @@ Image Ctrl::MouseEvent(int event, Point p, int zdelta, dword keyflags) MouseWheel(p, zdelta, keyflags); break; case MOUSEHWHEEL: - MouseWheelHor(p, zdelta, keyflags); + MouseWheelH(p, zdelta, keyflags); break; case CURSORIMAGE: return CursorImage(p, keyflags); diff --git a/uppsrc/CtrlLib/LineEdit.cpp b/uppsrc/CtrlLib/LineEdit.cpp index 59c3d5b91..30730ce18 100644 --- a/uppsrc/CtrlLib/LineEdit.cpp +++ b/uppsrc/CtrlLib/LineEdit.cpp @@ -45,6 +45,11 @@ void LineEdit::MouseWheel(Point, int zdelta, dword keyflags) { sb.WheelY(zdelta); } +void LineEdit::MouseWheelH(Point, int zdelta, dword) +{ + sb.WheelX(zdelta); +} + void LineEdit::Clear() { gcolumn = 0; TextCtrl::Clear(); diff --git a/uppsrc/CtrlLib/TextEdit.h b/uppsrc/CtrlLib/TextEdit.h index a8003740f..573b9d228 100644 --- a/uppsrc/CtrlLib/TextEdit.h +++ b/uppsrc/CtrlLib/TextEdit.h @@ -292,6 +292,7 @@ public: virtual void LeftDrag(Point p, dword flags); virtual void MouseMove(Point p, dword flags); virtual void MouseWheel(Point, int zdelta, dword); + virtual void MouseWheelH(Point, int zdelta, dword); virtual Image CursorImage(Point, dword); virtual void DragAndDrop(Point p, PasteClip& d); virtual void DragRepeat(Point p); diff --git a/uppsrc/CtrlLib/TreeCtrl.cpp b/uppsrc/CtrlLib/TreeCtrl.cpp index f15149fd1..b9f09eafc 100644 --- a/uppsrc/CtrlLib/TreeCtrl.cpp +++ b/uppsrc/CtrlLib/TreeCtrl.cpp @@ -1222,6 +1222,11 @@ void TreeCtrl::MouseWheel(Point, int zdelta, dword keyflags) sb.WheelY(zdelta); } +void TreeCtrl::MouseWheelH(Point, int zdelta, dword keyflags) +{ + sb.WheelX(zdelta); +} + void TreeCtrl::ChildGotFocus() { if(chldlck) diff --git a/uppsrc/CtrlLib/TreeCtrl.h b/uppsrc/CtrlLib/TreeCtrl.h index db6d46dc2..4083a9a1c 100644 --- a/uppsrc/CtrlLib/TreeCtrl.h +++ b/uppsrc/CtrlLib/TreeCtrl.h @@ -9,6 +9,7 @@ public: virtual void LeftDrag(Point p, dword keyflags); virtual void RightDown(Point p, dword flags); virtual void MouseWheel(Point p, int zdelta, dword keyflags); + virtual void MouseWheelH(Point, int zdelta, dword keyflags); virtual void MouseMove(Point, dword); virtual bool Key(dword key, int); virtual void GotFocus(); diff --git a/uppsrc/IconDes/Event.cpp b/uppsrc/IconDes/Event.cpp index bf1419bf3..71fe44878 100644 --- a/uppsrc/IconDes/Event.cpp +++ b/uppsrc/IconDes/Event.cpp @@ -50,14 +50,6 @@ void IconDes::MouseMove(Point p, dword keyflags) (this->*tool)(p, keyflags); } -void Upp::IconDes::MouseWheel(Point, int zdelta, dword) -{ - if(zdelta < 0) - ZoomOut(); - else - ZoomIn(); -} - void IconDes::LeftUp(Point p, dword keyflags) { if(!IsCurrent()) diff --git a/uppsrc/IconDes/IconDes.cpp b/uppsrc/IconDes/IconDes.cpp index fdecf17f2..75834abe1 100644 --- a/uppsrc/IconDes/IconDes.cpp +++ b/uppsrc/IconDes/IconDes.cpp @@ -60,6 +60,23 @@ void IconDes::SetSb() } } +void IconDes::MouseWheel(Point pt, int zdelta, dword keyflags) +{ + if(keyflags & K_CTRL) { + if(zdelta < 0) + ZoomOut(); + else + ZoomIn(); + } + else + sb.WheelY(zdelta); +} + +void IconDes::MouseWheelH(Point pt, int zdelta, dword keyflags) +{ + sb.WheelX(zdelta); +} + void IconDes::Scroll() { magnify = max(magnify, 1); diff --git a/uppsrc/IconDes/IconDes.h b/uppsrc/IconDes/IconDes.h index 287eb3a31..4370b357f 100644 --- a/uppsrc/IconDes/IconDes.h +++ b/uppsrc/IconDes/IconDes.h @@ -141,6 +141,7 @@ public: virtual void MouseLeave() { SyncStatus(); } virtual void LeftUp(Point p, dword keyflags); virtual void MouseWheel(Point p, int zdelta, dword keyflags); + virtual void MouseWheelH(Point pt, int zdelta, dword keyflags); virtual void RightDown(Point p, dword keyflags); virtual bool Key(dword key, int count); virtual Image CursorImage(Point p, dword keyflags); diff --git a/uppsrc/TextDiffCtrl/TextCtrl.cpp b/uppsrc/TextDiffCtrl/TextCtrl.cpp index bf1b9f39d..254b148de 100644 --- a/uppsrc/TextDiffCtrl/TextCtrl.cpp +++ b/uppsrc/TextDiffCtrl/TextCtrl.cpp @@ -430,6 +430,11 @@ void TextCompareCtrl::MouseWheel(Point pt, int zdelta, dword keyflags) scroll.WheelY(zdelta); } +void TextCompareCtrl::MouseWheelH(Point pt, int zdelta, dword keyflags) +{ + scroll.WheelX(zdelta); +} + void TextCompareCtrl::SetCount(int c) { bool rl = (c < lines.GetCount()); diff --git a/uppsrc/TextDiffCtrl/TextDiffCtrl.h b/uppsrc/TextDiffCtrl/TextDiffCtrl.h index 9d96d5858..857de423e 100644 --- a/uppsrc/TextDiffCtrl/TextDiffCtrl.h +++ b/uppsrc/TextDiffCtrl/TextDiffCtrl.h @@ -33,6 +33,7 @@ public: virtual void Paint(Draw& draw); virtual void Layout(); virtual void MouseWheel(Point pt, int zdelta, dword keyflags); + virtual void MouseWheelH(Point pt, int zdelta, dword keyflags); virtual void MouseMove(Point pt, dword keyflags); virtual void LeftDown(Point pt, dword keyflags); virtual void LeftDouble(Point pt, dword keyflags); diff --git a/uppsrc/ide/LayDes/LayDes.h b/uppsrc/ide/LayDes/LayDes.h index d32fb0022..4cf512fd7 100644 --- a/uppsrc/ide/LayDes/LayDes.h +++ b/uppsrc/ide/LayDes/LayDes.h @@ -270,16 +270,17 @@ struct LayDesEditPos { class LayDes : public StaticRect { public: - virtual void Paint(Draw& w) override; - virtual Image CursorImage(Point p, dword keyflags) override; - virtual void LeftDown(Point p, dword keyflags) override; - virtual void LeftRepeat(Point p, dword keyflags) override; - virtual void MouseMove(Point p, dword keyflags) override; - virtual void MouseWheel(Point p, int zdelta, dword keyflags) override; - virtual void LeftUp(Point p, dword keyflags) override; - virtual void RightDown(Point p, dword keyflags) override; - virtual void Layout() override; - virtual bool HotKey(dword key) override; + void Paint(Draw& w) override; + Image CursorImage(Point p, dword keyflags) override; + void LeftDown(Point p, dword keyflags) override; + void LeftRepeat(Point p, dword keyflags) override; + void MouseMove(Point p, dword keyflags) override; + void MouseWheel(Point p, int zdelta, dword keyflags) override; + void MouseWheelH(Point, int zdelta, dword) override; + void LeftUp(Point p, dword keyflags) override; + void RightDown(Point p, dword keyflags) override; + void Layout() override; + bool HotKey(dword key) override; private: bool DoKey(dword key, int count); diff --git a/uppsrc/ide/LayDes/laydes.cpp b/uppsrc/ide/LayDes/laydes.cpp index 070345414..50cb2bcec 100644 --- a/uppsrc/ide/LayDes/laydes.cpp +++ b/uppsrc/ide/LayDes/laydes.cpp @@ -294,6 +294,11 @@ void LayDes::MouseWheel(Point p, int zdelta, dword keyflags) sb.WheelY(zdelta); } +void LayDes::MouseWheelH(Point, int zdelta, dword) +{ + sb.WheelX(zdelta); +} + double LayDes::GetScale() { return (20 - Zoom) / 20.0;