((width - (m_minLabelWidth + m_maxLabelWidth)) / 2) -
(m_maxLabelWidth / 2);
+ int ySlider = y;
+
if ( HasFlag(wxSL_BOTTOM) )
{
+ if ( HasFlag(wxSL_VALUE_LABEL) )
+ {
+ DoMoveSibling((HWND)(*m_labels)[SliderLabel_Value],
+ xLabelValue,
+ y,
+ maxLabelWidth, labelHeight);
+
+ ySlider += labelHeight;
+ yLabelMinMax += labelHeight;
+ }
+
if ( HasFlag(wxSL_MIN_MAX_LABELS) )
{
holdLeftX = x;
yLabelMinMax,
holdRightWidth, labelHeight);
}
+ }
+ else // wxSL_TOP
+ {
if ( HasFlag(wxSL_VALUE_LABEL) )
{
DoMoveSibling((HWND)(*m_labels)[SliderLabel_Value],
xLabelValue,
- y - labelHeight,
+ y + THUMB + tickOffset,
maxLabelWidth, labelHeight);
}
- }
- else // wxSL_TOP
- {
+
if ( HasFlag(wxSL_MIN_MAX_LABELS) )
{
holdLeftX = x;
yLabelMinMax,
holdRightWidth, labelHeight);
}
- if ( HasFlag(wxSL_VALUE_LABEL) )
- DoMoveSibling((HWND)(*m_labels)[SliderLabel_Value],
- xLabelValue,
- y + THUMB + tickOffset,
- maxLabelWidth, labelHeight);
}
// position the slider itself along the top/bottom edge
labelOffset = labelHeight;
wxSliderBase::DoMoveWindow(
x + m_minLabelWidth + VGAP,
- y,
+ ySlider,
width - (m_minLabelWidth + m_maxLabelWidth + (VGAP*2)),
THUMB + tickOffset);
}
if ( m_labels )
{
- // labels add extra height
int labelSize = GetLabelsSize();
- if ( HasFlag(wxSL_MIN_MAX_LABELS) )
+
+ // Min/max labels are compensated by the ticks so we don't need
+ // extra space for them if we're also showing ticks.
+ if ( HasFlag(wxSL_MIN_MAX_LABELS) && !HasFlag(wxSL_TICKS) )
size.y += labelSize;
+
+ // The value label is always on top of the control and so does need
+ // extra space in any case.
if ( HasFlag(wxSL_VALUE_LABEL) )
- size.y += static_cast<int>(labelSize*2.75);
+ size.y += labelSize;
}
}