X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e58dab20ce995856303154a367bcca904066525c..ebe47451544561fbe6e57808d604641d24109359:/src/os2/spinctrl.cpp diff --git a/src/os2/spinctrl.cpp b/src/os2/spinctrl.cpp index bfda23f725..6c44693285 100644 --- a/src/os2/spinctrl.cpp +++ b/src/os2/spinctrl.cpp @@ -49,7 +49,9 @@ wxArraySpins wxSpinCtrl::m_svAllSpins; IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton) + EVT_CHAR(wxSpinCtrl::OnChar) EVT_SPIN(-1, wxSpinCtrl::OnSpinChange) + EVT_SET_FOCUS(wxSpinCtrl::OnSetFocus) END_EVENT_TABLE() // ---------------------------------------------------------------------------- // constants @@ -71,8 +73,7 @@ MRESULT EXPENTRY wxSpinCtrlWndProc( wxSpinCtrl* pSpin = (wxSpinCtrl *)::WinQueryWindowULong( hWnd ,QWL_USER ); - bool bProccesed = FALSE; - MRESULT rc = (MRESULT)0; + // // Forward some messages (the key ones only so far) to the spin ctrl // @@ -151,15 +152,6 @@ bool wxSpinCtrl::Create( if (m_windowStyle & wxCLIP_SIBLINGS ) lSstyle |= WS_CLIPSIBLINGS; - // - // If the parent is a scrolled window the controls must - // have this style or they will overlap the scrollbars - // - if (pParent) - if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) || - pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow))) - lSstyle |= WS_CLIPSIBLINGS; - SPBCDATA vCtrlData; vCtrlData.cbSize = sizeof(SPBCDATA); @@ -187,7 +179,12 @@ bool wxSpinCtrl::Create( m_hWndBuddy = m_hWnd; // One in the same for OS/2 if(pParent) pParent->AddChild((wxSpinButton *)this); - SetFont(*wxSMALL_FONT); + wxFont* pTextFont = new wxFont( 10 + ,wxMODERN + ,wxNORMAL + ,wxNORMAL + ); + SetFont(*pTextFont); ::WinQueryWindowPos(m_hWnd, &vSwp); SetXComp(vSwp.x); SetYComp(vSwp.y); @@ -209,6 +206,7 @@ bool wxSpinCtrl::Create( ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this); fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc); m_svAllSpins.Add(this); + delete pTextFont; return TRUE; } // end of wxSpinCtrl::Create @@ -340,15 +338,15 @@ int wxSpinCtrl::GetValue() const ,SPBQ_UPDATEIFVALID ) ); - lVal - atol(zVal); - return lVal; + lVal = atol(zVal); + return (int)lVal; } // end of wxSpinCtrl::GetValue void wxSpinCtrl::OnChar ( wxKeyEvent& rEvent ) { - switch (rEvent.KeyCode()) + switch (rEvent.GetKeyCode()) { case WXK_RETURN: { @@ -407,6 +405,18 @@ void wxSpinCtrl::OnSpinChange( } } // end of wxSpinCtrl::OnSpinChange +void wxSpinCtrl::OnSetFocus ( + wxFocusEvent& rEvent +) +{ + // + // When we get focus, give it to our buddy window as it needs it more than + // we do + // + ::WinSetFocus(HWND_DESKTOP, (HWND)m_hWndBuddy); + rEvent.Skip(); +} // end of wxSpinCtrl::OnSetFocus + bool wxSpinCtrl::ProcessTextCommand( WXWORD wCmd , WXWORD wId @@ -463,7 +473,6 @@ bool wxSpinCtrl::SetFont( return FALSE; } - WXHANDLE hFont = GetFont().GetResourceHandle(); wxOS2SetFont( m_hWnd ,rFont ); @@ -491,4 +500,20 @@ bool wxSpinCtrl::Show( return TRUE; } // end of wxSpinCtrl::Show -#endif //wxUSE_SPINBTN \ No newline at end of file +void wxSpinCtrl::SetSelection ( + long lFrom +, long lTo +) +{ + // + // If from and to are both -1, it means (in wxWidgets) that all text should + // be selected - translate into Windows convention + // + if ((lFrom == -1) && (lTo == -1)) + { + lFrom = 0; + } + ::WinSendMsg(m_hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lFrom, (USHORT)lTo), (MPARAM)0); +} // end of wxSpinCtrl::SetSelection + +#endif //wxUSE_SPINBTN