summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/clix.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index bfe33b90de..e0cf88bf08 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -65,12 +65,16 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
-#define CLIX_BUTTON_QUIT BUTTON_MENU
-#define CLIX_BUTTON_UP BUTTON_SCROLL_BACK
-#define CLIX_BUTTON_DOWN BUTTON_SCROLL_FWD
-#define CLIX_BUTTON_CLICK BUTTON_SELECT
-#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
-#define CLIX_BUTTON_LEFT BUTTON_LEFT
+#define CLIX_BUTTON_QUIT (BUTTON_SELECT | BUTTON_MENU)
+#define CLIX_BUTTON_UP BUTTON_MENU
+#define CLIX_BUTTON_DOWN BUTTON_PLAY
+#define CLIX_BUTTON_SCROLL_FWD BUTTON_SCROLL_FWD
+#define CLIX_BUTTON_SCROLL_BACK BUTTON_SCROLL_BACK
+#define CLIX_BUTTON_CLICK (BUTTON_SELECT | BUTTON_REL)
+#define CLIX_BUTTON_CLICK_PRE BUTTON_SELECT
+#define CLIX_BUTTON_CLICK_PRE2 (BUTTON_SELECT | BUTTON_REPEAT)
+#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
+#define CLIX_BUTTON_LEFT BUTTON_LEFT
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define CLIX_BUTTON_QUIT BUTTON_POWER
@@ -694,6 +698,8 @@ static int clix_handle_game(struct clix_game_state_t* state)
int start;
int end;
int oldx, oldy;
+
+ int lastbutton = BUTTON_NONE;
while(true)
{
@@ -710,9 +716,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
oldx = state->x;
oldy = state->y;
- rb->button_get_w_tmo(end - *rb->current_tick);
- button = rb->button_status();
- rb->button_clear_queue();
+ button = rb->button_get_w_tmo(end - *rb->current_tick);
#ifdef HAVE_TOUCHSCREEN
if(button & BUTTON_TOUCHSCREEN)
{
@@ -745,6 +749,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
#ifndef HAVE_TOUCHSCREEN
#ifdef CLIX_BUTTON_SCROLL_BACK
case CLIX_BUTTON_SCROLL_BACK:
+ case CLIX_BUTTON_SCROLL_BACK|BUTTON_REPEAT:
#endif
case CLIX_BUTTON_UP:
if( state->y == 0 ||
@@ -767,6 +772,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
break;
#ifdef CLIX_BUTTON_SCROLL_FWD
case CLIX_BUTTON_SCROLL_FWD:
+ case CLIX_BUTTON_SCROLL_FWD|BUTTON_REPEAT:
#endif
case CLIX_BUTTON_DOWN:
if( state->y == (BOARD_HEIGHT - 1))
@@ -788,6 +794,15 @@ static int clix_handle_game(struct clix_game_state_t* state)
#endif
case CLIX_BUTTON_CLICK:
{
+#ifdef CLIX_BUTTON_CLICK_PRE
+#ifdef CLIX_BUTTON_CLICK_PRE2
+ if (lastbutton != CLIX_BUTTON_CLICK_PRE
+ && lastbutton != CLIX_BUTTON_CLICK_PRE2)
+#else
+ if (lastbutton != CLIX_BUTTON_CLICK_PRE)
+#endif
+ break;
+#endif
if (state->selected_count > 1) {
switch( clix_clear_selected( state))
{
@@ -842,6 +857,9 @@ static int clix_handle_game(struct clix_game_state_t* state)
break;
}
+
+ if(button != BUTTON_NONE)
+ lastbutton = button;
if( (oldx != state->x || oldy != state->y) &&
state->board_selected[ XYPOS( oldx, oldy)] !=