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 /src | |
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.
Diffstat (limited to 'src')
-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)) { |