Commit 2acfecee authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Fix list_jump in thumbnail mode + thumbnail mode selection rollover (closes #115)

parent 88979e43
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ git HEAD
      <https://github.com/derf/feh/issues/113>
    * Respect --start-at in thumbnail mode
      <https://github.com/derf/feh/issues/116>
    * Make 'z' (jump_random) work in thumbnail mode as well, fix thumbnail
      selection roll-over <https://github.com/derf/feh/issues/115>

Tue, 16 Oct 2012 06:29:58 +0200  Daniel Friesel <derf+feh@finalrewind.org>

+4 −1
Original line number Diff line number Diff line
@@ -658,6 +658,9 @@ void feh_event_handle_keypress(XEvent * ev)
		opt.hide_pointer = !opt.hide_pointer;
	}
	else if (feh_is_kp(&keys.jump_random, keysym, state)) {
		if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_next(winwid, rand() % (filelist_len - 1));
		else
			slideshow_change_image(winwid, SLIDE_RAND, 1);
	}
	else if (feh_is_kp(&keys.toggle_caption, keysym, state)) {
+26 −15
Original line number Diff line number Diff line
@@ -786,36 +786,47 @@ void feh_thumbnail_select(winwidget winwid, feh_thumbnail *thumbnail)

void feh_thumbnail_select_next(winwidget winwid, int jump)
{
	gib_list *l, *tmp;
	int i;
	gib_list *l;
	feh_thumbnail *thumb;
	int len = 0, cur = 0, target = 0;

	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;
	for (l = thumbnails; l; l = l->next) {
		thumb = FEH_THUMB(l->data);
		if (thumb == td.selected)
			cur = len;
		len++;
	}

	target = (cur + len - jump) % len;

	for (l = thumbnails; l; l = l->next) {
		if (target-- == 0) {
			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;
	int len = 0, cur = 0, target = 0;

	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;
		if (thumb == td.selected)
			cur = len;
		len++;
	}

	target = (cur + jump) % len;

	for (l = thumbnails; l; l = l->next) {
		if (target-- == 0) {
			feh_thumbnail_select(winwid, FEH_THUMB(l->data));
			return;
			break;
		}
	}
	feh_thumbnail_select(winwid, FEH_THUMB(thumbnails->data));
}

inline void feh_thumbnail_show_selected()