]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/spinbutt.cpp
a fix for the last fix
[wxWidgets.git] / src / os2 / spinbutt.cpp
index cbea725592c8f95dac6f02e666f996866107b16e..99e5852636d1ec34bd7e8fac10887f800cbd4fe9 100644 (file)
@@ -1,32 +1,56 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        spinbutt.cpp
 // Purpose:     wxSpinButton
-// Author:      AUTHOR
+// Author:      David Webster
 // Modified by:
-// Created:     ??/??/98
+// Created:     10/15/99
 // RCS-ID:      $Id$
-// Copyright:   (c) AUTHOR
-// Licence:    wxWindows licence
+// Copyright:   (c) David Webster
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
-#pragma implementation "spinbutt.h"
+    #pragma implementation "spinbutt.h"
+    #pragma implementation "spinbutbase.h"
 #endif
 
-#include "wx/spinbutt.h"
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
 
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
+
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
 #endif
+#if wxUSE_SPINBTN
 
-wxSpinButton::wxSpinButton()
-{
-       m_min = 0;
-       m_max = 100;
-}
+// Can't resolve reference to CreateUpDownControl in
+// TWIN32, but could probably use normal CreateWindow instead.
+
+
+#include "wx/spinbutt.h"
 
-bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
-            long style, const wxString& name)
+IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)
+
+#include "wx/os2/private.h"
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxWin macros
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
+
+bool wxSpinButton::Create(
+  wxWindow*                         parent
+, wxWindowID                        id
+, const wxPoint&                    pos
+, const wxSize&                     size
+, long                              style
+, const wxString&                   name
+)
 {
     SetName(name);
 
@@ -34,9 +58,6 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
 
     SetParent(parent);
 
-    m_min = 0;
-    m_max = 100;
-
     m_windowId = (id == -1) ? NewControlId() : id;
 
     // TODO create spin button
@@ -47,32 +68,96 @@ wxSpinButton::~wxSpinButton()
 {
 }
 
+// ----------------------------------------------------------------------------
+// size calculation
+// ----------------------------------------------------------------------------
+
+wxSize wxSpinButton::DoGetBestSize() const
+{
+    // TODO:
+/*
+    if ( (GetWindowStyle() & wxSP_VERTICAL) != 0 )
+    {
+        // vertical control
+        return wxSize(GetSystemMetrics(SM_CXVSCROLL),
+                      2*GetSystemMetrics(SM_CYVSCROLL));
+    }
+    else
+    {
+        // horizontal control
+        return wxSize(2*GetSystemMetrics(SM_CXHSCROLL),
+                      GetSystemMetrics(SM_CYHSCROLL));
+    }
+*/
+    return wxSize(0, 0);
+}
+
+// ----------------------------------------------------------------------------
 // Attributes
-////////////////////////////////////////////////////////////////////////////
+// ----------------------------------------------------------------------------
 
 int wxSpinButton::GetValue() const
 {
-       // TODO
+    // TODO
     return 0;
 }
 
 void wxSpinButton::SetValue(int val)
 {
-       // TODO
+    // TODO
 }
 
 void wxSpinButton::SetRange(int minVal, int maxVal)
 {
-       m_min = minVal;
-       m_max = maxVal;
-       // TODO
+    // TODO
 }
 
-// Spin event
-IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent)
+bool wxSpinButton::OS2OnScroll(int orientation, WXWORD wParam,
+                               WXWORD pos, WXHWND control)
+{
+    wxCHECK_MSG( control, FALSE, wxT("scrolling what?") )
+// TODO:
+/*
+    if ( wParam != SB_THUMBPOSITION )
+    {
+        // probable SB_ENDSCROLL - we don't react to it
+        return FALSE;
+    }
+
+    wxSpinEvent event(wxEVT_SCROLL_THUMBTRACK, m_windowId);
+    event.SetPosition((short)pos);    // cast is important for negative values!
+    event.SetEventObject(this);
+
+    return GetEventHandler()->ProcessEvent(event);
+*/
+    return FALSE;
+}
 
-wxSpinEvent::wxSpinEvent(wxEventType commandType, int id):
-  wxScrollEvent(commandType, id)
+bool wxSpinButton::OS2OnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
 {
+    // TODO:
+/*
+    LPNM_UPDOWN lpnmud = (LPNM_UPDOWN)lParam;
+
+    wxSpinEvent event(lpnmud->iDelta > 0 ? wxEVT_SCROLL_LINEUP
+                                         : wxEVT_SCROLL_LINEDOWN,
+                      m_windowId);
+    event.SetPosition(lpnmud->iPos + lpnmud->iDelta);
+    event.SetEventObject(this);
+
+    bool processed = GetEventHandler()->ProcessEvent(event);
+
+    *result = event.IsAllowed() ? 0 : 1;
+
+    return processed;
+*/
+    return FALSE;
+}
+
+bool wxSpinButton::OS2Command(WXUINT cmd, WXWORD id)
+{
+    // No command messages
+    return FALSE;
 }
 
+#endif //wxUSE_SPINBTN