]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/spinbutt.cpp
patch applied with thanks, fixes #13865
[wxWidgets.git] / src / motif / spinbutt.cpp
index 5276663d1e0cbc42057d2178cbd3779dcdf4c6ef..44c4baf6f035338d8b3d264f7bd8ac47d57ca795 100644 (file)
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
-#include "wx/defs.h"
-
 #if wxUSE_SPINBTN
 
 #include "wx/spinbutt.h"
 #if wxUSE_SPINBTN
 
 #include "wx/spinbutt.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/timer.h"
+#endif
+
 #include "wx/spinctrl.h"
 #include "wx/spinctrl.h"
-#include "wx/timer.h"
 
 #ifdef __VMS__
 #pragma message disable nosimpint
 
 #ifdef __VMS__
 #pragma message disable nosimpint
@@ -91,7 +93,7 @@ public:
         Create( parent, id, d, pos, size );
     }
 
         Create( parent, id, d, pos, size );
     }
 
-    ~wxArrowButton()
+    virtual ~wxArrowButton()
         { delete m_timer; }
 
     bool Create( wxSpinButton* parent, wxWindowID id, ArrowDirection d,
         { delete m_timer; }
 
     bool Create( wxSpinButton* parent, wxWindowID id, ArrowDirection d,
@@ -178,8 +180,7 @@ void wxArrowButton::StopTimerCallback( Widget w, XtPointer clientData,
         return;
 
     wxArrowButton* btn = (wxArrowButton*)clientData;
         return;
 
     wxArrowButton* btn = (wxArrowButton*)clientData;
-    delete btn->m_timer;
-    btn->m_timer = 0;
+    wxDELETE(btn->m_timer);
 }
 
 bool wxArrowButton::Create( wxSpinButton* parent,
 }
 
 bool wxArrowButton::Create( wxSpinButton* parent,
@@ -187,6 +188,8 @@ bool wxArrowButton::Create( wxSpinButton* parent,
                             ArrowDirection d,
                             const wxPoint& pos, const wxSize& size )
 {
                             ArrowDirection d,
                             const wxPoint& pos, const wxSize& size )
 {
+    wxCHECK_MSG( parent, false, wxT("must have a valid parent") );
+
     int arrow_dir = XmARROW_UP;
 
     switch( d )
     int arrow_dir = XmARROW_UP;
 
     switch( d )
@@ -205,7 +208,8 @@ bool wxArrowButton::Create( wxSpinButton* parent,
         break;
     }
 
         break;
     }
 
-    if( parent ) parent->AddChild( this );
+    parent->AddChild( this );
+    PreCreation();
 
     Widget parentWidget = (Widget) parent->GetClientWidget();
     m_mainWidget = (WXWidget) XtVaCreateManagedWidget( "XmArrowButton",
 
     Widget parentWidget = (Widget) parent->GetClientWidget();
     m_mainWidget = (WXWidget) XtVaCreateManagedWidget( "XmArrowButton",
@@ -226,11 +230,10 @@ bool wxArrowButton::Create( wxSpinButton* parent,
                    XmNactivateCallback, (XtCallbackProc) StopTimerCallback,
                    (XtPointer) this );
 
                    XmNactivateCallback, (XtCallbackProc) StopTimerCallback,
                    (XtPointer) this );
 
+    PostCreation();
     AttachWidget( parent, m_mainWidget, (WXWidget) NULL,
                   pos.x, pos.y, size.x, size.y );
 
     AttachWidget( parent, m_mainWidget, (WXWidget) NULL,
                   pos.x, pos.y, size.x, size.y );
 
-    SetForegroundColour( parent->GetBackgroundColour() );
-
     return true;
 }
 
     return true;
 }
 
@@ -238,9 +241,6 @@ bool wxArrowButton::Create( wxSpinButton* parent,
 // wxSpinButton
 // ----------------------------------------------------------------------------
 
 // wxSpinButton
 // ----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
-IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)
-
 static void CalcSizes( const wxPoint& pt, const wxSize& sz,
                        wxPoint& pt1, wxSize& sz1,
                        wxPoint& pt2, wxSize& sz2,
 static void CalcSizes( const wxPoint& pt, const wxSize& sz,
                        wxPoint& pt1, wxSize& sz1,
                        wxPoint& pt2, wxSize& sz2,
@@ -348,7 +348,7 @@ void wxSpinButton::Increment( int delta )
     event.SetPosition( npos );
     event.SetEventObject( this );
 
     event.SetPosition( npos );
     event.SetEventObject( this );
 
-    GetEventHandler()->ProcessEvent( event );
+    HandleWindowEvent( event );
 
     if( event.IsAllowed() )
     {
 
     if( event.IsAllowed() )
     {
@@ -356,7 +356,7 @@ void wxSpinButton::Increment( int delta )
         event.SetEventType( wxEVT_SCROLL_THUMBTRACK );
         event.SetPosition( m_pos );
 
         event.SetEventType( wxEVT_SCROLL_THUMBTRACK );
         event.SetPosition( m_pos );
 
-        GetEventHandler()->ProcessEvent( event );
+        HandleWindowEvent( event );
     }
 }
 
     }
 }