mouse is captured which made sash roll over the window
2. missing functions added to wxRadioBox
3. non existent functions removed from wxRadioBox and wxControl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2516
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Calls the callback and appropriate event handlers
bool ProcessCommand(wxCommandEvent& event);
- // Places item in centre of panel - so can't be used BEFORE panel->Fit()
- void Centre(int direction = wxHORIZONTAL);
-
// MSW-specific
#ifdef __WIN95__
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
void GetSize(int *x, int *y) const;
void GetPosition(int *x, int *y) const;
- wxString GetLabel() const;
- void SetLabel(const wxString& label);
void SetLabel(int item, const wxString& label);
void SetLabel(int item, wxBitmap *bitmap);
wxString GetLabel(int item) const;
// Erase old tracker
DrawSashTracker(m_oldX, m_oldY);
- // Draw new one
- DrawSashTracker(x, y);
-
+#ifdef __WXMSW__
+ // As we captured the mouse, we may get the mouse events from outside
+ // our window - for example, negative values in x, y. This has a weird
+ // consequence under MSW where we use unsigned values sometimes and
+ // signed ones other times: the coordinates turn as big positive
+ // numbers and so the sash is drawn on the *right* side of the window
+ // instead of the left (or bottom instead of top). Correct this.
m_oldX = x;
m_oldY = y;
+
+ if ( (short)m_oldX < 0 )
+ m_oldX = 0;
+ if ( (short)m_oldY < 0 )
+ m_oldY = 0;
+#endif // __WXMSW__
+
+ // Draw new one
+ DrawSashTracker(m_oldX, m_oldY);
}
else if ( event.LeftDClick() )
{
const wxString& name)
{
// base init
- SetName(name);
- SetParent(parent);
-
- m_windowId = id == -1 ? NewControlId() : id;
+ CreateBase(parent, id, pos, size, style, name);
// colors and font
m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE));
}
+wxString wxRadioBox::GetLabel(int item) const
+{
+ wxCHECK_MSG( item >= 0 && item < m_noItems, "", "invalid radiobox index" );
+
+ return wxGetWindowText(m_radioButtons[item]);
+}
+
void wxRadioBox::SetLabel(int item, const wxString& label)
{
+ wxCHECK_RET( item >= 0 && item < m_noItems, "invalid radiobox index" );
+
m_radioWidth[item] = m_radioHeight[item] = -1;
SetWindowText((HWND)m_radioButtons[item], label.c_str());
}