]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/tbarbase.cpp
Printing update for Pango (GTK2 and X11-Unicode).
[wxWidgets.git] / src / common / tbarbase.cpp
index d99e21426337068a1b8fce7317ebe99380d7602a..16589483c649c365cd3b5d6a6fbe861012be0520 100644 (file)
@@ -164,13 +164,32 @@ wxToolBarToolBase *wxToolBarBase::InsertTool(size_t pos,
     wxToolBarToolBase *tool = CreateTool(id, label, bitmap, bmpDisabled, kind,
                                          clientData, shortHelp, longHelp);
 
-    if ( !tool || !DoInsertTool(pos, tool) )
+    if ( !InsertTool(pos, tool) )
     {
         delete tool;
 
         return NULL;
     }
 
+    return tool;
+}
+
+wxToolBarToolBase *wxToolBarBase::AddTool(wxToolBarToolBase *tool)
+{
+    return InsertTool(GetToolsCount(), tool);
+}
+
+wxToolBarToolBase *
+wxToolBarBase::InsertTool(size_t pos, wxToolBarToolBase *tool)
+{
+    wxCHECK_MSG( pos <= GetToolsCount(), (wxToolBarToolBase *)NULL,
+                 _T("invalid position in wxToolBar::InsertTool()") );
+
+    if ( !tool || !DoInsertTool(pos, tool) )
+    {
+        return NULL;
+    }
+
     m_tools.Insert(pos, tool);
 
     return tool;
@@ -194,15 +213,13 @@ wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control)
 
     wxToolBarToolBase *tool = CreateTool(control);
 
-    if ( !tool || !DoInsertTool(pos, tool) )
+    if ( !InsertTool(pos, tool) )
     {
         delete tool;
 
         return NULL;
     }
 
-    m_tools.Insert(pos, tool);
-
     return tool;
 }
 
@@ -213,7 +230,7 @@ wxControl *wxToolBarBase::FindControl( int id )
           node = node->GetNext() )
     {
         wxControl *control = node->GetData()->GetControl();
-        
+
         if (control)
         {
             if (control->GetId() == id)
@@ -554,11 +571,15 @@ void wxToolBarBase::DoToolbarUpdates()
     while (parent->GetParent())
         parent = parent->GetParent();
 
-#ifdef __WXMSW__
-    wxWindow* focusWin = wxFindFocusDescendant(parent);
-#else
+// This kind of #ifdef is a good way to annoy people. It breaks
+// apps, but only on one platform and due to a hack in officially
+// platform independent code. It took me hours to fix this. RR.
+//
+// #ifdef __WXMSW__
+//    wxWindow* focusWin = wxFindFocusDescendant(parent);
+// #else
     wxWindow* focusWin = (wxWindow*) NULL;
-#endif
+// #endif
 
     wxEvtHandler* evtHandler = focusWin ? focusWin->GetEventHandler() : GetEventHandler() ;