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
This commit is contained in:
@@ -16,6 +16,12 @@
|
||||
#include "wx/toolbar.h"
|
||||
#include <wx/intl.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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;
|
||||
|
@@ -16,6 +16,12 @@
|
||||
#include "wx/toolbar.h"
|
||||
#include <wx/intl.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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;
|
||||
|
Reference in New Issue
Block a user