From d66a042c1cd17d94d87be0c916edf1264b549abc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 19 May 1999 22:25:41 +0000 Subject: [PATCH 1/1] 1. bug in wxSplitter corrected: mouse event coords may be negative when the 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 --- include/wx/msw/control.h | 3 --- include/wx/msw/radiobox.h | 2 -- src/generic/splitter.cpp | 19 ++++++++++++++++--- src/msw/notebook.cpp | 5 +---- src/msw/radiobox.cpp | 9 +++++++++ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h index 35d5d8c4c3..446d49f333 100644 --- a/include/wx/msw/control.h +++ b/include/wx/msw/control.h @@ -34,9 +34,6 @@ public: // 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); diff --git a/include/wx/msw/radiobox.h b/include/wx/msw/radiobox.h index bfc72476b1..a750486a0f 100644 --- a/include/wx/msw/radiobox.h +++ b/include/wx/msw/radiobox.h @@ -66,8 +66,6 @@ public: 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; diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index 69ddce49e0..4272fe2514 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -263,11 +263,24 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) // 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() ) { diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index cdfedb4cb3..eb551853d5 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -123,10 +123,7 @@ bool wxNotebook::Create(wxWindow *parent, 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)); diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index 757b479beb..4038a36348 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -287,8 +287,17 @@ wxRadioBox::~wxRadioBox() } +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()); } -- 2.45.2