Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/boards
diff options
context:
space:
mode:
authorBruno Coudoin <bcoudoin@src.gnome.org>2008-04-29 22:27:06 (GMT)
committer Bruno Coudoin <bcoudoin@src.gnome.org>2008-04-29 22:27:06 (GMT)
commitce6143540fe8aa09d760a363c866b2273063918c (patch)
treed95620ff452afd400e5c773405a0f075ea329b8d /src/boards
parent857da06defd75612139c9b671d123ccdcd9692be (diff)
Reintroduced the double click erase based activity.
svn path=/trunk/; revision=3389
Diffstat (limited to 'src/boards')
-rw-r--r--src/boards/erase.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/boards/erase.c b/src/boards/erase.c
index 29a6d5a..9f9982f 100644
--- a/src/boards/erase.c
+++ b/src/boards/erase.c
@@ -56,8 +56,9 @@ static guint normal_delay_id = 0;
static gint timer_id = 0;
-#define NORMAL 0
-#define CLIC 1
+#define NORMAL 0
+#define CLIC 1
+#define DOUBLECLIC 2
static gint board_mode = NORMAL;
@@ -188,6 +189,8 @@ static void start_board (GcomprisBoard *agcomprisBoard)
if (strcmp(gcomprisBoard->mode,"clic")==0)
board_mode = CLIC;
+ else if (strcmp(gcomprisBoard->mode,"doubleclic")==0)
+ board_mode = DOUBLECLIC;
else {
board_mode = NORMAL;
gcomprisBoard->maxlevel=8;
@@ -481,7 +484,10 @@ erase_one_item (GnomeCanvasItem *item)
static gint
item_event(GnomeCanvasItem *item, GdkEvent *event, gpointer data)
{
+ static GnomeCanvasItem *previous_clicked_item = NULL;
+ static guint32 previous_click_time = 0;
counter *c = (counter *) data;
+
if(board_paused)
return FALSE;
@@ -510,6 +516,26 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, gpointer data)
if (event->type != GDK_BUTTON_PRESS)
return FALSE;
+ if (board_mode == DOUBLECLIC)
+ {
+ if (event->type != GDK_BUTTON_PRESS)
+ return FALSE;
+ else
+ {
+ guint32 d = event->button.time - previous_click_time;
+ /* Click duration handicap depending on the level */
+ d += gcomprisBoard->level * 100;
+
+ if (previous_clicked_item != item
+ || d >= 850)
+ {
+ previous_clicked_item = item;
+ previous_click_time = event->button.time;
+ return FALSE;
+ }
+ }
+ }
+
erase_one_item (item);
return FALSE;