[Feature] Custom Scrollbar (#183), version 1.0.17.59

This commit is contained in:
Markus Hofknecht 2021-06-04 17:21:52 +02:00
parent 81b4bd037b
commit e6f496a72e

View file

@ -15,7 +15,6 @@ namespace SystemTrayMenu.UserInterface
public class CustomScrollbar : UserControl public class CustomScrollbar : UserControl
{ {
private readonly Timer timerMouseStillClicked = new Timer(); private readonly Timer timerMouseStillClicked = new Timer();
private readonly int controlWidth = 15;
private float moLargeChange = 10; private float moLargeChange = 10;
private float moSmallChange = 1; private float moSmallChange = 1;
@ -44,8 +43,6 @@ namespace SystemTrayMenu.UserInterface
SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true); SetStyle(ControlStyles.DoubleBuffer, true);
Width = controlWidth;
MinimumSize = new Size(controlWidth, Width + Width + GetScrollbarHeight());
int GetScrollbarHeight() int GetScrollbarHeight()
{ {
int nTrackHeight = Height - (Width + Width); int nTrackHeight = Height - (Width + Width);
@ -213,7 +210,7 @@ namespace SystemTrayMenu.UserInterface
base.AutoSize = value; base.AutoSize = value;
if (base.AutoSize) if (base.AutoSize)
{ {
Width = controlWidth; Width = Width;
} }
} }
} }
@ -432,7 +429,7 @@ namespace SystemTrayMenu.UserInterface
int nTop = (int)moSliderTop; int nTop = (int)moSliderTop;
nTop += Width; nTop += Width;
Point ptPoint = PointToClient(Cursor.Position); Point ptPoint = PointToClient(Cursor.Position);
Rectangle thumbrect = new Rectangle(new Point(0, nTop), new Size(controlWidth + 1, nScrollbarHeight)); Rectangle thumbrect = new Rectangle(new Point(0, nTop), new Size(Width + 1, nScrollbarHeight));
if (thumbrect.Contains(ptPoint)) if (thumbrect.Contains(ptPoint))
{ {
timerMouseStillClicked.Stop(); timerMouseStillClicked.Stop();
@ -501,8 +498,8 @@ namespace SystemTrayMenu.UserInterface
int nTop = (int)moSliderTop; int nTop = (int)moSliderTop;
nTop += Width; nTop += Width;
Rectangle thumbrect = new Rectangle(new Point(0, nTop), new Size(controlWidth + 1, nScrollbarHeight)); Rectangle thumbrect = new Rectangle(new Point(0, nTop), new Size(Width + 1, nScrollbarHeight));
Rectangle trackRectangle = new Rectangle(new Point(0, Width), new Size(controlWidth + 1, nTrackHeight)); Rectangle trackRectangle = new Rectangle(new Point(0, Width), new Size(Width + 1, nTrackHeight));
if (thumbrect.Contains(ptPoint)) if (thumbrect.Contains(ptPoint))
{ {
nClickPoint = ptPoint.Y - nTop; nClickPoint = ptPoint.Y - nTop;
@ -526,7 +523,7 @@ namespace SystemTrayMenu.UserInterface
timerMouseStillClicked.Start(); timerMouseStillClicked.Start();
} }
Rectangle uparrowrect = new Rectangle(new Point(0, 0), new Size(controlWidth + 1, Width)); Rectangle uparrowrect = new Rectangle(new Point(0, 0), new Size(Width + 1, Width));
if (uparrowrect.Contains(ptPoint)) if (uparrowrect.Contains(ptPoint))
{ {
MoveUp(SmallChange); MoveUp(SmallChange);
@ -536,7 +533,7 @@ namespace SystemTrayMenu.UserInterface
timerMouseStillClicked.Start(); timerMouseStillClicked.Start();
} }
Rectangle downarrowrect = new Rectangle(new Point(0, Width + nTrackHeight), new Size(controlWidth + 1, Width)); Rectangle downarrowrect = new Rectangle(new Point(0, Width + nTrackHeight), new Size(Width + 1, Width));
if (downarrowrect.Contains(ptPoint)) if (downarrowrect.Contains(ptPoint))
{ {
MoveDown(SmallChange); MoveDown(SmallChange);
@ -698,8 +695,8 @@ namespace SystemTrayMenu.UserInterface
int nTop = (int)moSliderTop; int nTop = (int)moSliderTop;
nTop += Width; nTop += Width;
Rectangle scrollbarbrect = new Rectangle(new Point(0, nTop), new Size(controlWidth + 1, nSliderHeight)); Rectangle scrollbarbrect = new Rectangle(new Point(0, nTop), new Size(Width + 1, nSliderHeight));
Rectangle trackRectangle = new Rectangle(new Point(0, Width), new Size(controlWidth + 1, nTrackHeight)); Rectangle trackRectangle = new Rectangle(new Point(0, Width), new Size(Width + 1, nTrackHeight));
if (scrollbarbrect.Contains(ptPoint)) if (scrollbarbrect.Contains(ptPoint))
{ {
if (e.Button != MouseButtons.Left) if (e.Button != MouseButtons.Left)
@ -725,7 +722,7 @@ namespace SystemTrayMenu.UserInterface
} }
} }
Rectangle uparrowrect = new Rectangle(new Point(0, 0), new Size(controlWidth + 1, Width)); Rectangle uparrowrect = new Rectangle(new Point(0, 0), new Size(Width + 1, Width));
if (uparrowrect.Contains(ptPoint)) if (uparrowrect.Contains(ptPoint))
{ {
arrowUpHovered = true; arrowUpHovered = true;
@ -733,7 +730,7 @@ namespace SystemTrayMenu.UserInterface
arrowDownHovered = false; arrowDownHovered = false;
} }
Rectangle downarrowrect = new Rectangle(new Point(0, Width + nTrackHeight), new Size(controlWidth + 1, Width)); Rectangle downarrowrect = new Rectangle(new Point(0, Width + nTrackHeight), new Size(Width + 1, Width));
if (downarrowrect.Contains(ptPoint)) if (downarrowrect.Contains(ptPoint))
{ {
arrowUpHovered = false; arrowUpHovered = false;