X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70a2c6562fcc7088076ab421419069ef50e4a7d3..09d350c0bc105653e7cd59a8290684a3c4e70d7e:/src/os2/spinctrl.cpp?ds=inline diff --git a/src/os2/spinctrl.cpp b/src/os2/spinctrl.cpp index 2fa04e7049..5328a895ea 100644 --- a/src/os2/spinctrl.cpp +++ b/src/os2/spinctrl.cpp @@ -31,7 +31,7 @@ #include "wx/wx.h" #endif -#if wxUSE_SPINBTN +#if wxUSE_SPINCTRL #include "wx/spinctrl.h" #include "wx/os2/private.h" @@ -49,7 +49,9 @@ wxArraySpins wxSpinCtrl::m_svAllSpins; IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton) - EVT_SPIN(-1, wxSpinCtrl::OnSpinChange) + EVT_CHAR(wxSpinCtrl::OnChar) + EVT_SPIN(wxID_ANY, 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 // @@ -131,7 +132,7 @@ bool wxSpinCtrl::Create( { SWP vSwp; - if (vId == -1) + if (vId == wxID_ANY) m_windowId = NewControlId(); else m_windowId = vId; @@ -173,7 +174,7 @@ bool wxSpinCtrl::Create( ); if (m_hWnd == 0) { - return FALSE; + return false; } m_hWndBuddy = m_hWnd; // One in the same for OS/2 if(pParent) @@ -206,7 +207,7 @@ bool wxSpinCtrl::Create( fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc); m_svAllSpins.Add(this); delete pTextFont; - return TRUE; + return true; } // end of wxSpinCtrl::Create wxSize wxSpinCtrl::DoGetBestSize() const @@ -300,10 +301,10 @@ bool wxSpinCtrl::Enable( { if (!wxControl::Enable(bEnable)) { - return FALSE; + return false; } ::WinEnableWindow(GetHwnd(), bEnable); - return TRUE; + return true; } // end of wxSpinCtrl::Enable wxSpinCtrl* wxSpinCtrl::GetSpinForTextCtrl( @@ -345,7 +346,7 @@ void wxSpinCtrl::OnChar ( wxKeyEvent& rEvent ) { - switch (rEvent.KeyCode()) + switch (rEvent.GetKeyCode()) { case WXK_RETURN: { @@ -404,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 @@ -442,7 +455,7 @@ bool wxSpinCtrl::ProcessTextCommand( // // Not processed // - return FALSE; + return false; } // end of wxSpinCtrl::ProcessTextCommand void wxSpinCtrl::SetFocus() @@ -457,14 +470,13 @@ bool wxSpinCtrl::SetFont( if (!wxWindowBase::SetFont(rFont)) { // nothing to do - return FALSE; + return false; } - WXHANDLE hFont = GetFont().GetResourceHandle(); wxOS2SetFont( m_hWnd ,rFont ); - return TRUE; + return true; } // end of wxSpinCtrl::SetFont void wxSpinCtrl::SetValue( @@ -483,9 +495,25 @@ bool wxSpinCtrl::Show( { if (!wxControl::Show(bShow)) { - return FALSE; + return false; } - return TRUE; + return true; } // end of wxSpinCtrl::Show -#endif //wxUSE_SPINBTN +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_SPINCTRL