bool GtkClickCounter::shouldProcessButtonEvent(GdkEventButton* buttonEvent) { // For double and triple clicks GDK sends both a normal button press event // and a specific type (like GDK_2BUTTON_PRESS). If we detect a special press // coming up, ignore this event as it certainly generated the double or triple // click. The consequence of not eating this event is two DOM button press events // are generated. GUniquePtr<GdkEvent> nextEvent(gdk_event_peek()); if (!nextEvent) return true; if (nextEvent->any.type == GDK_2BUTTON_PRESS || nextEvent->any.type == GDK_3BUTTON_PRESS) return false; return true; }
static gboolean colpalwidgetgtk_event(GtkWidget* glow, GdkEvent* event) { if (event->type == GDK_MOTION_NOTIFY) { GdkEvent* next = gdk_event_peek(); if (next && next->type == GDK_MOTION_NOTIFY) { gdk_event_free(next); return TRUE; } else if (next) gdk_event_free(next); } ((GlowDrawGtk*)((ColPalCtx*)((ColPalWidgetGtk*)glow)->colpal_ctx)->gdraw) ->event_handler(*event); return TRUE; }
static gboolean conversation_nick_clicked(PurpleConversation* conv, gchar* nick, guint button) { GdkEvent* next_event = NULL; PidginConversation* pidgin_conv = NULL; gint event_timeout = 100; /* milliseconds */ if (purple_conversation_get_type(conv) != PURPLE_CONV_TYPE_CHAT) { purple_debug_warning(USERCAST_PLUGIN_NAME, "Conversation `%s' is not a chat\n", conv->name); return FALSE; } if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv)) { purple_debug_warning(USERCAST_PLUGIN_NAME, "Conversation `%s' is not a pidgin conversation\n", conv->name); return FALSE; } if (button != 1) return FALSE; /* Wait for either GDK_2BUTTON_EVENT or something else to arrive */ for (; event_timeout > 0; event_timeout--) { if ((next_event = gdk_event_peek())) break; g_usleep(1000); /* 1 millisecond */ } /* Pingin handles GDK_2BUTTON_PRESS separately */ if (next_event && next_event->type == GDK_2BUTTON_PRESS) { /* Remove GDK_2BUTTON_PRESS from event queue */ gdk_event_free(next_event); gdk_event_free(gdk_event_get()); pidgin_conv = PIDGIN_CONVERSATION(conv); cast_nick(pidgin_conv, nick); gtk_widget_grab_focus(pidgin_conv->entry); purple_debug_info(USERCAST_PLUGIN_NAME, "Casted user `%s' to `%s'\n", nick, conv->name); return TRUE; } return FALSE; }
static gboolean growwidgetgtk_event( GtkWidget *glow, GdkEvent *event) { if ( event->type == GDK_MOTION_NOTIFY) { gdk_display_flush( ((GlowDrawGtk *)((GrowCtx *)((GrowWidgetGtk *)glow)->grow_ctx)->gdraw)->display); GdkEvent *next = gdk_event_peek(); if ( next && next->type == GDK_MOTION_NOTIFY) { gdk_event_free( next); return TRUE; } else if ( next) gdk_event_free( next); } else if ( event->type == GDK_CONFIGURE) { ((GrowWidgetGtk *)glow)->scroll_configure = 1; } ((GlowDrawGtk *)((GrowCtx *)((GrowWidgetGtk *)glow)->grow_ctx)->gdraw)->event_handler( *event); return TRUE; }
static gboolean curvewidgetgtk_event( GtkWidget *glow, GdkEvent *event) { if ( !((CurveWidgetGtk *)glow)->curve_ctx) // Navigator not yet created return TRUE; if ( event->type == GDK_MOTION_NOTIFY) { gdk_display_flush( ((GlowDrawGtk *)((CurveCtx *)((CurveWidgetGtk *)glow)->curve_ctx)->gdraw)->display); GdkEvent *next = gdk_event_peek(); if ( next && next->type == GDK_MOTION_NOTIFY) { gdk_event_free( next); return TRUE; } else if ( next) gdk_event_free( next); } else if ( event->type == GDK_CONFIGURE) { ((CurveWidgetGtk *)glow)->scroll_configure = 1; } ((GlowDrawGtk *)((CurveCtx *)((CurveWidgetGtk *)glow)->curve_ctx)->gdraw)->event_handler( *event); return TRUE; }
static VALUE gdkevent_s_peek(G_GNUC_UNUSED VALUE self) { return GDKEVENT2RVAL(gdk_event_peek()); }
static VALUE gdkevent_s_peek(G_GNUC_UNUSED VALUE self) { return make_gdkevent(gdk_event_peek()); }