X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4726948f8e61c0e6472b5b249d4b7164f69582bc..bbc3925a8a46e8c80b22277f5571dfb2465aca25:/src/gtk/tbargtk.cpp?ds=sidebyside diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index b78ce9d916..ffd6c88c60 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -26,9 +26,8 @@ #include "wx/frame.h" -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" +#include +#include "wx/gtk/private.h" extern GdkFont *GtkGetDefaultGuiFont(); @@ -99,11 +98,8 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), 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; @@ -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(); @@ -142,7 +138,10 @@ static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), 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; } @@ -193,7 +192,7 @@ void wxToolBar::Init() m_fg = m_bg = (GdkColor *)NULL; m_toolbar = (GtkToolbar *)NULL; - m_blockNextEvent = FALSE; + m_blockEvent = FALSE; } wxToolBar::~wxToolBar() @@ -222,7 +221,14 @@ bool wxToolBar::Create( wxWindow *parent, 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 ) ); +#endif SetToolSeparation(7); @@ -242,8 +248,11 @@ bool wxToolBar::Create( wxWindow *parent, 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 ); +#endif 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; - 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 ); @@ -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_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; @@ -433,9 +447,11 @@ void wxToolBar::DoToggleTool( wxToolBarToolBase *toolBase, bool toggle ) 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 ); + + m_blockEvent = FALSE; } } @@ -472,7 +488,11 @@ void wxToolBar::SetMargins( int x, int y ) void wxToolBar::SetToolSeparation( int separation ) { + // FIXME: this function disappeared +#ifndef __WXGTK20__ gtk_toolbar_set_space_size( m_toolbar, separation ); +#endif + m_toolSeparation = separation; }