Common code for the same handling of wxSL_INVERSE.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
cd0bbd03d7
commit
01526d4f6c
@ -25,86 +25,85 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxSliderNameStr;
|
||||
// Slider
|
||||
class WXDLLEXPORT wxSlider: public wxControl
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxSlider)
|
||||
DECLARE_DYNAMIC_CLASS(wxSlider)
|
||||
|
||||
public:
|
||||
wxSlider();
|
||||
wxSlider();
|
||||
|
||||
inline wxSlider(wxWindow *parent, wxWindowID id,
|
||||
int value, int minValue, int maxValue,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxSL_HORIZONTAL,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSliderNameStr)
|
||||
{
|
||||
Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name);
|
||||
}
|
||||
inline wxSlider(wxWindow *parent, wxWindowID id,
|
||||
int value, int minValue, int maxValue,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxSL_HORIZONTAL,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSliderNameStr)
|
||||
{
|
||||
Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name);
|
||||
}
|
||||
|
||||
~wxSlider();
|
||||
~wxSlider();
|
||||
|
||||
bool Create(wxWindow *parent, wxWindowID id,
|
||||
int value, int minValue, int maxValue,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxSL_HORIZONTAL,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSliderNameStr);
|
||||
bool Create(wxWindow *parent, wxWindowID id,
|
||||
int value, int minValue, int maxValue,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxSL_HORIZONTAL,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSliderNameStr);
|
||||
|
||||
virtual int GetValue() const ;
|
||||
virtual void SetValue(int);
|
||||
virtual int GetValue() const ;
|
||||
virtual void SetValue(int);
|
||||
|
||||
void SetRange(int minValue, int maxValue);
|
||||
void SetRange(int minValue, int maxValue);
|
||||
|
||||
inline int GetMin() const { return m_rangeMin; }
|
||||
inline int GetMax() const { return m_rangeMax; }
|
||||
inline int GetMin() const { return m_rangeMin; }
|
||||
inline int GetMax() const { return m_rangeMax; }
|
||||
|
||||
void SetMin(int minValue) { SetRange(minValue, m_rangeMax); }
|
||||
void SetMax(int maxValue) { SetRange(m_rangeMin, maxValue); }
|
||||
void SetMin(int minValue) { SetRange(minValue, m_rangeMax); }
|
||||
void SetMax(int maxValue) { SetRange(m_rangeMin, maxValue); }
|
||||
|
||||
// For trackbars only
|
||||
void SetTickFreq(int n, int pos);
|
||||
inline int GetTickFreq() const { return m_tickFreq; }
|
||||
void SetPageSize(int pageSize);
|
||||
int GetPageSize() const ;
|
||||
void ClearSel() ;
|
||||
void ClearTicks() ;
|
||||
void SetLineSize(int lineSize);
|
||||
int GetLineSize() const ;
|
||||
int GetSelEnd() const ;
|
||||
int GetSelStart() const ;
|
||||
void SetSelection(int minPos, int maxPos);
|
||||
void SetThumbLength(int len) ;
|
||||
int GetThumbLength() const ;
|
||||
void SetTick(int tickPos) ;
|
||||
// For trackbars only
|
||||
void SetTickFreq(int n, int pos);
|
||||
inline int GetTickFreq() const { return m_tickFreq; }
|
||||
void SetPageSize(int pageSize);
|
||||
int GetPageSize() const ;
|
||||
void ClearSel() ;
|
||||
void ClearTicks() ;
|
||||
void SetLineSize(int lineSize);
|
||||
int GetLineSize() const ;
|
||||
int GetSelEnd() const ;
|
||||
int GetSelStart() const ;
|
||||
void SetSelection(int minPos, int maxPos);
|
||||
void SetThumbLength(int len) ;
|
||||
int GetThumbLength() const ;
|
||||
void SetTick(int tickPos) ;
|
||||
|
||||
// set min/max size of the slider
|
||||
virtual void DoSetSizeHints( int minW, int minH,
|
||||
int maxW = -1, int maxH = -1,
|
||||
int incW = -1, int incH = -1 );
|
||||
|
||||
// set min/max size of the slider
|
||||
virtual void DoSetSizeHints( int minW, int minH,
|
||||
int maxW = -1, int maxH = -1,
|
||||
int incW = -1, int incH = -1 );
|
||||
protected:
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
virtual void DoSetSize(int x, int y, int w, int h, int sizeFlags);
|
||||
virtual void DoMoveWindow(int x, int y, int w, int h);
|
||||
|
||||
protected:
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
virtual void DoSetSize(int x, int y, int w, int h, int sizeFlags);
|
||||
virtual void DoMoveWindow(int x, int y, int w, int h);
|
||||
|
||||
void Command(wxCommandEvent& event);
|
||||
void Command(wxCommandEvent& event);
|
||||
virtual wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
|
||||
void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
|
||||
|
||||
// Common processing to invert slider values based on wxSL_INVERSE
|
||||
int MacInvertOrNot(int value) const;
|
||||
virtual int ValueInvertOrNot(int value) const;
|
||||
|
||||
wxStaticText* m_macMinimumStatic ;
|
||||
wxStaticText* m_macMaximumStatic ;
|
||||
wxStaticText* m_macValueStatic ;
|
||||
wxStaticText* m_macMinimumStatic ;
|
||||
wxStaticText* m_macMaximumStatic ;
|
||||
wxStaticText* m_macValueStatic ;
|
||||
|
||||
int m_rangeMin;
|
||||
int m_rangeMax;
|
||||
int m_pageSize;
|
||||
int m_lineSize;
|
||||
int m_tickFreq;
|
||||
int m_rangeMin;
|
||||
int m_rangeMax;
|
||||
int m_pageSize;
|
||||
int m_lineSize;
|
||||
int m_tickFreq;
|
||||
private :
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
@ -99,9 +99,6 @@ protected:
|
||||
// format an integer value as string
|
||||
static wxString Format(int n) { return wxString::Format(_T("%d"), n); }
|
||||
|
||||
// Common processing to invert slider values based on wxSL_INVERSE
|
||||
int MSWInvertOrNot(int value) const;
|
||||
|
||||
// get the boundig box for the slider and possible labels
|
||||
wxRect GetBoundingBox() const;
|
||||
|
||||
|
@ -86,8 +86,6 @@ private:
|
||||
|
||||
void Init();
|
||||
|
||||
int PalmInvertOrNot(int value) const;
|
||||
|
||||
int m_oldPos; // needed for tracing thumb position during scrolling
|
||||
int m_oldValue; // needed for comparing thumb position before and after scrolling
|
||||
int m_lineSize; // imitate line size
|
||||
|
@ -80,10 +80,19 @@ public:
|
||||
virtual int GetSelStart() const { return GetMax(); }
|
||||
virtual void SetSelection(int WXUNUSED(min), int WXUNUSED(max)) { }
|
||||
|
||||
|
||||
virtual void ApplyParentThemeBackground(const wxColour& bg)
|
||||
{ SetBackgroundColour(bg); }
|
||||
|
||||
protected:
|
||||
|
||||
// adjust value according to wxSL_INVERSE style
|
||||
virtual int ValueInvertOrNot(int value) const
|
||||
{
|
||||
if (HasFlag(wxSL_INVERSE))
|
||||
return (GetMax() + GetMin()) - value;
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
private:
|
||||
DECLARE_NO_COPY_CLASS(wxSliderBase)
|
||||
|
@ -136,7 +136,7 @@ wxSlider::~wxSlider()
|
||||
int wxSlider::GetValue() const
|
||||
{
|
||||
// We may need to invert the value returned by the widget
|
||||
return MacInvertOrNot( m_peer->GetValue() ) ;
|
||||
return ValueInvertOrNot( m_peer->GetValue() ) ;
|
||||
}
|
||||
|
||||
void wxSlider::SetValue(int value)
|
||||
@ -147,7 +147,7 @@ void wxSlider::SetValue(int value)
|
||||
m_macValueStatic->SetLabel( valuestring ) ;
|
||||
|
||||
// We only invert for the setting of the actual native widget
|
||||
m_peer->SetValue( MacInvertOrNot ( value ) ) ;
|
||||
m_peer->SetValue( ValueInvertOrNot ( value ) ) ;
|
||||
}
|
||||
|
||||
void wxSlider::SetRange(int minValue, int maxValue)
|
||||
@ -161,11 +161,11 @@ void wxSlider::SetRange(int minValue, int maxValue)
|
||||
m_peer->SetMaximum( m_rangeMax);
|
||||
|
||||
if(m_macMinimumStatic) {
|
||||
value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
|
||||
value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
|
||||
m_macMinimumStatic->SetLabel(value);
|
||||
}
|
||||
if(m_macMaximumStatic) {
|
||||
value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
|
||||
value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
|
||||
m_macMaximumStatic->SetLabel(value);
|
||||
}
|
||||
SetValue(m_rangeMin);
|
||||
@ -254,7 +254,7 @@ void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart, bo
|
||||
{
|
||||
// Whatever the native value is, we may need to invert it for calling
|
||||
// SetValue and putting the possibly inverted value in the event
|
||||
SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ;
|
||||
SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ;
|
||||
|
||||
SetValue( value ) ;
|
||||
|
||||
@ -278,7 +278,7 @@ wxInt32 wxSlider::MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF mevent )
|
||||
{
|
||||
// Whatever the native value is, we may need to invert it for calling
|
||||
// SetValue and putting the possibly inverted value in the event
|
||||
SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ;
|
||||
SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ;
|
||||
|
||||
SetValue( value ) ;
|
||||
|
||||
@ -326,9 +326,9 @@ wxSize wxSlider::DoGetBestSize() const
|
||||
int ht, wd;
|
||||
|
||||
// Get maximum text label width and height
|
||||
text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
|
||||
text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
|
||||
GetTextExtent(text, &textwidth, &textheight);
|
||||
text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
|
||||
text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
|
||||
GetTextExtent(text, &wd, &ht);
|
||||
if(ht > textheight) {
|
||||
textheight = ht;
|
||||
@ -389,9 +389,9 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags)
|
||||
int ht;
|
||||
|
||||
// Get maximum text label width and height
|
||||
text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
|
||||
text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
|
||||
GetTextExtent(text, &minValWidth, &textheight);
|
||||
text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
|
||||
text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
|
||||
GetTextExtent(text, &maxValWidth, &ht);
|
||||
if(ht > textheight) {
|
||||
textheight = ht;
|
||||
@ -434,7 +434,6 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// yet another hack since this is a composite control
|
||||
// when wxSlider has it's size hardcoded, we're not allowed to
|
||||
// change the size. But when the control has labels, we DO need
|
||||
@ -453,7 +452,7 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags)
|
||||
if (width == GetSize().x)
|
||||
m_minWidth = -1;
|
||||
}
|
||||
//If the control has labels, we still need to call this again because
|
||||
//If the control has labels, we still need to call this again because
|
||||
//the labels alter the control's w and h values.
|
||||
wxControl::DoSetSize( x, y , w , h ,sizeFlags ) ;
|
||||
|
||||
@ -466,7 +465,7 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height)
|
||||
}
|
||||
|
||||
// Common processing to invert slider values based on wxSL_INVERSE
|
||||
int wxSlider::MacInvertOrNot(int value) const
|
||||
int wxSlider::ValueInvertOrNot(int value) const
|
||||
{
|
||||
if (m_windowStyle & wxSL_VERTICAL)
|
||||
{
|
||||
@ -480,10 +479,7 @@ int wxSlider::MacInvertOrNot(int value) const
|
||||
}
|
||||
else // normal logic applies to HORIZONTAL sliders
|
||||
{
|
||||
if (m_windowStyle & wxSL_INVERSE)
|
||||
return (m_rangeMax + m_rangeMin) - value;
|
||||
else
|
||||
return value;
|
||||
return wxSliderBase::ValueInvertOrNot(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation),
|
||||
return false;
|
||||
}
|
||||
|
||||
int newPos = MSWInvertOrNot((int) ::SendMessage((HWND) control, TBM_GETPOS, 0, 0));
|
||||
int newPos = ValueInvertOrNot((int) ::SendMessage((HWND) control, TBM_GETPOS, 0, 0));
|
||||
if ( (newPos < GetMin()) || (newPos > GetMax()) )
|
||||
{
|
||||
// out of range - but we did process it
|
||||
@ -507,22 +507,14 @@ wxSize wxSlider95::DoGetBestSize() const
|
||||
// slider-specific methods
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
int wxSlider95::MSWInvertOrNot(int value) const
|
||||
{
|
||||
if (m_windowStyle & wxSL_INVERSE)
|
||||
return (m_rangeMax + m_rangeMin) - value;
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
int wxSlider95::GetValue() const
|
||||
{
|
||||
return MSWInvertOrNot(::SendMessage(GetHwnd(), TBM_GETPOS, 0, 0));
|
||||
return ValueInvertOrNot(::SendMessage(GetHwnd(), TBM_GETPOS, 0, 0));
|
||||
}
|
||||
|
||||
void wxSlider95::SetValue(int value)
|
||||
{
|
||||
::SendMessage(GetHwnd(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)MSWInvertOrNot(value));
|
||||
::SendMessage(GetHwnd(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)ValueInvertOrNot(value));
|
||||
|
||||
if ( m_labels )
|
||||
{
|
||||
@ -539,8 +531,8 @@ void wxSlider95::SetRange(int minValue, int maxValue)
|
||||
|
||||
if ( m_labels )
|
||||
{
|
||||
::SetWindowText((*m_labels)[SliderLabel_Min], Format(MSWInvertOrNot(m_rangeMin)));
|
||||
::SetWindowText((*m_labels)[SliderLabel_Max], Format(MSWInvertOrNot(m_rangeMax)));
|
||||
::SetWindowText((*m_labels)[SliderLabel_Min], Format(ValueInvertOrNot(m_rangeMin)));
|
||||
::SetWindowText((*m_labels)[SliderLabel_Max], Format(ValueInvertOrNot(m_rangeMax)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,14 +195,6 @@ int wxSlider::GetPageSize() const
|
||||
return ret;
|
||||
}
|
||||
|
||||
int wxSlider::PalmInvertOrNot(int value) const
|
||||
{
|
||||
if (m_windowStyle & wxSL_INVERSE)
|
||||
return (GetMax() + GetMin()) - value;
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
int wxSlider::GetValue() const
|
||||
{
|
||||
ControlType *control = (ControlType *)GetObjectPtr();
|
||||
@ -210,12 +202,12 @@ int wxSlider::GetValue() const
|
||||
return 0;
|
||||
uint16_t ret;
|
||||
CtlGetSliderValues(control, NULL, NULL, NULL, &ret);
|
||||
return PalmInvertOrNot(ret);
|
||||
return ValueInvertOrNot(ret);
|
||||
}
|
||||
|
||||
void wxSlider::SetValue(int value)
|
||||
{
|
||||
SetIntValue(PalmInvertOrNot(value));
|
||||
SetIntValue(ValueInvertOrNot(value));
|
||||
m_oldValue = m_oldPos = value;
|
||||
}
|
||||
|
||||
@ -335,7 +327,7 @@ bool wxSlider::SendUpdatedEvent()
|
||||
bool wxSlider::SendScrollEvent(EventType* event)
|
||||
{
|
||||
wxEventType scrollEvent;
|
||||
int newPos = PalmInvertOrNot(event->data.ctlRepeat.value);
|
||||
int newPos = ValueInvertOrNot(event->data.ctlRepeat.value);
|
||||
if ( newPos == m_oldPos )
|
||||
{
|
||||
// nothing changed since last event
|
||||
|
Loading…
Reference in New Issue
Block a user