summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--src/keyevents.c5
-rw-r--r--src/thumbnail.c51
3 files changed, 46 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index c2075b6..cca0525 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
-git HEAD
+Mon, 24 Dec 2012 15:45:54 +0100 Daniel Friesel <derf+feh@finalrewind.org>
+* Release v2.8
* Do not apply --scale-down to the thumbnail window. It will be applied
to windows opened from this, though.
<https://github.com/derf/feh/issues/106>
@@ -13,6 +14,10 @@ git HEAD
* Treat quick, low-offset drags (1px or 2px move in <1 second) as clicks
to improve graphics tablet support
<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>
diff --git a/src/keyevents.c b/src/keyevents.c
index 18853ed..470d624 100644
--- a/src/keyevents.c
+++ b/src/keyevents.c
@@ -658,7 +658,10 @@ void feh_event_handle_keypress(XEvent * ev)
opt.hide_pointer = !opt.hide_pointer;
}
else if (feh_is_kp(&keys.jump_random, keysym, state)) {
- slideshow_change_image(winwid, SLIDE_RAND, 1);
+ 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)) {
if (opt.caption_path) {
diff --git a/src/thumbnail.c b/src/thumbnail.c
index fbe2ce0..a77152a 100644
--- a/src/thumbnail.c
+++ b/src/thumbnail.c
@@ -400,6 +400,16 @@ void init_thumbnail_mode(void)
if (!opt.display)
gib_imlib_free_image_and_decache(td.im_main);
+ else if (opt.start_list_at) {
+ for (l = thumbnails; l; l = l->next) {
+ if (!strcmp(opt.start_list_at, FEH_THUMB(l->data)->file->filename)) {
+ opt.start_list_at = NULL;
+ feh_thumbnail_select(winwid, FEH_THUMB(l->data));
+ break;
+ }
+ }
+ }
+
free(s);
return;
@@ -776,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++;
}
- feh_thumbnail_select(winwid, FEH_THUMB(l->data));
+ 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()