]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/tbargtk.cpp
wxMimeTypesManagerImpl::GetFileTypeFromMimeType() implemented
[wxWidgets.git] / src / gtk1 / tbargtk.cpp
index 671fa18e002f48c83467cc734492e71e6eb4f924..df1b967d1d1ee2f90401fd67cf8339abf80a77a4 100644 (file)
 
 #include "wx/toolbar.h"
 
+#include "glib.h"
+#include "gdk/gdk.h"
+#include "gtk/gtk.h"
+
 //-----------------------------------------------------------------------------
 // data
 //-----------------------------------------------------------------------------
@@ -99,6 +103,8 @@ wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id,
 
 wxToolBar::~wxToolBar()
 {
+    delete m_fg;
+    delete m_bg;
 }
 
 bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
@@ -121,18 +127,20 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
     m_widget = GTK_WIDGET(m_toolbar);                                      
                                            
     gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE );
+
+    m_fg = new GdkColor;
+    m_fg->red = 0;
+    m_fg->green = 0;
+    m_fg->blue = 0;
+    gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_fg );
   
-    m_fg.red = 0;
-    m_fg.green = 0;
-    m_fg.blue = 0;
-    gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), &m_fg );
-  
-    m_bg.red = 65535;
-    m_bg.green = 65535;
-    m_bg.blue = 50000;
-    gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), &m_bg );
+    m_bg = new GdkColor;
+    m_bg->red = 65535;
+    m_bg->green = 65535;
+    m_bg->blue = 50000;
+    gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_bg );
   
-    gtk_tooltips_set_colors( GTK_TOOLBAR(m_toolbar)->tooltips, &m_bg, &m_fg );
+    gtk_tooltips_set_colors( GTK_TOOLBAR(m_toolbar)->tooltips, m_bg, m_fg );
 
     m_xMargin = 0;
     m_yMargin = 0;
@@ -188,10 +196,6 @@ wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap,
     wxCHECK_MSG( bitmap.Ok(), (wxToolBarTool *)NULL,
                  "invalid bitmap for wxToolBar icon" );
 
-    wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
-                                             toggle, clientData,
-                                             helpString1, helpString2 );
-
     wxCHECK_MSG( bitmap.GetBitmap() == NULL, (wxToolBarTool *)NULL,
                  "wxToolBar doesn't support GdkBitmap" );
 
@@ -210,6 +214,11 @@ wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap,
   
     gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 );
 
+    wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
+                                             toggle, clientData,
+                                             helpString1, helpString2,
+                                            tool_pixmap );
+
     GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON
                                        : GTK_TOOLBAR_CHILD_BUTTON;
 
@@ -280,8 +289,12 @@ void wxToolBar::EnableTool(int toolIndex, bool enable)
     {
         wxToolBarTool *tool = (wxToolBarTool*)node->Data();
         if (tool->m_index == toolIndex)
-        { 
+        {
             tool->m_enabled = enable;
+           
+           if (tool->m_item)
+               gtk_widget_set_sensitive( tool->m_item, enable );
+               
             return;
         }
         node = node->Next();