diff -Naur evolution-1.0.3-original/addressbook/gui/widgets/e-minicard-label.c evolution-1.0.3/addressbook/gui/widgets/e-minicard-label.c --- evolution-1.0.3-original/addressbook/gui/widgets/e-minicard-label.c Wed Mar 20 13:19:32 2002 +++ evolution-1.0.3/addressbook/gui/widgets/e-minicard-label.c Thu Mar 21 12:21:32 2002 @@ -335,8 +335,39 @@ } } break; - case GDK_BUTTON_PRESS: - case GDK_BUTTON_RELEASE: + + case GDK_BUTTON_PRESS: { + gboolean return_val; + GdkEvent *next_event; + + /* don't do anything if we already have the focus, but say we + * did */ + if ( e_minicard_label->has_focus ) + return TRUE; + + /* if no pending events, process the event */ + if (!gdk_events_pending()) { + gtk_signal_emit_by_name(GTK_OBJECT(e_minicard_label->field), "event", event, &return_val); + return return_val; + } + + next_event = gdk_event_peek(); + if(next_event != NULL) { + /* since the current event is GDK_BUTTON_PRESS, if the + * next one is GDK_BUTTON_RELEASE, we have a valid + * single click, so process */ + if (next_event->type == GDK_BUTTON_RELEASE) { + gdk_event_free(next_event); + gtk_signal_emit_by_name(GTK_OBJECT(e_minicard_label->field), "event", event, &return_val); + return return_val; + } + + gdk_event_free(next_event); + } + return TRUE; + break; + } + case GDK_MOTION_NOTIFY: case GDK_ENTER_NOTIFY: case GDK_LEAVE_NOTIFY: { diff -Naur evolution-1.0.3-original/addressbook/gui/widgets/e-minicard.c evolution-1.0.3/addressbook/gui/widgets/e-minicard.c --- evolution-1.0.3-original/addressbook/gui/widgets/e-minicard.c Tue Oct 30 00:00:24 2001 +++ evolution-1.0.3/addressbook/gui/widgets/e-minicard.c Thu Mar 21 12:00:33 2002 @@ -537,7 +537,7 @@ } break; case GDK_BUTTON_PRESS: { - if (1 <= event->button.button && event->button.button <= 2) { + if (event->button.button == 1) { int ret_val = e_minicard_selected(e_minicard, event); GdkEventMask mask = ((1 << (4 + event->button.button)) | GDK_POINTER_MOTION_MASK |