changed GTKCallbackCommonPrologue() to return -1 in addition to true and false to allow returning immediately with true return code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40818 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -161,8 +161,10 @@ public:
|
|||||||
virtual GtkWidget* GetConnectWidget();
|
virtual GtkWidget* GetConnectWidget();
|
||||||
void ConnectWidget( GtkWidget *widget );
|
void ConnectWidget( GtkWidget *widget );
|
||||||
|
|
||||||
// Called from several event handlers
|
// Called from several event handlers, if it returns true or false, the
|
||||||
bool GTKCallbackCommonPrologue(struct _GdkEventAny *event) const;
|
// same value should be immediately returned by the handler without doing
|
||||||
|
// anything else. If it returns -1, the handler should continue as usual
|
||||||
|
int GTKCallbackCommonPrologue(struct _GdkEventAny *event) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Override GTKWidgetNeedsMnemonic and return true if your
|
// Override GTKWidgetNeedsMnemonic and return true if your
|
||||||
|
@@ -1410,7 +1410,7 @@ wxWindowGTK *FindWindowForMouseEvent(wxWindowGTK *win, wxCoord& x, wxCoord& y)
|
|||||||
// common event handlers helpers
|
// common event handlers helpers
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool wxWindowGTK::GTKCallbackCommonPrologue(GdkEventAny *event) const
|
int wxWindowGTK::GTKCallbackCommonPrologue(GdkEventAny *event) const
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
@@ -1418,23 +1418,23 @@ bool wxWindowGTK::GTKCallbackCommonPrologue(GdkEventAny *event) const
|
|||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
if (!m_hasVMT)
|
if (!m_hasVMT)
|
||||||
return false;
|
return FALSE;
|
||||||
if (g_blockEventsOnDrag)
|
if (g_blockEventsOnDrag)
|
||||||
return true;
|
return TRUE;
|
||||||
if (g_blockEventsOnScroll)
|
if (g_blockEventsOnScroll)
|
||||||
return true;
|
return TRUE;
|
||||||
|
|
||||||
if (!GTKIsOwnWindow(event->window))
|
if (!GTKIsOwnWindow(event->window))
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
return true;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// overloads for all GDK event types we use here: we need to have this as
|
// overloads for all GDK event types we use here: we need to have this as
|
||||||
// GdkEventXXX can't be implicitly cast to GdkEventAny even if it, in fact,
|
// GdkEventXXX can't be implicitly cast to GdkEventAny even if it, in fact,
|
||||||
// derives from it in the sense that the structs have the same layout
|
// derives from it in the sense that the structs have the same layout
|
||||||
#define wxDEFINE_COMMON_PROLOGUE_OVERLOAD(T) \
|
#define wxDEFINE_COMMON_PROLOGUE_OVERLOAD(T) \
|
||||||
static bool wxGtkCallbackCommonPrologue(T *event, wxWindowGTK *win) \
|
static int wxGtkCallbackCommonPrologue(T *event, wxWindowGTK *win) \
|
||||||
{ \
|
{ \
|
||||||
return win->GTKCallbackCommonPrologue((GdkEventAny *)event); \
|
return win->GTKCallbackCommonPrologue((GdkEventAny *)event); \
|
||||||
}
|
}
|
||||||
@@ -1445,6 +1445,11 @@ wxDEFINE_COMMON_PROLOGUE_OVERLOAD(GdkEventCrossing)
|
|||||||
|
|
||||||
#undef wxDEFINE_COMMON_PROLOGUE_OVERLOAD
|
#undef wxDEFINE_COMMON_PROLOGUE_OVERLOAD
|
||||||
|
|
||||||
|
#define wxCOMMON_CALLBACK_PROLOGUE(event, win) \
|
||||||
|
const int rc = wxGtkCallbackCommonPrologue(event, win); \
|
||||||
|
if ( rc != -1 ) \
|
||||||
|
return rc
|
||||||
|
|
||||||
// send the wxChildFocusEvent and wxFocusEvent, common code of
|
// send the wxChildFocusEvent and wxFocusEvent, common code of
|
||||||
// gtk_window_focus_in_callback() and SetFocus()
|
// gtk_window_focus_in_callback() and SetFocus()
|
||||||
static bool DoSendFocusEvents(wxWindow *win)
|
static bool DoSendFocusEvents(wxWindow *win)
|
||||||
@@ -1473,8 +1478,7 @@ gtk_window_button_press_callback( GtkWidget *widget,
|
|||||||
GdkEventButton *gdk_event,
|
GdkEventButton *gdk_event,
|
||||||
wxWindowGTK *win )
|
wxWindowGTK *win )
|
||||||
{
|
{
|
||||||
if ( !wxGtkCallbackCommonPrologue(gdk_event, win) )
|
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (win->m_wxwindow && (g_focusWindow != win) && win->AcceptsFocus())
|
if (win->m_wxwindow && (g_focusWindow != win) && win->AcceptsFocus())
|
||||||
{
|
{
|
||||||
@@ -1646,8 +1650,7 @@ gtk_window_button_release_callback( GtkWidget *widget,
|
|||||||
GdkEventButton *gdk_event,
|
GdkEventButton *gdk_event,
|
||||||
wxWindowGTK *win )
|
wxWindowGTK *win )
|
||||||
{
|
{
|
||||||
if ( !wxGtkCallbackCommonPrologue(gdk_event, win) )
|
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
wxEventType event_type = wxEVT_NULL;
|
wxEventType event_type = wxEVT_NULL;
|
||||||
|
|
||||||
@@ -1703,8 +1706,7 @@ gtk_window_motion_notify_callback( GtkWidget *widget,
|
|||||||
GdkEventMotion *gdk_event,
|
GdkEventMotion *gdk_event,
|
||||||
wxWindowGTK *win )
|
wxWindowGTK *win )
|
||||||
{
|
{
|
||||||
if ( !wxGtkCallbackCommonPrologue(gdk_event, win) )
|
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (gdk_event->is_hint)
|
if (gdk_event->is_hint)
|
||||||
{
|
{
|
||||||
@@ -1956,8 +1958,7 @@ gtk_window_enter_callback( GtkWidget *widget,
|
|||||||
GdkEventCrossing *gdk_event,
|
GdkEventCrossing *gdk_event,
|
||||||
wxWindowGTK *win )
|
wxWindowGTK *win )
|
||||||
{
|
{
|
||||||
if ( !wxGtkCallbackCommonPrologue(gdk_event, win) )
|
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
// Event was emitted after a grab
|
// Event was emitted after a grab
|
||||||
if (gdk_event->mode != GDK_CROSSING_NORMAL) return FALSE;
|
if (gdk_event->mode != GDK_CROSSING_NORMAL) return FALSE;
|
||||||
@@ -2001,8 +2002,7 @@ gtk_window_leave_callback( GtkWidget *widget,
|
|||||||
GdkEventCrossing *gdk_event,
|
GdkEventCrossing *gdk_event,
|
||||||
wxWindowGTK *win )
|
wxWindowGTK *win )
|
||||||
{
|
{
|
||||||
if ( !wxGtkCallbackCommonPrologue(gdk_event, win) )
|
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
// Event was emitted after an ungrab
|
// Event was emitted after an ungrab
|
||||||
if (gdk_event->mode != GDK_CROSSING_NORMAL) return FALSE;
|
if (gdk_event->mode != GDK_CROSSING_NORMAL) return FALSE;
|
||||||
|
Reference in New Issue
Block a user