]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/tbargtk.cpp
more fixes for paused thread termination
[wxWidgets.git] / src / gtk / tbargtk.cpp
index 0c7e7f13208846982f4c56f906520c43890f8cad..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 );
 
@@ -196,10 +201,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" );
 
@@ -218,6 +219,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;
 
@@ -288,8 +294,16 @@ void wxToolBar::EnableTool(int toolIndex, bool enable)
     {
         wxToolBarTool *tool = (wxToolBarTool*)node->Data();
         if (tool->m_index == toolIndex)
-        { 
+        {
             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;
         }
         node = node->Next();