]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/tbargtk.cpp
more things are done by configure: checks for bool, whether overloading based
[wxWidgets.git] / src / gtk / tbargtk.cpp
index df1b967d1d1ee2f90401fd67cf8339abf80a77a4..78e4e339ac8bffd99ebcf34d6f5a5c62221049de 100644 (file)
 
 extern bool   g_blockEventsOnDrag;
 
-//-----------------------------------------------------------------------------
-// wxToolBarTool
-//-----------------------------------------------------------------------------
-
-IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject)
-
-wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex,
-                              const wxBitmap& bitmap1, const  wxBitmap& bitmap2,
-                              bool toggle, 
-                              wxObject *clientData,
-                              const wxString& shortHelpString,
-                              const wxString& longHelpString,
-                              GtkWidget *item  )
-{
-    m_owner = owner;
-    m_index = theIndex;
-    m_bitmap1 = bitmap1;
-    m_bitmap2 = bitmap2;
-    m_isToggle = toggle;
-    m_enabled = TRUE;
-    m_toggleState = FALSE;
-    m_shortHelpString = shortHelpString;
-    m_longHelpString = longHelpString;
-    m_isMenuCommand = TRUE;
-    m_clientData = clientData;
-    m_deleteSecondBitmap = FALSE;
-    m_item = item;
-}
-
-wxToolBarTool::~wxToolBarTool()
-{
-}
-
 //-----------------------------------------------------------------------------
 // "clicked" (internal from gtk_toolbar)
 //-----------------------------------------------------------------------------
@@ -78,8 +45,37 @@ static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget),
   GdkEventCrossing *WXUNUSED(gdk_event), wxToolBarTool *tool )
 {
     if (g_blockEventsOnDrag) return TRUE;
+    
+    /* we grey-out the tip text of disabled tool */
+    
+    wxToolBar *tb = tool->m_owner;
+    
+    if (tool->m_enabled)
+    {
+        if (tb->m_fg->red != 0)
+       {
+            tb->m_fg->red = 0;
+            tb->m_fg->green = 0;
+            tb->m_fg->blue = 0;
+            gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(tb->m_toolbar) ), tb->m_fg );
+            gtk_tooltips_set_colors( GTK_TOOLBAR(tb->m_toolbar)->tooltips, tb->m_bg, tb->m_fg );
+       }
+    }
+    else
+    {
+        if (tb->m_fg->red == 0)
+       {
+            tb->m_fg->red = 33000;
+            tb->m_fg->green = 33000;
+            tb->m_fg->blue = 33000;
+            gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(tb->m_toolbar) ), tb->m_fg );
+            gtk_tooltips_set_colors( GTK_TOOLBAR(tb->m_toolbar)->tooltips, tb->m_bg, tb->m_fg );
+       }
+    }
+    
+    /* emit the event */
   
-    tool->m_owner->OnMouseEnter( tool->m_index );
+    tb->OnMouseEnter( tool->m_index );
   
     return FALSE;
 }
@@ -123,8 +119,17 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
     m_separation = 5;
     gtk_toolbar_set_space_size( m_toolbar, m_separation );
     m_hasToolAlready = FALSE;
-                                             
-    m_widget = GTK_WIDGET(m_toolbar);                                      
+
+    if (style & wxTB_DOCKABLE)
+    {
+        m_widget = gtk_handle_box_new();
+       gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) );
+       gtk_widget_show( GTK_WIDGET(m_toolbar) );
+    }
+    else
+    {     
+        m_widget = GTK_WIDGET(m_toolbar);
+    }
                                            
     gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE );
 
@@ -292,8 +297,12 @@ void wxToolBar::EnableTool(int toolIndex, bool enable)
         {
             tool->m_enabled = enable;
            
+/*   we don't disable the tools for now as the bitmaps don't get
+     greyed anyway and this also disables tooltips
+
            if (tool->m_item)
                gtk_widget_set_sensitive( tool->m_item, enable );
+*/
                
             return;
         }