From: Vadim Zeitlin Date: Thu, 12 Feb 2004 16:41:59 +0000 (+0000) Subject: suppress triple clicks generation completely for GTK2 as it makes long click series... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/15475ced8819ab9fe6ababa609811399bfb45a43 suppress triple clicks generation completely for GTK2 as it makes long click series generate exactly the same events as under other ports (patch 895564) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 3a43a9e18a..a6d5457225 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1537,6 +1537,19 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, wxEventType event_type = wxEVT_NULL; +#ifdef __WXGTK20__ + if ( gdk_event->type == GDK_2BUTTON_PRESS && + gdk_event->button >= 1 && gdk_event->button <= 3 ) + { + // Reset GDK internal timestamp variables in order to disable GDK + // triple click events. GDK will then next time believe no button has + // been clicked just before, and send a normal button click event. + GdkDisplay* display = gtk_widget_get_display (widget); + display->button_click_time[1] = 0; + display->button_click_time[0] = 0; + } +#endif // GTK 2+ + if (gdk_event->button == 1) { // note that GDK generates triple click events which are not supported @@ -1544,6 +1557,10 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, // clicks would simply go missing switch (gdk_event->type) { + // we shouldn't get triple clicks at all for GTK2 because we + // suppress them artificially using the code above but we still + // should map them to something for GTK1 and not just ignore them + // as this would lose clicks case GDK_3BUTTON_PRESS: // we could also map this to DCLICK... case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; @@ -1562,6 +1579,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, { switch (gdk_event->type) { + case GDK_3BUTTON_PRESS: case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break; @@ -1578,6 +1596,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, { switch (gdk_event->type) { + case GDK_3BUTTON_PRESS: case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break; diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 3a43a9e18a..a6d5457225 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -1537,6 +1537,19 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, wxEventType event_type = wxEVT_NULL; +#ifdef __WXGTK20__ + if ( gdk_event->type == GDK_2BUTTON_PRESS && + gdk_event->button >= 1 && gdk_event->button <= 3 ) + { + // Reset GDK internal timestamp variables in order to disable GDK + // triple click events. GDK will then next time believe no button has + // been clicked just before, and send a normal button click event. + GdkDisplay* display = gtk_widget_get_display (widget); + display->button_click_time[1] = 0; + display->button_click_time[0] = 0; + } +#endif // GTK 2+ + if (gdk_event->button == 1) { // note that GDK generates triple click events which are not supported @@ -1544,6 +1557,10 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, // clicks would simply go missing switch (gdk_event->type) { + // we shouldn't get triple clicks at all for GTK2 because we + // suppress them artificially using the code above but we still + // should map them to something for GTK1 and not just ignore them + // as this would lose clicks case GDK_3BUTTON_PRESS: // we could also map this to DCLICK... case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; @@ -1562,6 +1579,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, { switch (gdk_event->type) { + case GDK_3BUTTON_PRESS: case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break; @@ -1578,6 +1596,7 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, { switch (gdk_event->type) { + case GDK_3BUTTON_PRESS: case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break;