]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/tbargtk.cpp
fixed MSLU check
[wxWidgets.git] / src / gtk / tbargtk.cpp
index b78ce9d916df3e24127b852c73763c2b784f4536..ffd6c88c6006e5264d4bd48c9c856c242147e286 100644 (file)
@@ -26,9 +26,8 @@
 
 #include "wx/frame.h"
 
 
 #include "wx/frame.h"
 
-#include "glib.h"
-#include "gdk/gdk.h"
-#include "gtk/gtk.h"
+#include <glib.h>
+#include "wx/gtk/private.h"
 
 extern GdkFont *GtkGetDefaultGuiFont();
 
 
 extern GdkFont *GtkGetDefaultGuiFont();
 
@@ -99,11 +98,8 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget),
         wxapp_install_idle_handler();
 
     wxToolBar *tbar = (wxToolBar *)tool->GetToolBar();
         wxapp_install_idle_handler();
 
     wxToolBar *tbar = (wxToolBar *)tool->GetToolBar();
-    if ( tbar->m_blockNextEvent )
-    { 
-        tbar->m_blockNextEvent = FALSE;
-        return;
-    }
+    
+    if (tbar->m_blockEvent) return;
 
     if (g_blockEventsOnDrag) return;
     if (!tool->IsEnabled()) return;
 
     if (g_blockEventsOnDrag) return;
     if (!tool->IsEnabled()) return;
@@ -128,12 +124,12 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget),
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
-// "enter_notify_event"
+// "enter_notify_event" / "leave_notify_event"
 //-----------------------------------------------------------------------------
 
 //-----------------------------------------------------------------------------
 
-static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), 
-                                        GdkEventCrossing *WXUNUSED(gdk_event),
-                                        wxToolBarTool *tool )
+static gint gtk_toolbar_tool_callback( GtkWidget *WXUNUSED(widget), 
+                                       GdkEventCrossing *gdk_event,
+                                       wxToolBarTool *tool )
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
@@ -142,7 +138,10 @@ static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget),
     wxToolBar *tb = (wxToolBar *)tool->GetToolBar();
     
     // emit the event
     wxToolBar *tb = (wxToolBar *)tool->GetToolBar();
     
     // emit the event
-    tb->OnMouseEnter( tool->GetId() );
+    if( gdk_event->type == GDK_ENTER_NOTIFY )
+        tb->OnMouseEnter( tool->GetId() );
+    else
+        tb->OnMouseEnter( -1 );
   
     return FALSE;
 }
   
     return FALSE;
 }
@@ -193,7 +192,7 @@ void wxToolBar::Init()
     m_fg =
     m_bg = (GdkColor *)NULL;
     m_toolbar = (GtkToolbar *)NULL;
     m_fg =
     m_bg = (GdkColor *)NULL;
     m_toolbar = (GtkToolbar *)NULL;
-    m_blockNextEvent = FALSE;
+    m_blockEvent = FALSE;
 }
 
 wxToolBar::~wxToolBar()
 }
 
 wxToolBar::~wxToolBar()
@@ -222,7 +221,14 @@ bool wxToolBar::Create( wxWindow *parent,
 
     GtkOrientation orient = style & wxTB_VERTICAL ? GTK_ORIENTATION_VERTICAL
                                                   : GTK_ORIENTATION_HORIZONTAL;
 
     GtkOrientation orient = style & wxTB_VERTICAL ? GTK_ORIENTATION_VERTICAL
                                                   : GTK_ORIENTATION_HORIZONTAL;
+
+#ifdef __WXGTK20__
+    m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
+    gtk_toolbar_set_orientation(m_toolbar, orient);
+    gtk_toolbar_set_style(m_toolbar, GTK_TOOLBAR_ICONS);
+#else
     m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( orient, GTK_TOOLBAR_ICONS ) );
     m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( orient, GTK_TOOLBAR_ICONS ) );
+#endif
 
     SetToolSeparation(7);
 
 
     SetToolSeparation(7);
 
@@ -242,8 +248,11 @@ bool wxToolBar::Create( wxWindow *parent,
 
     gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE );
 
 
     gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE );
 
+    // FIXME: there is no such function for toolbars in 2.0
+#ifndef __WXGTK20__
     if (style & wxTB_FLAT)
         gtk_toolbar_set_button_relief( GTK_TOOLBAR(m_toolbar), GTK_RELIEF_NONE );
     if (style & wxTB_FLAT)
         gtk_toolbar_set_button_relief( GTK_TOOLBAR(m_toolbar), GTK_RELIEF_NONE );
+#endif
 
 
     m_fg = new GdkColor;
 
 
     m_fg = new GdkColor;
@@ -270,8 +279,9 @@ bool wxToolBar::Create( wxWindow *parent,
                     GTK_TOOLBAR(m_toolbar)->tooltips->tip_window ) );
 
     g_style->bg[GTK_STATE_NORMAL] = *m_bg;
                     GTK_TOOLBAR(m_toolbar)->tooltips->tip_window ) );
 
     g_style->bg[GTK_STATE_NORMAL] = *m_bg;
-    gdk_font_unref( g_style->font );
-       g_style->font = gdk_font_ref( GtkGetDefaultGuiFont() );
+
+    SET_STYLE_FONT(g_style, GtkGetDefaultGuiFont());
+
     gtk_widget_set_style( GTK_TOOLBAR(m_toolbar)->tooltips->tip_window, g_style );
 
     m_parent->DoAddChild( this );
     gtk_widget_set_style( GTK_TOOLBAR(m_toolbar)->tooltips->tip_window, g_style );
 
     m_parent->DoAddChild( this );
@@ -349,7 +359,11 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase)
 
             gtk_signal_connect( GTK_OBJECT(tool->m_item),
                                 "enter_notify_event", 
 
             gtk_signal_connect( GTK_OBJECT(tool->m_item),
                                 "enter_notify_event", 
-                                GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback),
+                                GTK_SIGNAL_FUNC(gtk_toolbar_tool_callback),
+                                (gpointer)tool );
+            gtk_signal_connect( GTK_OBJECT(tool->m_item),
+                                "leave_notify_event", 
+                                GTK_SIGNAL_FUNC(gtk_toolbar_tool_callback),
                                 (gpointer)tool );
             break;
 
                                 (gpointer)tool );
             break;
 
@@ -433,9 +447,11 @@ void wxToolBar::DoToggleTool( wxToolBarToolBase *toolBase, bool toggle )
             gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask );
         }
 
             gtk_pixmap_set( pixmap, bitmap.GetPixmap(), mask );
         }
 
-        m_blockNextEvent = TRUE;  // we cannot use gtk_signal_disconnect here
+        m_blockEvent = TRUE;
 
         gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(item), toggle );
 
         gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(item), toggle );
+        
+        m_blockEvent = FALSE;
     }
 }
 
     }
 }
 
@@ -472,7 +488,11 @@ void wxToolBar::SetMargins( int x, int y )
 
 void wxToolBar::SetToolSeparation( int separation )
 {
 
 void wxToolBar::SetToolSeparation( int separation )
 {
+    // FIXME: this function disappeared
+#ifndef __WXGTK20__
     gtk_toolbar_set_space_size( m_toolbar, separation );
     gtk_toolbar_set_space_size( m_toolbar, separation );
+#endif
+
     m_toolSeparation = separation;
 }
 
     m_toolSeparation = separation;
 }