Commit 85fba735 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Use next/prev/render keys to select images in thumbnail mode (closes #26)

parent 873aecef
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -13,6 +13,9 @@ git HEAD
    * Since the manual is way better structured and more detailed than the
      --help output, it now simply refers to the manual. To include the old
      help text, build feh with 'help=1'
    * You can now use the next/prev/jump keys to navigate thumbnails. Use the
      render key to open the currently selected thumbnail.
      <http://github.com/derf/feh/issues/26>

Sat, 23 Apr 2011 22:00:27 +0200  Daniel Friesel <derf@finalrewind.org>

+1 −1
Original line number Diff line number Diff line
@@ -498,7 +498,7 @@ static void feh_event_handle_MotionNotify(XEvent * ev)
			x = (ev->xbutton.x - winwid->im_x) / winwid->zoom;
			y = (ev->xbutton.y - winwid->im_y) / winwid->zoom;
			thumbnail = feh_thumbnail_get_thumbnail_from_coords(x, y);
			feh_thumbnail_mark_selected(winwid, thumbnail);
			feh_thumbnail_select(winwid, thumbnail);
		}
	}
	return;
+12 −1
Original line number Diff line number Diff line
@@ -421,10 +421,14 @@ void feh_event_handle_keypress(XEvent * ev)
	if (feh_is_kp(&keys.next_img, keysym, state)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_NEXT);
		else if (opt.thumbs)
			feh_thumbnail_select_next(winwid, 1);
	}
	else if (feh_is_kp(&keys.prev_img, keysym, state)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_PREV);
		else if (opt.thumbs)
			feh_thumbnail_select_prev(winwid, 1);
	}
	else if (feh_is_kp(&keys.scroll_right, keysym, state)) {
		winwid->im_x -= 20;
@@ -445,10 +449,14 @@ void feh_event_handle_keypress(XEvent * ev)
	else if (feh_is_kp(&keys.jump_back, keysym, state)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_BACK);
		else if (opt.thumbs)
			feh_thumbnail_select_prev(winwid, 10);
	}
	else if (feh_is_kp(&keys.jump_fwd, keysym, state)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_FWD);
		else if (opt.thumbs)
			feh_thumbnail_select_next(winwid, 10);
	}
	else if (feh_is_kp(&keys.quit, keysym, state)) {
		winwidget_destroy_all();
@@ -533,6 +541,9 @@ void feh_event_handle_keypress(XEvent * ev)
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.render, keysym, state)) {
		if (opt.thumbs)
			feh_thumbnail_show_selected();
		else
			winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.toggle_actions, keysym, state)) {
+39 −1
Original line number Diff line number Diff line
@@ -926,7 +926,7 @@ void feh_thumbnail_show_fullsize(feh_file *thumbfile)
	}
}

void feh_thumbnail_mark_selected(winwidget winwid, feh_thumbnail *thumbnail)
void feh_thumbnail_select(winwidget winwid, feh_thumbnail *thumbnail)
{
	Imlib_Image origwin;

@@ -959,7 +959,45 @@ void feh_thumbnail_mark_selected(winwidget winwid, feh_thumbnail *thumbnail)
	td.selected = thumbnail;
}

void feh_thumbnail_select_next(winwidget winwid, int jump)
{
	gib_list *l, *tmp;
	int i;

	for (l = thumbnails; l && l->next; l = l->next) {
		tmp = l;
		for (i = jump; (i > 0) && tmp->next; i--)
			tmp = tmp->next;
		if (tmp->data == td.selected)
			break;
	}

	feh_thumbnail_select(winwid, FEH_THUMB(l->data));
}

void feh_thumbnail_select_prev(winwidget winwid, int jump)
{
	gib_list *l;
	feh_thumbnail *thumb;
	int i;

	for (l = thumbnails; l; l = l->next) {
		thumb = FEH_THUMB(l->data);
		if ((thumb == td.selected) && l->next) {
			for (i = jump; (i > 0) && l->next; i--)
				l = l->next;
			feh_thumbnail_select(winwid, FEH_THUMB(l->data));
			return;
		}
	}
	feh_thumbnail_select(winwid, FEH_THUMB(thumbnails->data));
}

inline void feh_thumbnail_show_selected()
{
	if (td.selected && td.selected->file)
		feh_thumbnail_show_fullsize(td.selected->file);
}

int feh_thumbnail_setup_thumbnail_dir(void)
{
+4 −1
Original line number Diff line number Diff line
@@ -82,7 +82,10 @@ char *feh_thumbnail_get_name(char *uri);
char *feh_thumbnail_get_name_uri(char *name);
char *feh_thumbnail_get_name_md5(char *uri);
void feh_thumbnail_show_fullsize(feh_file *thumbfile);
void feh_thumbnail_mark_selected(winwidget winwid, feh_thumbnail *thumbnail);
void feh_thumbnail_select(winwidget winwid, feh_thumbnail *thumbnail);
void feh_thumbnail_select_next(winwidget winwid, int jump);
void feh_thumbnail_select_prev(winwidget winwid, int jump);
void feh_thumbnail_show_selected();

int feh_thumbnail_setup_thumbnail_dir(void);