diff options
author | Bruno 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) |
commit | ce6143540fe8aa09d760a363c866b2273063918c (patch) | |
tree | d95620ff452afd400e5c773405a0f075ea329b8d /src/boards | |
parent | 857da06defd75612139c9b671d123ccdcd9692be (diff) |
Reintroduced the double click erase based activity.
svn path=/trunk/; revision=3389
Diffstat (limited to 'src/boards')
-rw-r--r-- | src/boards/erase.c | 30 |
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; |