diff options
author | nirav <nirav@teisuu.com> | 2018-09-03 22:03:43 +0530 |
---|---|---|
committer | Dandelion <nirav@teisuu.com> | 2018-09-03 22:03:43 +0530 |
commit | 586ba5950efd8badf8364c6f2a9693e2f1800e32 (patch) | |
tree | 6ee86324aa40ec2f894ffb512fa83ac1b70a1468 /main.c | |
parent | 8d9ca628e2d0543ed89c4c3529bdb56cc27af25d (diff) | |
download | im-586ba5950efd8badf8364c6f2a9693e2f1800e32.tar.gz im-586ba5950efd8badf8364c6f2a9693e2f1800e32.zip |
Added scrollwheel bindings for image switching
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 68 |
1 files changed, 52 insertions, 16 deletions
@@ -12,9 +12,36 @@ GtkWidget *window; gint win_width, win_height; GError *error = NULL; -static gboolean key_press(GtkWindow *window, GdkEvent *event, gpointer data) +void next() +{ + char *name; + if ((name = get_next_file()) != NULL) + load_image(name, win_width, win_height); +} + +void prev() { char *name; + if ((name = get_prev_file()) != NULL) + load_image(name, win_width, win_height); +} + +void first() +{ + char *name; + if ((name = get_first_file()) != NULL) + load_image(name, win_width, win_height); +} + +void last() +{ + char *name; + if ((name = get_last_file()) != NULL) + load_image(name, win_width, win_height); +} + +static gboolean key_press(GtkWindow *window, GdkEvent *event, gpointer data) +{ switch (event->key.keyval) { case GDK_KEY_q: g_application_quit( @@ -38,24 +65,20 @@ static gboolean key_press(GtkWindow *window, GdkEvent *event, gpointer data) case GDK_KEY_n: case GDK_KEY_j: case GDK_KEY_Right: - if ((name = get_next_file()) != NULL) - load_image(name, win_width, win_height); + next(); return FALSE; case GDK_KEY_p: case GDK_KEY_k: case GDK_KEY_Left: - if ((name = get_prev_file()) != NULL) - load_image(name, win_width, win_height); + prev(); return FALSE; case GDK_KEY_g: case GDK_KEY_Home: - if ((name = get_first_file()) != NULL) - load_image(name, win_width, win_height); + first(); return FALSE; case GDK_KEY_G: case GDK_KEY_End: - if ((name = get_last_file()) != NULL) - load_image(name, win_width, win_height); + last(); return FALSE; default: return TRUE; @@ -66,15 +89,28 @@ gboolean scroll_callback(GtkWindow *window, GdkEvent *event, gpointer data) { GdkModifierType state; gdk_event_get_state(event, &state); - if (state & GDK_CONTROL_MASK && event->scroll.direction == GDK_SCROLL_UP) { - zoom(1); - curr_scale_mod = zoomed; + + switch (event->scroll.direction) { + case GDK_SCROLL_UP: + if (state & GDK_CONTROL_MASK) { + zoom(1); + curr_scale_mod = zoomed; + } else { + next(); + } return FALSE; - } else if (state & GDK_CONTROL_MASK && - event->scroll.direction == GDK_SCROLL_DOWN) { - zoom(-1); - curr_scale_mod = zoomed; + break; + case GDK_SCROLL_DOWN: + if (state & GDK_CONTROL_MASK) { + zoom(1); + curr_scale_mod = zoomed; + } else { + prev(); + } return FALSE; + break; + default: + break; } return TRUE; } |