Author: juha
Date: 2008-05-22 15:04:01 +0000 (Thu, 22 May 2008)
New Revision: 26981
Modified:
xfcalendar/trunk/panel-plugin/orageclock.c
Log:
Fixed: Bug 4096 - Orage freezes on double click
Actually it was not a freeze but a multiple start.
Modified: xfcalendar/trunk/panel-plugin/orageclock.c
===================================================================
--- xfcalendar/trunk/panel-plugin/orageclock.c 2008-05-20 21:51:26 UTC (rev
26980)
+++ xfcalendar/trunk/panel-plugin/orageclock.c 2008-05-22 15:04:01 UTC (rev
26981)
@@ -311,7 +311,8 @@
}
}
-static gboolean popup_program(GtkWidget *widget, gchar *program, Clock *clock)
+static gboolean popup_program(GtkWidget *widget, gchar *program, Clock *clock
+ , guint event_time)
{
GdkAtom atom;
Window xwindow;
@@ -350,6 +351,14 @@
return(TRUE);
}
else { /* not running, let's try to start it. Need to reset TZ! */
+ static guint prev_event_time = 0; /* prevenst double start (BUG 4096)
*/
+
+ if (prev_event_time && ((event_time - prev_event_time) < 1000)) {
+ g_message("%s: double start of %s prevented", OC_NAME, program);
+ return(FALSE);
+ }
+
+ prev_event_time = event_time;
if (clock->TZ_orig != NULL) /* we had TZ when we started */
g_setenv("TZ", clock->TZ_orig, 1);
else /* TZ was not set so take it out */
@@ -374,10 +383,12 @@
static gboolean on_button_press_event_cb(GtkWidget *widget
, GdkEventButton *event, Clock *clock)
{
+ if (event->type != GDK_BUTTON_PRESS) /* double or triple click */
+ return(FALSE); /* ignore */
if (event->button == 1)
- return(popup_program(widget, "orage", clock));
+ return(popup_program(widget, "orage", clock, event->time));
else if (event->button == 2)
- return(popup_program(widget, "globaltime", clock));
+ return(popup_program(widget, "globaltime", clock, event->time));
return(FALSE);
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits