From: Tomasz Golinski Date: Fri, 13 Oct 2017 12:21:11 +0000 (+0100) Subject: Multi-button mouse support X-Git-Tag: v1.4~61 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96a1fc7a86f199045e708f44918aff945bc762e9;p=geeqie.git Multi-button mouse support Initial support for multi-button mouse. When image pane has focus, mouse buttons 8 and 9 are mapped to Forward and Back. --- diff --git a/doc/docbook/GuideReferenceKeyboardShortcuts.xml b/doc/docbook/GuideReferenceKeyboardShortcuts.xml index de3736c81..00a415925 100644 --- a/doc/docbook/GuideReferenceKeyboardShortcuts.xml +++ b/doc/docbook/GuideReferenceKeyboardShortcuts.xml @@ -166,6 +166,24 @@ Pan to respective edge of image. + + + + Mouse button 8 + + Requires a multi-button mouse. + + + Forward + + + + + Mouse button 9 + + + Back + diff --git a/src/layout_image.c b/src/layout_image.c index e4125a1a7..52f9a389c 100644 --- a/src/layout_image.c +++ b/src/layout_image.c @@ -29,6 +29,7 @@ #include "exif.h" #include "filedata.h" #include "fullscreen.h" +#include "history_list.h" #include "image.h" #include "image-overlay.h" #include "img-view.h" @@ -1692,6 +1693,7 @@ static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpoi { LayoutWindow *lw = data; GtkWidget *menu; + FileData *dir_fd; switch (event->button) { @@ -1711,6 +1713,16 @@ static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpoi } gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time); break; + case MOUSE_BUTTON_BACK: + dir_fd = file_data_new_dir(history_chain_back()); + layout_set_fd(lw, dir_fd); + file_data_unref(dir_fd); + break; + case MOUSE_BUTTON_FORWARD: + dir_fd = file_data_new_dir(history_chain_forward()); + layout_set_fd(lw, dir_fd); + file_data_unref(dir_fd); + break; default: break; } diff --git a/src/pixbuf-renderer.c b/src/pixbuf-renderer.c index 2459bf420..57c2bea98 100644 --- a/src/pixbuf-renderer.c +++ b/src/pixbuf-renderer.c @@ -2127,7 +2127,7 @@ static gboolean pr_mouse_release_cb(GtkWidget *widget, GdkEventButton *bevent, g { pr_scroller_start(pr, bevent->x, bevent->y); } - else if (bevent->button == MOUSE_BUTTON_LEFT || bevent->button == MOUSE_BUTTON_MIDDLE) + else if (bevent->button == MOUSE_BUTTON_LEFT || bevent->button == MOUSE_BUTTON_MIDDLE || bevent->button == MOUSE_BUTTON_BACK || bevent->button == MOUSE_BUTTON_FORWARD) { pr_clicked_signal(pr, bevent); } diff --git a/src/typedefs.h b/src/typedefs.h index 4b65b554e..654955061 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -33,7 +33,9 @@ typedef enum { MOUSE_BUTTON_MIDDLE = 2, MOUSE_BUTTON_RIGHT = 3, MOUSE_BUTTON_WHEEL_UP = 4, - MOUSE_BUTTON_WHEEL_DOWN = 5 + MOUSE_BUTTON_WHEEL_DOWN = 5, + MOUSE_BUTTON_BACK = 8, + MOUSE_BUTTON_FORWARD = 9 } MouseButton; typedef enum {