]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/toolbar.cpp
fix for rather mysterious problem when deleting the list ctrl
[wxWidgets.git] / src / motif / toolbar.cpp
index 70227436b570beae15f18b2d954c13c536b608ef..b38f1c392981d3fa859a3da2cc5b1a2519ec16e7 100644 (file)
     #pragma implementation "toolbar.h"
 #endif
 
+#ifdef __VMS
+#define XtDisplay XTDISPLAY
+#endif
+
 #include "wx/wx.h"
 #include "wx/app.h"
 #include "wx/timer.h"
@@ -47,7 +51,7 @@
 // ----------------------------------------------------------------------------
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase)
 #endif
 
 // ----------------------------------------------------------------------------
@@ -172,6 +176,12 @@ void wxToolBar::Init()
     m_maxHeight = -1;
     m_defaultWidth = 24;
     m_defaultHeight = 22;
+    m_toolPacking = 2;
+    m_toolSeparation = 8;
+    m_xMargin = 2;
+    m_yMargin = 2;
+    m_maxRows = 100;
+    m_maxCols = 100;
 }
 
 bool wxToolBar::Create(wxWindow *parent,
@@ -245,6 +255,7 @@ bool wxToolBar::Realize()
     // Separator spacing
     const int separatorSize = GetToolSeparation(); // 8;
     wxSize margins = GetToolMargins();
+    int packing = GetToolPacking();
     int marginX = margins.x;
     int marginY = margins.y;
 
@@ -267,9 +278,15 @@ bool wxToolBar::Realize()
         switch ( tool->GetStyle() )
         {
             case wxTOOL_STYLE_CONTROL:
-                wxFAIL_MSG( _T("not implemented") );
-                break;
+            {
+                wxControl* control = tool->GetControl();
+                wxSize sz = control->GetSize();
+                wxPoint pos = control->GetPosition();
+                control->Move(currentX, pos.y);
+                currentX += sz.x + packing;
 
+                break;
+            }
             case wxTOOL_STYLE_SEPARATOR:
                 currentX += separatorSize;
                 break;
@@ -282,7 +299,12 @@ bool wxToolBar::Realize()
                     button = XtVaCreateWidget("toggleButton",
                             xmToggleButtonWidgetClass, (Widget) m_mainWidget,
                             XmNx, currentX, XmNy, currentY,
-                            //                   XmNpushButtonEnabled, True,
+                            XmNindicatorOn, False,
+                            XmNshadowThickness, 2,
+                            XmNborderWidth, 0,
+                            XmNspacing, 0,
+                            XmNmarginWidth, 0,
+                            XmNmarginHeight, 0,
                             XmNmultiClick, XmMULTICLICK_KEEP,
                             XmNlabelType, XmPIXMAP,
                             NULL);
@@ -325,9 +347,9 @@ bool wxToolBar::Realize()
                     wxColour col;
                     col.SetPixel(backgroundPixel);
 
-                    wxBitmap newBitmap = wxCreateMaskedBitmap(bmp, col);
+                    bmp = wxCreateMaskedBitmap(bmp, col);
 
-                    tool->SetBitmap1(newBitmap);
+                    tool->SetBitmap1(bmp);
                 }
 
                 // Create a selected/toggled bitmap. If there isn't a 2nd
@@ -388,12 +410,6 @@ bool wxToolBar::Realize()
                     tool->SetPixmap(pixmap2);
 
                     XtVaSetValues (button,
-                            XmNindicatorOn, False,
-                            XmNshadowThickness, 2,
-                            //                    XmNborderWidth, 0,
-                            //                    XmNspacing, 0,
-                            XmNmarginWidth, 0,
-                            XmNmarginHeight, 0,
                             XmNfillOnSelect, True,
                             XmNlabelPixmap, pixmap,
                             XmNselectPixmap, pixmap2,
@@ -436,7 +452,7 @@ bool wxToolBar::Realize()
                                   XmNwidth, &width,
                                   XmNheight, & height,
                                   NULL);
-                    currentX += width + marginX;
+                    currentX += width + packing;
                     buttonHeight = wxMax(buttonHeight, height);
                 }