CtrlLib, ide: Horizontal scrool wheel support in LineEdit, TreeCtrl, ide IconDes, LayDes and DiffCtrl

This commit is contained in:
Mirek Fidler 2024-02-15 21:04:05 +01:00
parent 6381a3a3f4
commit 4580ca77db
14 changed files with 60 additions and 21 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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