Skip to content

Commit

Permalink
Add SpinnerWidth property to IntegerSlider.
Browse files Browse the repository at this point in the history
  • Loading branch information
Pavel Kovalenko committed Oct 19, 2014
1 parent e13fb6f commit 6307cb1
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 39 additions & 0 deletions src/editors/xrSdkControls/Controls/IntegerSlider/IntegerSlider.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Drawing;
using System.Windows.Forms;

namespace XRay.SdkControls
Expand All @@ -8,6 +9,7 @@ public sealed partial class IntegerSlider : UserControl
public IntegerSlider()
{
InitializeComponent();
MinimumSize = Size.Empty; // just to trigger MinimumSize setter logic
}

public event EventHandler ValueChanged;
Expand Down Expand Up @@ -86,6 +88,43 @@ public TickStyle TickStyle
set { trackBar.TickStyle = value; }
}

public int SpinnerWidth
{
get { return numSpinner.Width; }
set
{
var minSpinnerWidth = numSpinner.MinimumSize.Width;
var minTrackBarWidth = trackBar.MinimumSize.Width;
if (value < minSpinnerWidth)
value = minSpinnerWidth;
if (trackBar.Width+numSpinner.Width-value < minTrackBarWidth)
{
value = trackBar.Width+numSpinner.Width-minTrackBarWidth;
if (value == numSpinner.Width)
return;
}
var delta = value-numSpinner.Width;
if (delta == 0)
return;
var spinnerLoc = numSpinner.Location;
numSpinner.Location = new Point(spinnerLoc.X-delta, spinnerLoc.Y);
trackBar.Width -= delta;
numSpinner.Width = value;
}
}

public override Size MinimumSize
{
get { return base.MinimumSize; }
set
{
var minWidth = numSpinner.MinimumSize.Width+trackBar.MinimumSize.Width;
if (value.Width < minWidth)
value.Width = minWidth;
base.MinimumSize = value;
}
}

private void OnValueChanged()
{
if (ValueChanged != null)
Expand Down

0 comments on commit 6307cb1

Please sign in to comment.