mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Add OnMouseDown interaction to scrollbars
This commit is contained in:
parent
935492e008
commit
276a3a504f
2 changed files with 28 additions and 2 deletions
|
@ -426,7 +426,7 @@ private void AutomaticPan(Vector2 centerOffset)
|
|||
}
|
||||
}
|
||||
|
||||
private void AutomaticPan()
|
||||
public void AutomaticPan()
|
||||
{
|
||||
AutomaticPan(CanvasCenterOffset);
|
||||
}
|
||||
|
|
|
@ -161,7 +161,33 @@ public override void OnMouseDown(Point position)
|
|||
{
|
||||
base.OnMouseDown(position);
|
||||
|
||||
// Pan here
|
||||
int inMousePosition, inClientAreaSize, inImageSize;
|
||||
|
||||
if (Orientation == Orientation.Horizontal)
|
||||
{
|
||||
inMousePosition = position.X;
|
||||
inClientAreaSize = form.ClientArea.Width;
|
||||
inImageSize = form.CanvasRectangle.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
inMousePosition = position.Y;
|
||||
inClientAreaSize = form.ClientArea.Height;
|
||||
inImageSize = form.CanvasRectangle.Height;
|
||||
}
|
||||
|
||||
int mousePositionLocal = inMousePosition - Margin - Padding;
|
||||
|
||||
int trackLength = inClientAreaSize - Margin * 2 - Padding * 2 - Thickness;
|
||||
int trackLengthInternal = trackLength - Padding * 2;
|
||||
|
||||
int centerOffsetNew = (int)((trackLengthInternal / 2.0f - mousePositionLocal) / trackLengthInternal * inImageSize);
|
||||
|
||||
form.CanvasCenterOffset = Orientation == Orientation.Horizontal
|
||||
? new Vector2(centerOffsetNew, form.CanvasCenterOffset.Y)
|
||||
: new Vector2(form.CanvasCenterOffset.X, centerOffsetNew);
|
||||
|
||||
form.AutomaticPan();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue