]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/spinbutt.cpp
added wxUSE_MDI (but forgot to commit before)
[wxWidgets.git] / src / motif / spinbutt.cpp
index b0f2e76d94121d04dd28b03fa63b260b6c6f2881..ca3a6e2af18c5a8c9a88908e8711331dc89b4d2d 100644 (file)
@@ -9,10 +9,13 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "spinbutt.h"
 #endif
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
 #include "wx/spinbutt.h"
 #include "wx/spinctrl.h"
 #include "wx/timer.h"
@@ -183,7 +186,7 @@ bool wxArrowButton::Create( wxSpinButton* parent, wxWindowID id,
                             ArrowDirection d,
                             const wxPoint& pos, const wxSize& size )
 {
-    int arrow_dir;
+    int arrow_dir = XmARROW_UP;
 
     switch( d )
     {
@@ -208,6 +211,8 @@ bool wxArrowButton::Create( wxSpinButton* parent, wxWindowID id,
         xmArrowButtonWidgetClass,
         parentWidget,
         XmNarrowDirection, arrow_dir,
+        XmNborderWidth, 0,
+        XmNshadowThickness, 0,
         NULL );
 
     XtAddCallback( (Widget) m_mainWidget,
@@ -223,6 +228,8 @@ bool wxArrowButton::Create( wxSpinButton* parent, wxWindowID id,
     AttachWidget( parent, m_mainWidget, (WXWidget) NULL,
                   pos.x, pos.y, size.x, size.y );
 
+    SetForegroundColour( parent->GetBackgroundColour() );
+
     return TRUE;
 }
 
@@ -270,18 +277,16 @@ bool wxSpinButton::Create( wxWindow *parent, wxWindowID id,
 
     SetName(name);
 
-    InitBase();
-
     m_windowId = ( id == -1 ) ? NewControlId() : id;
 
     bool isVert = IsVertical();
     wxPoint pt1, pt2;
     wxSize sz1, sz2;
     CalcSizes( wxPoint(0,0), newSize, pt1, sz1, pt2, sz2, isVert );
-    m_up = new wxArrowButton( this, -1, isVert ? wxARROW_UP : wxARROW_LEFT,
+    m_up = new wxArrowButton( this, -1, isVert ? wxARROW_UP : wxARROW_RIGHT,
                               pt1, sz1, 1 );
     m_down = new wxArrowButton( this, -1,
-                                isVert ? wxARROW_DOWN : wxARROW_RIGHT,
+                                isVert ? wxARROW_DOWN : wxARROW_LEFT,
                                 pt2, sz2, -1 );
 
     return TRUE;
@@ -307,14 +312,16 @@ void wxSpinButton::DoMoveWindow(int x, int y, int width, int height)
 void wxSpinButton::DoSetSize(int x, int y, int width, int height,
                              int sizeFlags)
 {
-    if( sizeFlags & wxSIZE_AUTO_WIDTH && width == -1 )
-        width = 30;
-    if( sizeFlags & wxSIZE_AUTO_HEIGHT && height == -1 )
-        height = 30;
+#ifdef __VMS__
+#pragma message disable codcauunr
+#endif
     if( sizeFlags & wxSIZE_USE_EXISTING && width == -1 )
         width = GetSize().x;
     if( sizeFlags & wxSIZE_USE_EXISTING && height == -1 )
         height = GetSize().y;
+#ifdef __VMS__
+#pragma message enable codcauunr
+#endif
 
     wxControl::DoSetSize(x, y, width, height, 0);
 }
@@ -326,8 +333,20 @@ void wxSpinButton::Increment( int delta )
 
     int npos = m_pos + delta;
 
-    if( npos < m_min ) npos = m_min;
-    if( npos > m_max ) npos = m_max;
+    if( npos < m_min )
+    {
+        if( GetWindowStyle() & wxSP_WRAP )
+            npos = m_max;
+        else
+            npos = m_min;
+    }
+    if( npos > m_max )
+    {
+        if( GetWindowStyle() & wxSP_WRAP )
+            npos = m_min;
+        else
+            npos = m_max;
+    }
     if( npos == m_pos ) return;
 
     wxSpinEvent event( delta > 0 ? wxEVT_SCROLL_LINEUP : wxEVT_SCROLL_LINEDOWN,
@@ -349,7 +368,7 @@ void wxSpinButton::Increment( int delta )
 
 wxSize wxSpinButton::DoGetBestSize() const
 {
-    return IsVertical() ? wxSize( 24, 34 ) : wxSize( 34, 24 );
+    return IsVertical() ? wxSize( 20, 30 ) : wxSize( 30, 20 );
 }
 
 // Attributes