diff options
author | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2016-04-26 12:52:48 +0200 |
---|---|---|
committer | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2016-04-26 13:02:44 +0200 |
commit | 9d50ed23333fd2ef2d294788cb13e5273100ad8c (patch) | |
tree | 4f99dfc62d6a7902bbc4c5dcd81e7b9beedaa1ee | |
parent | 9ecdf4d258478d45d83e6f188fcd6bfcae1288b4 (diff) | |
download | imv-9d50ed23333fd2ef2d294788cb13e5273100ad8c.tar.gz |
Conditionally ignore key repeat
For the following actions:
* reset scaling ('s'),
* redraw ('r'),
* scale to actual size ('a'),
* center image ('c'),
* remove selection ('x'),
* toggle fullscreen ('f'),
* toggle playing (space),
* print selection ('p'),
* toggle overlay ('d')
repeating action when key is held does not make sense. After acting upon these
events ignore them until key is released or another key is pressed.
-rw-r--r-- | src/main.c | 42 |
1 files changed, 30 insertions, 12 deletions
@@ -374,19 +374,27 @@ int main(int argc, char** argv) imv_viewport_zoom(&view, &tex, IMV_ZOOM_KEYBOARD, -1); break; case SDLK_s: - if((g_options.scaling += 1) > FULL) { - g_options.scaling = NONE; + if(!e.key.repeat) { + if((g_options.scaling += 1) > FULL) { + g_options.scaling = NONE; + } } /* FALLTHROUGH */ case SDLK_r: - need_rescale = 1; - need_redraw = 1; + if(!e.key.repeat) { + need_rescale = 1; + need_redraw = 1; + } break; case SDLK_a: - imv_viewport_scale_to_actual(&view, &tex); + if(!e.key.repeat) { + imv_viewport_scale_to_actual(&view, &tex); + } break; case SDLK_c: - imv_viewport_center(&view, &tex); + if(!e.key.repeat) { + imv_viewport_center(&view, &tex); + } break; case SDLK_j: imv_viewport_move(&view, 0, -50); @@ -401,23 +409,33 @@ int main(int argc, char** argv) imv_viewport_move(&view, -50, 0); break; case SDLK_x: - imv_navigator_remove(&nav, imv_navigator_selection(&nav)); + if(!e.key.repeat) { + imv_navigator_remove(&nav, imv_navigator_selection(&nav)); + } break; case SDLK_f: - imv_viewport_toggle_fullscreen(&view); + if(!e.key.repeat) { + imv_viewport_toggle_fullscreen(&view); + } break; case SDLK_PERIOD: imv_loader_load_next_frame(&ldr); break; case SDLK_SPACE: - imv_viewport_toggle_playing(&view); + if(!e.key.repeat) { + imv_viewport_toggle_playing(&view); + } break; case SDLK_p: - puts(imv_navigator_selection(&nav)); + if(!e.key.repeat) { + puts(imv_navigator_selection(&nav)); + } break; case SDLK_d: - g_options.overlay = !g_options.overlay; - need_redraw = 1; + if(!e.key.repeat) { + g_options.overlay = !g_options.overlay; + need_redraw = 1; + } break; case SDLK_t: if(e.key.keysym.mod & (KMOD_SHIFT|KMOD_CAPS)) { |