Skip to content

Commit 6307cb1

Browse files
author
Pavel Kovalenko
committed
Add SpinnerWidth property to IntegerSlider.
1 parent e13fb6f commit 6307cb1

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/editors/xrSdkControls/Controls/IntegerSlider/IntegerSlider.Designer.cs

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/editors/xrSdkControls/Controls/IntegerSlider/IntegerSlider.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Drawing;
23
using System.Windows.Forms;
34

45
namespace XRay.SdkControls
@@ -8,6 +9,7 @@ public sealed partial class IntegerSlider : UserControl
89
public IntegerSlider()
910
{
1011
InitializeComponent();
12+
MinimumSize = Size.Empty; // just to trigger MinimumSize setter logic
1113
}
1214

1315
public event EventHandler ValueChanged;
@@ -86,6 +88,43 @@ public TickStyle TickStyle
8688
set { trackBar.TickStyle = value; }
8789
}
8890

91+
public int SpinnerWidth
92+
{
93+
get { return numSpinner.Width; }
94+
set
95+
{
96+
var minSpinnerWidth = numSpinner.MinimumSize.Width;
97+
var minTrackBarWidth = trackBar.MinimumSize.Width;
98+
if (value < minSpinnerWidth)
99+
value = minSpinnerWidth;
100+
if (trackBar.Width+numSpinner.Width-value < minTrackBarWidth)
101+
{
102+
value = trackBar.Width+numSpinner.Width-minTrackBarWidth;
103+
if (value == numSpinner.Width)
104+
return;
105+
}
106+
var delta = value-numSpinner.Width;
107+
if (delta == 0)
108+
return;
109+
var spinnerLoc = numSpinner.Location;
110+
numSpinner.Location = new Point(spinnerLoc.X-delta, spinnerLoc.Y);
111+
trackBar.Width -= delta;
112+
numSpinner.Width = value;
113+
}
114+
}
115+
116+
public override Size MinimumSize
117+
{
118+
get { return base.MinimumSize; }
119+
set
120+
{
121+
var minWidth = numSpinner.MinimumSize.Width+trackBar.MinimumSize.Width;
122+
if (value.Width < minWidth)
123+
value.Width = minWidth;
124+
base.MinimumSize = value;
125+
}
126+
}
127+
89128
private void OnValueChanged()
90129
{
91130
if (ValueChanged != null)

0 commit comments

Comments
 (0)