]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/spinctrl.cpp
using on all OSX variants
[wxWidgets.git] / src / os2 / spinctrl.cpp
index 5328a895ea8785189870f3711838049ffc316427..c9d8187d9444bd7a0adee11f200061757b401769 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        msw/spinctrl.cpp
-// Purpose:     wxSpinCtrl class implementation for Win32
+// Name:        src/os2/spinctrl.cpp
+// Purpose:     wxSpinCtrl class implementation for OS/2
 // Author:      David Webster
 // Modified by:
 // Created:     10/15/99
 // Author:      David Webster
 // Modified by:
 // Created:     10/15/99
 // declarations
 // ============================================================================
 
 // declarations
 // ============================================================================
 
-
-#ifdef __GNUG__
-    #pragma implementation "spinctrlbase.h"
-    #pragma implementation "spinctrl.h"
-#endif
-
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
@@ -117,32 +111,31 @@ wxSpinCtrl::~wxSpinCtrl()
 // construction
 // ----------------------------------------------------------------------------
 
 // construction
 // ----------------------------------------------------------------------------
 
-bool wxSpinCtrl::Create(
-  wxWindow*                         pParent
-, wxWindowID                        vId
-, const wxString&                   rsValue
-, const wxPoint&                    rPos
-, const wxSize&                     rSize
-, long                              lStyle
-, int                               nMin
-, int                               nMax
-, int                               nInitial
-, const wxString&                   rsName
-)
+bool wxSpinCtrl::Create( wxWindow*       pParent,
+                         wxWindowID      vId,
+                         const wxString& WXUNUSED(rsValue),
+                         const wxPoint&  rPos,
+                         const wxSize&   rSize,
+                         long            lStyle,
+                         int             nMin,
+                         int             nMax,
+                         int             nInitial,
+                         const wxString& rsName )
 {
 {
-    SWP                             vSwp;
-
     if (vId == wxID_ANY)
         m_windowId = NewControlId();
     else
         m_windowId = vId;
     if (vId == wxID_ANY)
         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;
 
     SetName(rsName);
     SetParent(pParent);
     m_windowStyle      = lStyle;
 
-    int                             lSstyle = 0L;
+    int lSstyle = 0L;
 
     lSstyle = WS_VISIBLE      |
               WS_TABSTOP      |
 
     lSstyle = WS_VISIBLE      |
               WS_TABSTOP      |
@@ -179,20 +172,11 @@ bool wxSpinCtrl::Create(
     m_hWndBuddy = m_hWnd; // One in the same for OS/2
     if(pParent)
         pParent->AddChild((wxSpinButton *)this);
     m_hWndBuddy = m_hWnd; // One in the same for OS/2
     if(pParent)
         pParent->AddChild((wxSpinButton *)this);
-    wxFont*                          pTextFont = new wxFont( 10
-                                                            ,wxMODERN
-                                                            ,wxNORMAL
-                                                            ,wxNORMAL
-                                                           );
-    SetFont(*pTextFont);
-    ::WinQueryWindowPos(m_hWnd, &vSwp);
-    SetXComp(vSwp.x);
-    SetYComp(vSwp.y);
-    SetSize( rPos.x
-            ,rPos.y
-            ,rSize.x
-            ,rSize.y
-           );
+
+    SetFont(*wxSMALL_FONT);
+    SetXComp(0);
+    SetYComp(0);
+    SetSize( rPos.x, rPos.y, rSize.x, rSize.y );
 
     SetRange(nMin, nMax);
     SetValue(nInitial);
 
     SetRange(nMin, nMax);
     SetValue(nInitial);
@@ -206,7 +190,6 @@ bool wxSpinCtrl::Create(
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
     m_svAllSpins.Add(this);
     ::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
 
     return true;
 } // end of wxSpinCtrl::Create
 
@@ -214,15 +197,16 @@ wxSize wxSpinCtrl::DoGetBestSize() const
 {
     wxSize                          vSizeBtn = wxSpinButton::DoGetBestSize();
     int                             nHeight;
 {
     wxSize                          vSizeBtn = wxSpinButton::DoGetBestSize();
     int                             nHeight;
+    wxFont                          vFont = (wxFont)GetFont();
 
     vSizeBtn.x += DEFAULT_ITEM_WIDTH + MARGIN_BETWEEN;
 
     wxGetCharSize( GetHWND()
                   ,NULL
                   ,&nHeight
 
     vSizeBtn.x += DEFAULT_ITEM_WIDTH + MARGIN_BETWEEN;
 
     wxGetCharSize( GetHWND()
                   ,NULL
                   ,&nHeight
-                  ,(wxFont*)&GetFont()
+                  ,&vFont
                  );
                  );
-    nHeight = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nHeight);
+    nHeight = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nHeight)+4;
 
     if (vSizeBtn.y < nHeight)
     {
 
     if (vSizeBtn.y < nHeight)
     {
@@ -239,13 +223,7 @@ void wxSpinCtrl::DoGetPosition(
 , int*                              pnY
 ) const
 {
 , int*                              pnY
 ) const
 {
-    WXHWND                          hWnd = GetHWND();
-
-    wxConstCast(this, wxSpinCtrl)->m_hWnd = m_hWndBuddy;
-    wxSpinButton::DoGetPosition( pnX
-                                ,pnY
-                               );
-    wxConstCast(this, wxSpinCtrl)->m_hWnd = hWnd;
+    wxSpinButton::DoGetPosition( pnX,pnY );
 } // end of wxpinCtrl::DoGetPosition
 
 void wxSpinCtrl::DoGetSize(
 } // end of wxpinCtrl::DoGetPosition
 
 void wxSpinCtrl::DoGetSize(
@@ -321,7 +299,7 @@ wxSpinCtrl* wxSpinCtrl::GetSpinForTextCtrl(
 
     // sanity check
     wxASSERT_MSG( pSpin->m_hWndBuddy == hWndBuddy,
 
     // sanity check
     wxASSERT_MSG( pSpin->m_hWndBuddy == hWndBuddy,
-                  _T("wxSpinCtrl has incorrect buddy HWND!") );
+                  wxT("wxSpinCtrl has incorrect buddy HWND!") );
 
     return pSpin;
 } // end of wxSpinCtrl::GetSpinForTextCtrl
 
     return pSpin;
 } // end of wxSpinCtrl::GetSpinForTextCtrl
@@ -356,9 +334,9 @@ void wxSpinCtrl::OnChar (
                 wxString                    sVal = wxGetWindowText(m_hWndBuddy);
 
                 InitCommandEvent(vEvent);
                 wxString                    sVal = wxGetWindowText(m_hWndBuddy);
 
                 InitCommandEvent(vEvent);
-                vEvent.SetString((char*)sVal.c_str());
+                vEvent.SetString(sVal);
                 vEvent.SetInt(GetValue());
                 vEvent.SetInt(GetValue());
-                if (GetEventHandler()->ProcessEvent(vEvent))
+                if (HandleWindowEvent(vEvent))
                     return;
                 break;
             }
                     return;
                 break;
             }
@@ -376,7 +354,7 @@ void wxSpinCtrl::OnChar (
                 vEventNav.SetDirection(!rEvent.ShiftDown());
                 vEventNav.SetWindowChange(rEvent.ControlDown());
                 vEventNav.SetEventObject(this);
                 vEventNav.SetDirection(!rEvent.ShiftDown());
                 vEventNav.SetWindowChange(rEvent.ControlDown());
                 vEventNav.SetEventObject(this);
-                if (GetParent()->GetEventHandler()->ProcessEvent(vEventNav))
+                if (GetParent()->HandleWindowEvent(vEventNav))
                     return;
             }
             break;
                     return;
             }
             break;
@@ -398,7 +376,7 @@ void wxSpinCtrl::OnSpinChange(
 
     vEvent.SetEventObject(this);
     vEvent.SetInt(rEventSpin.GetPosition());
 
     vEvent.SetEventObject(this);
     vEvent.SetInt(rEventSpin.GetPosition());
-    (void)GetEventHandler()->ProcessEvent(vEvent);
+    (void)HandleWindowEvent(vEvent);
     if (rEventSpin.GetSkipped())
     {
         vEvent.Skip();
     if (rEventSpin.GetSkipped())
     {
         vEvent.Skip();
@@ -417,36 +395,32 @@ void wxSpinCtrl::OnSetFocus (
     rEvent.Skip();
 } // end of wxSpinCtrl::OnSetFocus
 
     rEvent.Skip();
 } // end of wxSpinCtrl::OnSetFocus
 
-bool wxSpinCtrl::ProcessTextCommand(
-  WXWORD                            wCmd
-, WXWORD                            wId
-)
+bool wxSpinCtrl::ProcessTextCommand( WXWORD wCmd,
+                                     WXWORD WXUNUSED(wId) )
 {
     switch (wCmd)
     {
         case SPBN_CHANGE:
         {
 {
     switch (wCmd)
     {
         case SPBN_CHANGE:
         {
-            wxCommandEvent          vEvent( wxEVT_COMMAND_TEXT_UPDATED
-                                           ,GetId()
-                                          );
+            wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED, GetId() );
             vEvent.SetEventObject(this);
 
             vEvent.SetEventObject(this);
 
-            wxString                sVal = wxGetWindowText(m_hWndBuddy);
+            wxString sVal = wxGetWindowText(m_hWndBuddy);
 
 
-            vEvent.SetString((char*)sVal.c_str());
+            vEvent.SetString(sVal);
             vEvent.SetInt(GetValue());
             vEvent.SetInt(GetValue());
-            return (GetEventHandler()->ProcessEvent(vEvent));
+            return (HandleWindowEvent(vEvent));
         }
 
         case SPBN_SETFOCUS:
         case SPBN_KILLFOCUS:
         {
         }
 
         case SPBN_SETFOCUS:
         case SPBN_KILLFOCUS:
         {
-            wxFocusEvent                vEvent( wCmd == EN_KILLFOCUS ? wxEVT_KILL_FOCUS : wxEVT_SET_FOCUS
-                                               ,m_windowId
-                                              );
+            wxFocusEvent vEvent( wCmd == EN_KILLFOCUS ? wxEVT_KILL_FOCUS : wxEVT_SET_FOCUS
+                                ,m_windowId
+                               );
 
             vEvent.SetEventObject(this);
 
             vEvent.SetEventObject(this);
-            return(GetEventHandler()->ProcessEvent(vEvent));
+            return(HandleWindowEvent(vEvent));
         }
         default:
             break;
         }
         default:
             break;