]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/spinbutt.cpp
destroying native and wx controls
[wxWidgets.git] / src / os2 / spinbutt.cpp
index 55e9b2c6a350d1c8b4dcd1464b15b35ae6479f53..3b292128b046d64a0709135bedc0fb3872876a38 100644 (file)
@@ -32,7 +32,6 @@
 extern void  wxAssociateWinWithHandle( HWND         hWnd
                                       ,wxWindowOS2* pWin
                                      );
-static WXFARPROC fnWndProcSpinCtrl = (WXFARPROC)NULL;
 
 IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)
 
@@ -102,24 +101,6 @@ bool wxSpinButton::Create(
     if (m_windowStyle & wxCLIP_SIBLINGS )
         lSstyle |= WS_CLIPSIBLINGS;
 
-    //
-    // If the parent is a scrolled window the controls must
-    // have this style or they will overlap the scrollbars
-    //
-    if (pParent)
-        if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
-            pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
-            lSstyle |= WS_CLIPSIBLINGS;
-
-    SPBCDATA                        vCtrlData;
-
-    vCtrlData.cbSize = sizeof(SPBCDATA);
-    vCtrlData.ulTextLimit = 10L;
-    vCtrlData.lLowerLimit = 0L;
-    vCtrlData.lUpperLimit = 100L;
-    vCtrlData.idMasterSpb = vId;
-    vCtrlData.pHWXCtlData = NULL;
-
     m_hWnd = (WXHWND)::WinCreateWindow( GetWinHwnd(pParent)
                                        ,WC_SPINBUTTON
                                        ,(PSZ)NULL
@@ -128,20 +109,26 @@ bool wxSpinButton::Create(
                                        ,GetWinHwnd(pParent)
                                        ,HWND_TOP
                                        ,(HMENU)vId
-                                       ,(PVOID)&vCtrlData
+                                       ,NULL
                                        ,NULL
                                       );
     if (m_hWnd == 0)
     {
         return FALSE;
     }
+    SetRange(m_min, m_max);
     if(pParent)
         pParent->AddChild((wxSpinButton *)this);
 
     ::WinQueryWindowPos(m_hWnd, &vSwp);
     SetXComp(vSwp.x);
     SetYComp(vSwp.y);
-    SetFont(pParent->GetFont());
+    wxFont*                          pTextFont = new wxFont( 10
+                                                            ,wxMODERN
+                                                            ,wxNORMAL
+                                                            ,wxNORMAL
+                                                           );
+    SetFont(*pTextFont);
     //
     // 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
@@ -154,8 +141,14 @@ bool wxSpinButton::Create(
     wxAssociateWinWithHandle( m_hWnd
                              ,(wxWindowOS2*)this
                             );
+#if 0
+    // FIXME:
+    // Apparently, this does not work, as it crashes in setvalue/setrange calls
+    // What's it supposed to do anyway?
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
+#endif
+    delete pTextFont;
     return TRUE;
 } // end of wxSpinButton::Create
 
@@ -170,10 +163,11 @@ wxSpinButton::~wxSpinButton()
 wxSize wxSpinButton::DoGetBestSize() const
 {
     //
-    // OS/2 PM does not really have system metrics so we'll just set our best guess
+    // 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.
     //
-    return (wxSize(10,20));
+    return (wxSize(24,20));
 } // end of wxSpinButton::DoGetBestSize
 
 // ----------------------------------------------------------------------------
@@ -182,7 +176,6 @@ wxSize wxSpinButton::DoGetBestSize() const
 
 int wxSpinButton::GetValue() const
 {
-    int                             nVal = 0;
     long                            lVal = 0L;
     char                            zVal[10];