]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/spinbutt.cpp
use WX_DEFINE_ARRAY_INT for an array of ints (bug 1536482)
[wxWidgets.git] / src / univ / spinbutt.cpp
index b03ff3c0a47ef22e321fa4c6732b32d86bd86ebf..5090c6329d5f751516b90bb4ac8a93ac5c522515 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     21.01.01
 // RCS-ID:      $Id$
-// Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// Copyright:   (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
-    #pragma implementation "spinbutbase.h"
-    #pragma implementation "univspinbutt.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
@@ -101,13 +96,13 @@ bool wxSpinButton::Create(wxWindow *parent,
 
     if ( !wxSpinButtonBase::Create(parent, id, pos, size, style,
                                    wxDefaultValidator, name) )
-        return FALSE;
+        return false;
 
     SetBestSize(size);
 
     CreateInputHandler(wxINP_HANDLER_SPINBTN);
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -144,14 +139,14 @@ int wxSpinButton::NormalizeValue(int value) const
     if ( value > m_max )
     {
         if ( GetWindowStyleFlag() & wxSP_WRAP )
-            value = m_min + (value - m_max) % (m_max - m_min);
+            value = m_min + (value - m_max - 1) % (m_max - m_min + 1);
         else
             value = m_max;
     }
     else if ( value < m_min )
     {
         if ( GetWindowStyleFlag() & wxSP_WRAP )
-            value = m_max - (m_min - value) % (m_max - m_min);
+            value = m_max - (m_min - value - 1) % (m_max - m_min + 1);
         else
             value = m_min;
     }
@@ -167,7 +162,7 @@ bool wxSpinButton::ChangeValue(int inc)
     {
         // nothing changed - most likely because we are already at min/max
         // value
-        return FALSE;
+        return false;
     }
 
     wxSpinEvent event(inc > 0 ? wxEVT_SCROLL_LINEUP : wxEVT_SCROLL_LINEDOWN,
@@ -178,7 +173,7 @@ bool wxSpinButton::ChangeValue(int inc)
     if ( GetEventHandler()->ProcessEvent(event) && !event.IsAllowed() )
     {
         // programm has vetoed the event
-        return FALSE;
+        return false;
     }
 
     m_value = valueNew;
@@ -187,7 +182,7 @@ bool wxSpinButton::ChangeValue(int inc)
     event.SetEventType(wxEVT_SCROLL_THUMBTRACK);
     (void)GetEventHandler()->ProcessEvent(event);
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -334,9 +329,9 @@ wxScrollArrows::Arrow wxSpinButton::HitTest(const wxPoint& pt) const
     wxRect rectArrow1, rectArrow2;
     CalcArrowRects(&rectArrow1, &rectArrow2);
 
-    if ( rectArrow1.Inside(pt) )
+    if ( rectArrow1.Contains(pt) )
         return wxScrollArrows::Arrow_First;
-    else if ( rectArrow2.Inside(pt) )
+    else if ( rectArrow2.Contains(pt) )
         return wxScrollArrows::Arrow_Second;
     else
         return wxScrollArrows::Arrow_None;
@@ -357,7 +352,15 @@ bool wxSpinButton::PerformAction(const wxControlAction& action,
     else
         return wxControl::PerformAction(action, numArg, strArg);
 
-    return TRUE;
+    return true;
+}
+
+/* static */
+wxInputHandler *wxSpinButton::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+    static wxStdSpinButtonInputHandler s_handler(handlerDef);
+
+    return &s_handler;
 }
 
 // ----------------------------------------------------------------------------
@@ -370,7 +373,7 @@ wxStdSpinButtonInputHandler(wxInputHandler *inphand)
 {
 }
 
-bool wxStdSpinButtonInputHandler::HandleKey(wxControl *control,
+bool wxStdSpinButtonInputHandler::HandleKey(wxInputConsumer *consumer,
                                             const wxKeyEvent& event,
                                             bool pressed)
 {
@@ -390,43 +393,43 @@ bool wxStdSpinButtonInputHandler::HandleKey(wxControl *control,
                 break;
         }
 
-        if ( !!action )
+        if ( !action.IsEmpty() )
         {
-            control->PerformAction(action);
+            consumer->PerformAction(action);
 
-            return TRUE;
+            return true;
         }
     }
 
-    return wxStdInputHandler::HandleKey(control, event, pressed);
+    return wxStdInputHandler::HandleKey(consumer, event, pressed);
 }
 
-bool wxStdSpinButtonInputHandler::HandleMouse(wxControl *control,
+bool wxStdSpinButtonInputHandler::HandleMouse(wxInputConsumer *consumer,
                                               const wxMouseEvent& event)
 {
-    wxSpinButton *spinbtn = wxStaticCast(control, wxSpinButton);
+    wxSpinButton *spinbtn = wxStaticCast(consumer->GetInputWindow(), wxSpinButton);
 
     if ( spinbtn->GetArrows().HandleMouse(event) )
     {
         // don't refresh, everything is already done
-        return FALSE;
+        return false;
     }
 
-    return wxStdInputHandler::HandleMouse(control, event);
+    return wxStdInputHandler::HandleMouse(consumer, event);
 }
 
-bool wxStdSpinButtonInputHandler::HandleMouseMove(wxControl *control,
+bool wxStdSpinButtonInputHandler::HandleMouseMove(wxInputConsumer *consumer,
                                                   const wxMouseEvent& event)
 {
-    wxSpinButton *spinbtn = wxStaticCast(control, wxSpinButton);
+    wxSpinButton *spinbtn = wxStaticCast(consumer->GetInputWindow(), wxSpinButton);
 
     if ( spinbtn->GetArrows().HandleMouseMove(event) )
     {
         // processed by the arrows
-        return FALSE;
+        return false;
     }
 
-    return wxStdInputHandler::HandleMouseMove(control, event);
+    return wxStdInputHandler::HandleMouseMove(consumer, event);
 }