]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/spinctrl.cpp
Correctly parse times without seconds in wxDateTime::ParseTime().
[wxWidgets.git] / src / msw / spinctrl.cpp
index 298319ad2d127ee48746f8058ae59565e9f6a0b6..80416bf320b5aca9ab71f847d8b65aeaa201664f 100644 (file)
@@ -207,7 +207,7 @@ wxSpinCtrl *wxSpinCtrl::GetSpinForTextCtrl(WXHWND hwndBuddy)
 
     // sanity check
     wxASSERT_MSG( spin->m_hwndBuddy == hwndBuddy,
-                  _T("wxSpinCtrl has incorrect buddy HWND!") );
+                  wxT("wxSpinCtrl has incorrect buddy HWND!") );
 
     return spin;
 }
@@ -336,15 +336,10 @@ bool wxSpinCtrl::Create(wxWindow *parent,
     WXDWORD msStyle = MSWGetStyle(GetWindowStyle(), & exStyle) ;
 
     // propagate text alignment style to text ctrl
-    if ( style & wxTE_RIGHT )
+    if ( style & wxALIGN_RIGHT )
         msStyle |= ES_RIGHT;
-    else if ( style & wxTE_CENTER )
+    else if ( style & wxALIGN_CENTER )
         msStyle |= ES_CENTER;
-    
-    // this control is used for numeric entry so normally using these flags by
-    // default shouldn't be a problem, if it is we can always add a style such
-    // as wxSP_NON_NUMERIC later
-    msStyle |= ES_NUMBER;
 
     // calculate the sizes: the size given is the total size for both controls
     // and we need to fit them both in the given width (height is the same)
@@ -359,7 +354,7 @@ bool wxSpinCtrl::Create(wxWindow *parent,
     sizeText.x -= sizeBtn.x + MARGIN_BETWEEN;
     if ( sizeText.x <= 0 )
     {
-        wxLogDebug(_T("not enough space for wxSpinCtrl!"));
+        wxLogDebug(wxT("not enough space for wxSpinCtrl!"));
     }
 
     wxPoint posBtn(pos);
@@ -376,7 +371,7 @@ bool wxSpinCtrl::Create(wxWindow *parent,
     m_hwndBuddy = (WXHWND)::CreateWindowEx
                     (
                      exStyle,                // sunken border
-                     _T("EDIT"),             // window class
+                     wxT("EDIT"),             // window class
                      NULL,                   // no window title
                      msStyle,                // style (will be shown later)
                      pos.x, pos.y,           // position
@@ -481,7 +476,7 @@ void wxSpinCtrl::SetValue(const wxString& text)
 void  wxSpinCtrl::SetValue(int val)
 {
     m_blockEvent = true;
-    
+
     wxSpinButton::SetValue(val);
 
     // normally setting the value of the spin button is enough as it updates
@@ -493,11 +488,11 @@ void  wxSpinCtrl::SetValue(int val)
         // to leave it like this, while we really want to always show the
         // current value in the control, so do it manually
         ::SetWindowText(GetBuddyHwnd(),
-                        wxString::Format(_T("%d"), val).wx_str());
+                        wxString::Format(wxT("%d"), val).wx_str());
     }
 
     m_oldValue = GetValue();
-    
+
     m_blockEvent = false;
 }
 
@@ -529,6 +524,28 @@ void wxSpinCtrl::SetSelection(long from, long to)
     ::SendMessage(GetBuddyHwnd(), EM_SETSEL, (WPARAM)from, (LPARAM)to);
 }
 
+// ----------------------------------------------------------------------------
+// wxSpinButton methods
+// ----------------------------------------------------------------------------
+
+void wxSpinCtrl::SetRange(int minVal, int maxVal)
+{
+    wxSpinButton::SetRange(minVal, maxVal);
+
+    // this control is used for numeric entry so restrict the input to numeric
+    // keys only -- but only if we don't need to be able to enter "-" in it as
+    // otherwise this would become impossible
+    const DWORD styleOld = ::GetWindowLong(GetBuddyHwnd(), GWL_STYLE);
+    DWORD styleNew;
+    if ( minVal < 0 )
+        styleNew = styleOld & ~ES_NUMBER;
+    else
+        styleNew = styleOld | ES_NUMBER;
+
+    if ( styleNew != styleOld )
+        ::SetWindowLong(GetBuddyHwnd(), GWL_STYLE, styleNew);
+}
+
 // ----------------------------------------------------------------------------
 // forward some methods to subcontrols
 // ----------------------------------------------------------------------------
@@ -580,7 +597,9 @@ bool wxSpinCtrl::Reparent(wxWindowBase *newParent)
     // destroy the old spin button
     UnsubclassWin();
     if ( !::DestroyWindow(GetHwnd()) )
+    {
         wxLogLastError(wxT("DestroyWindow"));
+    }
 
     // create and initialize the new one
     if ( !wxSpinButton::Create(GetParent(), GetId(),
@@ -707,7 +726,7 @@ void wxSpinCtrl::DoMoveWindow(int x, int y, int width, int height)
     int widthText = width - widthBtn - MARGIN_BETWEEN;
     if ( widthText <= 0 )
     {
-        wxLogDebug(_T("not enough space for wxSpinCtrl!"));
+        wxLogDebug(wxT("not enough space for wxSpinCtrl!"));
     }
 
     // 1) The buddy window