// yet, defer setting the focus to idle time.
wxWindowGTK *g_delayedFocus = (wxWindowGTK*) NULL;
+// global variables because GTK+ DnD want to have the
+// mouse event that caused it
+GdkEvent *g_lastMouseEvent = (GdkEvent*) NULL;
+int g_lastButtonNumber = 0;
+
extern bool g_mainThreadLocked;
//-----------------------------------------------------------------------------
{
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
+ g_lastButtonNumber = gdk_event->button;
+
if (win->m_wxwindow && (g_focusWindow != win) && win->AcceptsFocus())
{
gtk_widget_grab_focus( win->m_wxwindow );
return FALSE;
}
+ g_lastMouseEvent = (GdkEvent*) gdk_event;
+
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
if (win->GTKProcessEvent( event ))
{
+ g_lastMouseEvent = NULL;
return TRUE;
}
+ g_lastMouseEvent = NULL;
if (event_type == wxEVT_RIGHT_DOWN)
{
{
wxCOMMON_CALLBACK_PROLOGUE(gdk_event, win);
+ g_lastButtonNumber = 0;
+
wxEventType event_type = wxEVT_NULL;
switch (gdk_event->button)
return FALSE;
}
+ g_lastMouseEvent = (GdkEvent*) gdk_event;
+
wxMouseEvent event( event_type );
InitMouseEvent( win, event, gdk_event );
gdk_event->y = y;
}
+ g_lastMouseEvent = (GdkEvent*) gdk_event;
+
wxMouseEvent event( wxEVT_MOTION );
InitMouseEvent(win, event, gdk_event);
}
}
- return win->GTKProcessEvent(event);
+ bool ret = win->GTKProcessEvent(event);
+
+ g_lastMouseEvent = NULL;
+
+ return ret;
}
//-----------------------------------------------------------------------------
m_clipPaintRegion = false;
+#if wxUSE_CARET
bool restoreCaret = (GetCaret() != NULL && GetCaret()->IsVisible());
if (restoreCaret)
{
RefreshRect(caretRect);
}
+#endif
}
void wxWindowGTK::GtkScrolledWindowSetBorder(GtkWidget* w, int wxstyle)