From 314055fa8d202ca0628a197877bfa299d3e7540d Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 18 Aug 1998 17:41:55 +0000 Subject: [PATCH 1/1] Added TOOL_ENTER command. Now wxGTK and wxMSW misbehave equally on that matter. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/tbargtk.cpp | 24 ++++++++++++++++++++++-- src/gtk1/tbargtk.cpp | 24 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 1b45b695c4..a35bbe7235 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -16,6 +16,12 @@ #include "wx/toolbar.h" #include +//----------------------------------------------------------------------------- +// data +//----------------------------------------------------------------------------- + +extern bool g_blockEventsOnDrag; + //----------------------------------------------------------------------------- // wxToolBarTool //----------------------------------------------------------------------------- @@ -53,6 +59,7 @@ wxToolBarTool::~wxToolBarTool() static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) { + if (g_blockEventsOnDrag) return; if (!tool->m_enabled) return; if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; @@ -60,6 +67,16 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *to tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); } +static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), + GdkEventCrossing *WXUNUSED(gdk_event), wxToolBarTool *tool ) +{ + if (g_blockEventsOnDrag) return TRUE; + + tool->m_owner->OnMouseEnter( tool->m_index ); + + return TRUE; +} + //----------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) @@ -130,10 +147,10 @@ void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y void wxToolBar::OnMouseEnter( int toolIndex ) { - wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, toolIndex ); + wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, GetId() ); event.SetEventObject(this); event.SetInt( toolIndex ); - + GetEventHandler()->ProcessEvent(event); } @@ -171,6 +188,9 @@ wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, tool->m_item = gtk_toolbar_append_element( m_toolbar, ctype, NULL, NULL, helpString1, "", tool_pixmap, (GtkSignalFunc)gtk_toolbar_callback, (gpointer)tool ); + gtk_signal_connect( GTK_OBJECT(tool->m_item), "enter_notify_event", + GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback), (gpointer)tool ); + m_tools.Append( tool ); return tool; diff --git a/src/gtk1/tbargtk.cpp b/src/gtk1/tbargtk.cpp index 1b45b695c4..a35bbe7235 100644 --- a/src/gtk1/tbargtk.cpp +++ b/src/gtk1/tbargtk.cpp @@ -16,6 +16,12 @@ #include "wx/toolbar.h" #include +//----------------------------------------------------------------------------- +// data +//----------------------------------------------------------------------------- + +extern bool g_blockEventsOnDrag; + //----------------------------------------------------------------------------- // wxToolBarTool //----------------------------------------------------------------------------- @@ -53,6 +59,7 @@ wxToolBarTool::~wxToolBarTool() static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) { + if (g_blockEventsOnDrag) return; if (!tool->m_enabled) return; if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; @@ -60,6 +67,16 @@ static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *to tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); } +static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), + GdkEventCrossing *WXUNUSED(gdk_event), wxToolBarTool *tool ) +{ + if (g_blockEventsOnDrag) return TRUE; + + tool->m_owner->OnMouseEnter( tool->m_index ); + + return TRUE; +} + //----------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) @@ -130,10 +147,10 @@ void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y void wxToolBar::OnMouseEnter( int toolIndex ) { - wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, toolIndex ); + wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, GetId() ); event.SetEventObject(this); event.SetInt( toolIndex ); - + GetEventHandler()->ProcessEvent(event); } @@ -171,6 +188,9 @@ wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, tool->m_item = gtk_toolbar_append_element( m_toolbar, ctype, NULL, NULL, helpString1, "", tool_pixmap, (GtkSignalFunc)gtk_toolbar_callback, (gpointer)tool ); + gtk_signal_connect( GTK_OBJECT(tool->m_item), "enter_notify_event", + GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback), (gpointer)tool ); + m_tools.Append( tool ); return tool; -- 2.45.2