X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..64ea838d8f4d1853b7d850db93ee565e901d099a:/src/os2/spinbutt.cpp diff --git a/src/os2/spinbutt.cpp b/src/os2/spinbutt.cpp index 0bd30bf97c..05af314aa8 100644 --- a/src/os2/spinbutt.cpp +++ b/src/os2/spinbutt.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp +// Name: src/os2/spinbutt.cpp // Purpose: wxSpinButton // Author: David Webster // Modified by: @@ -9,11 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ - #pragma implementation "spinbutt.h" - #pragma implementation "spinbutbase.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -32,9 +27,6 @@ extern void wxAssociateWinWithHandle( HWND hWnd ,wxWindowOS2* pWin ); -static WXFARPROC fnWndProcSpinCtrl = (WXFARPROC)NULL; - -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent) #include "wx/os2/private.h" @@ -46,8 +38,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent) // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) - bool wxSpinButton::Create( wxWindow* pParent , wxWindowID vId @@ -69,8 +59,11 @@ bool wxSpinButton::Create( m_windowId = NewControlId(); else m_windowId = vId; - m_backgroundColour = pParent->GetBackgroundColour(); - m_foregroundColour = pParent->GetForegroundColour(); + if (pParent) + { + m_backgroundColour = pParent->GetBackgroundColour(); + m_foregroundColour = pParent->GetForegroundColour(); + } SetName(rsName); SetParent(pParent); m_windowStyle = lStyle; @@ -92,12 +85,10 @@ bool wxSpinButton::Create( if (nY < 0 ) nY = 0; - long lSstyle = 0L; - - lSstyle = WS_VISIBLE | - WS_TABSTOP | - SPBS_MASTER | // We use only single field spin buttons - SPBS_NUMERICONLY; // We default to numeric data + long lSstyle = WS_VISIBLE | + WS_TABSTOP | + SPBS_MASTER | // We use only single field spin buttons + SPBS_NUMERICONLY; // We default to numeric data if (m_windowStyle & wxCLIP_SIBLINGS ) lSstyle |= WS_CLIPSIBLINGS; @@ -123,20 +114,17 @@ bool wxSpinButton::Create( ::WinQueryWindowPos(m_hWnd, &vSwp); SetXComp(vSwp.x); - SetYComp(vSwp.y); - wxFont* pTextFont = new wxFont( 10 - ,wxMODERN - ,wxNORMAL - ,wxNORMAL - ); - SetFont(*pTextFont); + SetYComp(vSwp.y-5); // compensate for the associated TextControl border + + SetFont(*wxSMALL_FONT); // // For OS/2 we want to hide the text portion so we can substitute an - // independent text ctrl in its place. 10 device units does this + // independent text ctrl in its place. + // Therefore we must override any user given width with our best guess. // - SetSize( nX - ,nY - ,10L + SetSize( nX - GetXComp() + ,nY - GetYComp() + ,nWidth ,nHeight ); wxAssociateWinWithHandle( m_hWnd @@ -149,7 +137,6 @@ bool wxSpinButton::Create( ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this); fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc); #endif - delete pTextFont; return TRUE; } // end of wxSpinButton::Create @@ -164,11 +151,12 @@ wxSpinButton::~wxSpinButton() wxSize wxSpinButton::DoGetBestSize() const { // - // OS/2 PM does not really have system metrics so we'll just set it to - // 24x20 which is the size of the buttons and the borders. - // Also we have no horizontal spin buttons. + // OS/2 PM does not really have system metrics so we'll just set it to + // a square based on its height. // - return (wxSize(24,20)); + RECTL vRect; + ::WinQueryWindowRect(GetHwnd(),&vRect); + return wxSize(vRect.yTop,vRect.yTop); } // end of wxSpinButton::DoGetBestSize // ---------------------------------------------------------------------------- @@ -191,31 +179,25 @@ int wxSpinButton::GetValue() const return ((int)lVal); } // end of wxSpinButton::GetValue -bool wxSpinButton::OS2OnScroll( - int nOrientation -, WXWORD wParam -, WXWORD wPos -, WXHWND hControl -) +bool wxSpinButton::OS2OnScroll( int WXUNUSED(nOrientation), + WXWORD WXUNUSED(wParam), + WXWORD wPos, + WXHWND hControl ) { - wxCHECK_MSG(hControl, FALSE, wxT("scrolling what?") ) + wxCHECK_MSG(hControl, false, wxT("scrolling what?") ); - wxSpinEvent vEvent( wxEVT_SCROLL_THUMBTRACK - ,m_windowId - ); - int nVal = (int)wPos; // cast is important for negative values! + wxSpinEvent vEvent( wxEVT_SCROLL_THUMBTRACK, m_windowId ); + int nVal = (int)wPos; // cast is important for negative values! vEvent.SetPosition(nVal); vEvent.SetEventObject(this); - return(GetEventHandler()->ProcessEvent(vEvent)); + return(HandleWindowEvent(vEvent)); } // end of wxSpinButton::OS2OnScroll -bool wxSpinButton::OS2Command( - WXUINT uCmd -, WXWORD wId -) +bool wxSpinButton::OS2Command( WXUINT WXUNUSED(uCmd), + WXWORD WXUNUSED(wId) ) { - return FALSE; + return false; } // end of wxSpinButton::OS2Command void wxSpinButton::SetRange(