#include "wx/os2/private.h"
 
 // ============================================================================
 #include "wx/os2/private.h"
 
 // ============================================================================
-    m_backgroundColour = pParent->GetBackgroundColour();
-    m_foregroundColour = pParent->GetForegroundColour();
+    if (pParent)
+    {
+        m_backgroundColour = pParent->GetBackgroundColour();
+        m_foregroundColour = pParent->GetForegroundColour();
+    }
-    long                            lSstyle = 0L;
-
-    lSstyle = WS_VISIBLE      |
-              WS_TABSTOP      |
-              SPBS_MASTER     | // We use only single field spin buttons
-              SPBS_NUMERICONLY; // We default to numeric data
+    long lSstyle = WS_VISIBLE      |
+                   WS_TABSTOP      |
+                   SPBS_MASTER     | // We use only single field spin buttons
+                   SPBS_NUMERICONLY; // We default to numeric data
     ::WinQueryWindowPos(m_hWnd, &vSwp);
     SetXComp(vSwp.x);
     SetYComp(vSwp.y-5); // compensate for the associated TextControl border
     ::WinQueryWindowPos(m_hWnd, &vSwp);
     SetXComp(vSwp.x);
     SetYComp(vSwp.y-5); // compensate for the associated TextControl border
     //
     // For OS/2 we want to hide the text portion so we can substitute an
     // independent text ctrl in its place.
     //
     // For OS/2 we want to hide the text portion so we can substitute an
     // independent text ctrl in its place.
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
 #endif
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
 #endif
-    // OS/2 PM does not really have system metrics so we'll just set  it to
-    // 26x20 which is the size of the buttons and the borders.
-    // Also we have no horizontal spin buttons.
+    // OS/2 PM does not really have system metrics so we'll just set it to
+    // a square based on its height.
 } // end of wxSpinButton::DoGetBestSize
 
 // ----------------------------------------------------------------------------
 } // end of wxSpinButton::DoGetBestSize
 
 // ----------------------------------------------------------------------------
 } // end of wxSpinButton::OS2OnScroll
 
 bool wxSpinButton::OS2Command( WXUINT WXUNUSED(uCmd),
 } // end of wxSpinButton::OS2OnScroll
 
 bool wxSpinButton::OS2Command( WXUINT WXUNUSED(uCmd),