Loading ChangeLog +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ git HEAD feh will now display a warning and try to reload ad infinitum * Fix memory leak in reload functionality for directories <https://github.com/derf/feh/issues/62> * When using --no-menus and clicking the menu button, feh will now ignore it instead of quitting (which was undocumented behaviour anyways) Tue, 16 Aug 2011 22:48:06 +0200 Daniel Friesel <derf@finalrewind.org> Loading src/events.c +57 −92 Original line number Diff line number Diff line Loading @@ -70,47 +70,36 @@ static void feh_event_handle_ButtonPress(XEvent * ev) } winwid = winwidget_get_from_window(ev->xbutton.window); if (winwid && winwid->caption_entry) { if (winwid == NULL || winwid->caption_entry) { return; } if (!opt.no_menus && EV_IS_MENU_BUTTON(ev)) { D(("Menu Button Press event\n")); if (winwid != NULL) { winwidget_show_menu(winwid); } } else if (winwid && (ev->xbutton.button == opt.rotate_button) } else if ((ev->xbutton.button == opt.rotate_button) && (winwid->type != WIN_TYPE_THUMBNAIL) && ((opt.no_rotate_ctrl_mask) || (ev->xbutton.state & ControlMask))) { if (winwid != NULL) { opt.mode = MODE_ROTATE; winwid->mode = MODE_ROTATE; D(("rotate starting at %d, %d\n", ev->xbutton.x, ev->xbutton.y)); } } else if (winwid && (ev->xbutton.button == opt.blur_button) } else if ((ev->xbutton.button == opt.blur_button) && (winwid->type != WIN_TYPE_THUMBNAIL) && ((opt.no_blur_ctrl_mask) || (ev->xbutton.state & ControlMask))) { if (winwid != NULL) { opt.mode = MODE_BLUR; winwid->mode = MODE_BLUR; D(("blur starting at %d, %d\n", ev->xbutton.x, ev->xbutton.y)); } } else if (ev->xbutton.button == opt.pan_button) { D(("Pan Button Press event\n")); if (winwid != NULL) { D(("Next button, but could be pan mode\n")); opt.mode = MODE_NEXT; winwid->mode = MODE_NEXT; D(("click offset is %d,%d\n", ev->xbutton.x, ev->xbutton.y)); winwid->click_offset_x = ev->xbutton.x - winwid->im_x; winwid->click_offset_y = ev->xbutton.y - winwid->im_y; } } else if (ev->xbutton.button == opt.zoom_button) { D(("Zoom Button Press event\n")); if (winwid != NULL) { D(("Zoom mode baby!\n")); opt.mode = MODE_ZOOM; winwid->mode = MODE_ZOOM; D(("click offset is %d,%d\n", ev->xbutton.x, ev->xbutton.y)); Loading @@ -123,20 +112,16 @@ static void feh_event_handle_ButtonPress(XEvent * ev) - winwid->im_x) / winwid->old_zoom; winwid->im_click_offset_y = (winwid->click_offset_y - winwid->im_y) / winwid->old_zoom; } } else if (ev->xbutton.button == opt.reload_button) { D(("Reload Button Press event\n")); if (winwid != NULL) feh_reload_image(winwid, 0, 0); } else if (ev->xbutton.button == opt.prev_button) { D(("Prev Button Press event\n")); if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_PREV, 1); } else if (ev->xbutton.button == opt.next_button) { D(("Next Button Press event\n")); if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_NEXT, 1); } else { D(("Received other ButtonPress event\n")); Loading Loading @@ -167,35 +152,23 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) } winwid = winwidget_get_from_window(ev->xbutton.window); if (winwid && winwid->caption_entry) { if (winwid == NULL || winwid->caption_entry) { return; } if ((ev->xbutton.button == opt.menu_button) && (((!opt.menu_ctrl_mask) && ((!(ev->xbutton.state & ControlMask)) || ((ev->xbutton.state & ControlMask) && (opt.menu_ctrl_mask))))) && (opt.no_menus)) winwidget_destroy_all(); else if (ev->xbutton.button == opt.pan_button) { if (ev->xbutton.button == opt.pan_button) { if (opt.mode == MODE_PAN) { if (winwid != NULL) { D(("Disabling pan mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; winwidget_sanitise_offsets(winwid); winwidget_render_image(winwid, 0, 0); } } else if (opt.mode == MODE_NEXT) { opt.mode = MODE_NORMAL; if (winwid != NULL) winwid->mode = MODE_NORMAL; if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) { if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_NEXT, 1); } else if ((winwid != NULL) && (winwid->type == WIN_TYPE_THUMBNAIL)) { else if (winwid->type == WIN_TYPE_THUMBNAIL) { feh_file *thumbfile; int x, y; Loading @@ -210,15 +183,11 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) feh_thumbnail_show_fullsize(thumbfile); } } else { if (winwid != NULL) { opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } } } else if ((ev->xbutton.button == opt.rotate_button) || (ev->xbutton.button == opt.zoom_button)) { D(("Mode-based Button Release event\n")); if (winwid != NULL) { D(("Disabling mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; Loading @@ -232,17 +201,13 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) winwidget_sanitise_offsets(winwid); winwidget_render_image(winwid, 0, 0); } } else if ((ev->xbutton.button == opt.blur_button) && ((opt.no_blur_ctrl_mask) || (ev->xbutton.state & ControlMask))) { D(("Blur Button Release event\n")); if (winwid != NULL) { D(("Disabling Blur mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } } return; } Loading Loading
ChangeLog +2 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ git HEAD feh will now display a warning and try to reload ad infinitum * Fix memory leak in reload functionality for directories <https://github.com/derf/feh/issues/62> * When using --no-menus and clicking the menu button, feh will now ignore it instead of quitting (which was undocumented behaviour anyways) Tue, 16 Aug 2011 22:48:06 +0200 Daniel Friesel <derf@finalrewind.org> Loading
src/events.c +57 −92 Original line number Diff line number Diff line Loading @@ -70,47 +70,36 @@ static void feh_event_handle_ButtonPress(XEvent * ev) } winwid = winwidget_get_from_window(ev->xbutton.window); if (winwid && winwid->caption_entry) { if (winwid == NULL || winwid->caption_entry) { return; } if (!opt.no_menus && EV_IS_MENU_BUTTON(ev)) { D(("Menu Button Press event\n")); if (winwid != NULL) { winwidget_show_menu(winwid); } } else if (winwid && (ev->xbutton.button == opt.rotate_button) } else if ((ev->xbutton.button == opt.rotate_button) && (winwid->type != WIN_TYPE_THUMBNAIL) && ((opt.no_rotate_ctrl_mask) || (ev->xbutton.state & ControlMask))) { if (winwid != NULL) { opt.mode = MODE_ROTATE; winwid->mode = MODE_ROTATE; D(("rotate starting at %d, %d\n", ev->xbutton.x, ev->xbutton.y)); } } else if (winwid && (ev->xbutton.button == opt.blur_button) } else if ((ev->xbutton.button == opt.blur_button) && (winwid->type != WIN_TYPE_THUMBNAIL) && ((opt.no_blur_ctrl_mask) || (ev->xbutton.state & ControlMask))) { if (winwid != NULL) { opt.mode = MODE_BLUR; winwid->mode = MODE_BLUR; D(("blur starting at %d, %d\n", ev->xbutton.x, ev->xbutton.y)); } } else if (ev->xbutton.button == opt.pan_button) { D(("Pan Button Press event\n")); if (winwid != NULL) { D(("Next button, but could be pan mode\n")); opt.mode = MODE_NEXT; winwid->mode = MODE_NEXT; D(("click offset is %d,%d\n", ev->xbutton.x, ev->xbutton.y)); winwid->click_offset_x = ev->xbutton.x - winwid->im_x; winwid->click_offset_y = ev->xbutton.y - winwid->im_y; } } else if (ev->xbutton.button == opt.zoom_button) { D(("Zoom Button Press event\n")); if (winwid != NULL) { D(("Zoom mode baby!\n")); opt.mode = MODE_ZOOM; winwid->mode = MODE_ZOOM; D(("click offset is %d,%d\n", ev->xbutton.x, ev->xbutton.y)); Loading @@ -123,20 +112,16 @@ static void feh_event_handle_ButtonPress(XEvent * ev) - winwid->im_x) / winwid->old_zoom; winwid->im_click_offset_y = (winwid->click_offset_y - winwid->im_y) / winwid->old_zoom; } } else if (ev->xbutton.button == opt.reload_button) { D(("Reload Button Press event\n")); if (winwid != NULL) feh_reload_image(winwid, 0, 0); } else if (ev->xbutton.button == opt.prev_button) { D(("Prev Button Press event\n")); if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_PREV, 1); } else if (ev->xbutton.button == opt.next_button) { D(("Next Button Press event\n")); if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_NEXT, 1); } else { D(("Received other ButtonPress event\n")); Loading Loading @@ -167,35 +152,23 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) } winwid = winwidget_get_from_window(ev->xbutton.window); if (winwid && winwid->caption_entry) { if (winwid == NULL || winwid->caption_entry) { return; } if ((ev->xbutton.button == opt.menu_button) && (((!opt.menu_ctrl_mask) && ((!(ev->xbutton.state & ControlMask)) || ((ev->xbutton.state & ControlMask) && (opt.menu_ctrl_mask))))) && (opt.no_menus)) winwidget_destroy_all(); else if (ev->xbutton.button == opt.pan_button) { if (ev->xbutton.button == opt.pan_button) { if (opt.mode == MODE_PAN) { if (winwid != NULL) { D(("Disabling pan mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; winwidget_sanitise_offsets(winwid); winwidget_render_image(winwid, 0, 0); } } else if (opt.mode == MODE_NEXT) { opt.mode = MODE_NORMAL; if (winwid != NULL) winwid->mode = MODE_NORMAL; if ((winwid != NULL) && (winwid->type == WIN_TYPE_SLIDESHOW)) { if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_NEXT, 1); } else if ((winwid != NULL) && (winwid->type == WIN_TYPE_THUMBNAIL)) { else if (winwid->type == WIN_TYPE_THUMBNAIL) { feh_file *thumbfile; int x, y; Loading @@ -210,15 +183,11 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) feh_thumbnail_show_fullsize(thumbfile); } } else { if (winwid != NULL) { opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } } } else if ((ev->xbutton.button == opt.rotate_button) || (ev->xbutton.button == opt.zoom_button)) { D(("Mode-based Button Release event\n")); if (winwid != NULL) { D(("Disabling mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; Loading @@ -232,17 +201,13 @@ static void feh_event_handle_ButtonRelease(XEvent * ev) winwidget_sanitise_offsets(winwid); winwidget_render_image(winwid, 0, 0); } } else if ((ev->xbutton.button == opt.blur_button) && ((opt.no_blur_ctrl_mask) || (ev->xbutton.state & ControlMask))) { D(("Blur Button Release event\n")); if (winwid != NULL) { D(("Disabling Blur mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } } return; } Loading