示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}
示例#5
0
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;
}
示例#6
0
static VALUE
gdkevent_s_peek(G_GNUC_UNUSED VALUE self)
{
    return GDKEVENT2RVAL(gdk_event_peek());
}
示例#7
0
static VALUE
gdkevent_s_peek(G_GNUC_UNUSED VALUE self)
{
    return make_gdkevent(gdk_event_peek());
}