position the labels correctly when we're created with fixed size

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-12-12 18:59:42 +00:00
parent 7fe985eede
commit 8a8dcc3421

View File

@@ -207,6 +207,14 @@ wxSlider95::Create(wxWindow *parent,
SetValue(value);
SetPageSize((maxValue - minValue)/10);
// we need to position the labels correctly if we have them and if
// SetSize() hadn't been called before (when best size was determined by
// MSWCreateControl()) as in this case they haven't been put in place yet
if ( m_labels && size.x != wxDefaultCoord && size.y != wxDefaultCoord )
{
SetSize(size);
}
return true;
}
@@ -394,6 +402,9 @@ void wxSlider95::DoMoveWindow(int x, int y, int width, int height)
return;
}
// be careful to position the slider itself after moving the labels as
// otherwise our GetBoundingBox(), which is called from WM_SIZE handler,
// would return a wrong result and wrong size would be cached internally
if ( HasFlag(wxSL_VERTICAL) )
{
int wLabel;
@@ -401,14 +412,6 @@ void wxSlider95::DoMoveWindow(int x, int y, int width, int height)
int xLabel = HasFlag(wxSL_LEFT) ? x + width - wLabel : x;
// position the slider itself along the left/right edge
::MoveWindow(GetHwnd(),
HasFlag(wxSL_LEFT) ? x : x + wLabel + HGAP,
y + hLabel/2,
width - wLabel - HGAP,
height - hLabel,
TRUE);
// position all labels: min at the top, value in the middle and max at
// the bottom
::MoveWindow((*m_labels)[SliderLabel_Min],
@@ -419,6 +422,14 @@ void wxSlider95::DoMoveWindow(int x, int y, int width, int height)
::MoveWindow((*m_labels)[SliderLabel_Max],
xLabel, y + height - hLabel, wLabel, hLabel, TRUE);
// position the slider itself along the left/right edge
::MoveWindow(GetHwnd(),
HasFlag(wxSL_LEFT) ? x : x + wLabel + HGAP,
y + hLabel/2,
width - wLabel - HGAP,
height - hLabel,
TRUE);
}
else // horizontal
{
@@ -427,14 +438,6 @@ void wxSlider95::DoMoveWindow(int x, int y, int width, int height)
int yLabel = HasFlag(wxSL_TOP) ? y + height - hLabel : y;
// position the slider itself along the top/bottom edge
::MoveWindow(GetHwnd(),
x,
HasFlag(wxSL_TOP) ? y : y + hLabel,
width,
height - hLabel,
TRUE);
// position all labels: min on the left, value in the middle and max to
// the right
::MoveWindow((*m_labels)[SliderLabel_Min],
@@ -445,6 +448,14 @@ void wxSlider95::DoMoveWindow(int x, int y, int width, int height)
::MoveWindow((*m_labels)[SliderLabel_Max],
x + width - wLabel, yLabel, wLabel, hLabel, TRUE);
// position the slider itself along the top/bottom edge
::MoveWindow(GetHwnd(),
x,
HasFlag(wxSL_TOP) ? y : y + hLabel,
width,
height - hLabel,
TRUE);
}
}
@@ -625,4 +636,26 @@ bool wxSlider95::Show(bool show)
return true;
}
bool wxSlider95::Enable(bool enable)
{
if ( !wxSliderBase::Enable(enable) )
return false;
if ( m_labels )
m_labels->Enable(enable);
return true;
}
bool wxSlider95::SetFont(const wxFont& font)
{
if ( !wxSliderBase::SetFont(font) )
return false;
if ( m_labels )
m_labels->SetFont(font);
return true;
}
#endif // wxUSE_SLIDER