void feh_event_invoke_action(winwidget winwid, unsigned char action) { if (opt.actions[action]) { if (opt.slideshow) { feh_action_run(FEH_FILE(winwid->file->data), opt.actions[action]); if (opt.hold_actions[action]) feh_reload_image(winwid, 1, 1); else slideshow_change_image(winwid, SLIDE_NEXT, 1); } else if ((winwid->type == WIN_TYPE_SINGLE) || (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)) { feh_action_run(FEH_FILE(winwid->file->data), opt.actions[action]); if (opt.hold_actions[action]) feh_reload_image(winwid, 1, 1); else winwidget_destroy(winwid); } else if (winwid->type == WIN_TYPE_THUMBNAIL) { feh_file *thumbfile; thumbfile = feh_thumbnail_get_selected_file(); if (thumbfile) { feh_action_run(thumbfile, opt.actions[action]); if (!opt.hold_actions[action]) feh_thumbnail_mark_removed(thumbfile, 0); } } } return; }
void feh_event_invoke_action(winwidget winwid, char *action) { D_ENTER(4); D(4, ("action is '%s'\n", action)); D(4, ("winwid is '%p'\n", winwid)); if (action) { if (opt.slideshow) { feh_action_run(FEH_FILE(winwid->file->data), action); slideshow_change_image(winwid, SLIDE_NEXT); } else if ((winwid->type == WIN_TYPE_SINGLE) || (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)) { feh_action_run(FEH_FILE(winwid->file->data), action); winwidget_destroy(winwid); } else if (winwid->type == WIN_TYPE_THUMBNAIL) { printf("actions from the main thumb window aren't currentl supported!\n"); printf("For now, open the image to perform the action on it.\n"); } } D_RETURN_(4); }
static void feh_event_handle_ButtonRelease(XEvent * ev) { winwidget winwid = NULL; int state = ev->xbutton.state & (ControlMask | ShiftMask | Mod1Mask | Mod4Mask); int button = ev->xbutton.button; if (menu_root) { /* if menus are open, close them, and execute action if needed */ if (ev->xbutton.window == menu_cover) { feh_menu_hide(menu_root, True); } else if (menu_root) { feh_menu *m; if ((m = feh_menu_get_from_window(ev->xbutton.window))) { feh_menu_item *i = NULL; i = feh_menu_find_selected(m); feh_menu_item_activate(m, i); } } return; } winwid = winwidget_get_from_window(ev->xbutton.window); if (winwid == NULL || winwid->caption_entry) { return; } if (feh_is_bb(&buttons.pan, button, state)) { if (opt.mode == MODE_PAN) { 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; winwid->mode = MODE_NORMAL; if (winwid->type == WIN_TYPE_SLIDESHOW) slideshow_change_image(winwid, SLIDE_NEXT, 1); else if (winwid->type == WIN_TYPE_THUMBNAIL) { feh_file *thumbfile; int x, y; x = ev->xbutton.x; y = ev->xbutton.y; x -= winwid->im_x; y -= winwid->im_y; x /= winwid->zoom; y /= winwid->zoom; thumbfile = feh_thumbnail_get_file_from_coords(x, y); if (thumbfile) { if (opt.actions[0]) feh_action_run(thumbfile, opt.actions[0]); else feh_thumbnail_show_fullsize(thumbfile); } } } else { opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } } else if (feh_is_bb(&buttons.rotate, button, state) || feh_is_bb(&buttons.zoom, button, state)) { D(("Disabling mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; if ((feh_is_bb(&buttons.zoom, button, state)) && (ev->xbutton.x == winwid->click_offset_x) && (ev->xbutton.y == winwid->click_offset_y)) { winwid->zoom = 1.0; winwidget_center_image(winwid); } else winwidget_sanitise_offsets(winwid); winwidget_render_image(winwid, 0, 0); } else if (feh_is_bb(&buttons.blur, button, state)) { D(("Disabling Blur mode\n")); opt.mode = MODE_NORMAL; winwid->mode = MODE_NORMAL; } return; }