X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cb0afb266214f827417c42474168c7edda7c953e..34a336adb6796a596e3d59846bd23370f936921f:/src/msw/spinctrl.cpp diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index b28679f7fa..4f2f56cca2 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -149,7 +149,7 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd, WPARAM wParam, LPARAM lParam) { - wxSpinCtrl *spin = (wxSpinCtrl *)::GetWindowLong(hwnd, GWL_USERDATA); + wxSpinCtrl *spin = (wxSpinCtrl *)wxGetWindowUserData(hwnd); // forward some messages (the key and focus ones only so far) to // the spin ctrl @@ -158,7 +158,7 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd, case WM_SETFOCUS: // if the focus comes from the spin control itself, don't set it // back to it -- we don't want to go into an infinite loop - if ( wParam == spin->GetHWND() ) + if ( (WXHWND)wParam == spin->GetHWND() ) break; //else: fall through @@ -170,7 +170,7 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd, spin->MSWWindowProc(message, wParam, lParam); // The control may have been deleted at this point, so check. - if (!(::IsWindow(hwnd) && ((wxSpinCtrl *)::GetWindowLong(hwnd, GWL_USERDATA)) == spin)) + if ( !::IsWindow(hwnd) || wxGetWindowUserData(hwnd) != spin ) return 0; break; @@ -186,8 +186,7 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd, /* static */ wxSpinCtrl *wxSpinCtrl::GetSpinForTextCtrl(WXHWND hwndBuddy) { - wxSpinCtrl *spin = (wxSpinCtrl *)::GetWindowLong((HWND)hwndBuddy, - GWL_USERDATA); + wxSpinCtrl *spin = (wxSpinCtrl *)wxGetWindowUserData((HWND)hwndBuddy); int i = ms_allSpins.Index(spin); @@ -363,9 +362,9 @@ bool wxSpinCtrl::Create(wxWindow *parent, SetValue(initial); // subclass the text ctrl to be able to intercept some events - m_wndProcBuddy = (WXFARPROC)::GetWindowLong(GetBuddyHwnd(), GWL_WNDPROC); - ::SetWindowLong(GetBuddyHwnd(), GWL_USERDATA, (LONG)this); - ::SetWindowLong(GetBuddyHwnd(), GWL_WNDPROC, (LONG)wxBuddyTextWndProc); + wxSetWindowUserData(GetBuddyHwnd(), this); + m_wndProcBuddy = (WXFARPROC)wxSetWindowProc(GetBuddyHwnd(), + wxBuddyTextWndProc); // should have the same font as the other controls SetFont(GetParent()->GetFont()); @@ -526,7 +525,12 @@ wxSize wxSpinCtrl::DoGetBestSize() const wxGetCharSize(GetHWND(), NULL, &y, &GetFont()); y = EDIT_HEIGHT_FROM_CHAR_HEIGHT(y); - if ( sizeBtn.y < y ) + // JACS: we should always use the height calculated + // from above, because otherwise we'll get a spin control + // that's too big. So never use the height calculated + // from wxSpinButton::DoGetBestSize(). + + // if ( sizeBtn.y < y ) { // make the text tall enough sizeBtn.y = y;