Krolyxon
Commit 87a1ace

Branches

Refs →

nsxiv87a1ace

(Un)mark single image through generic function

Author
Bert Münnich
Date
2018-06-09 13:12 +0200
Parent
1892ed9
Commit
87a1ace8a1cb83132f791cb19c3fa31b9b6e3f3f

+18 −14

2 files changed

  1. M commands.c +6 −14
  2. M main.c +12 −0
M commands.c View
@@ -27,6 +27,7 @@
2727
2828 void remove_file(int, bool);
2929 void load_image(int);
30+bool mark_image(int, bool);
3031 void close_info(void);
3132 void open_info(void);
3233 int ptr_third_x(void);
@@ -193,12 +194,8 @@ bool cg_zoom(arg_t d)
193194
194195 bool cg_toggle_image_mark(arg_t _)
195196 {
196− files[fileidx].flags ^= FF_MARK;
197− markcnt += files[fileidx].flags & FF_MARK ? 1 : -1;
198− if (mode == MODE_THUMB)
199− tns_mark(&tns, fileidx, !!(files[fileidx].flags & FF_MARK));
200197 markidx = fileidx;
201− return true;
198+ return mark_image(fileidx, !(files[fileidx].flags & FF_MARK));
202199 }
203200
204201 bool cg_reverse_marks(arg_t _)
@@ -217,18 +214,13 @@ bool cg_reverse_marks(arg_t _)
217214 bool cg_mark_range(arg_t _)
218215 {
219216 int i, d = fileidx < markidx ? 1 : -1;
220− int flag = files[markidx].flags & FF_MARK;
221− int oldmarkcnt = markcnt;
217+ bool dirty = false, on = !!(files[markidx].flags & FF_MARK);
222218
223219 for (i = fileidx; i != markidx; i += d) {
224− if ((files[i].flags & FF_MARK) ^ flag) {
225− files[i].flags = (files[i].flags & ~FF_MARK) | flag;
226− markcnt += flag ? 1 : -1;
227− if (mode == MODE_THUMB)
228− tns_mark(&tns, i, !!flag);
229− }
220+ if (mark_image(i, on))
221+ dirty = true;
230222 }
231− return markcnt != oldmarkcnt;
223+ return dirty;
232224 }
233225
234226 bool cg_unmark_all(arg_t _)
M main.c View
@@ -321,6 +321,18 @@ void load_image(int new)
321321 reset_timeout(animate);
322322 }
323323
324+bool mark_image(int n, bool on)
325+{
326+ if (!!(files[n].flags & FF_MARK) != on) {
327+ files[n].flags ^= FF_MARK;
328+ markcnt += on ? 1 : -1;
329+ if (mode == MODE_THUMB)
330+ tns_mark(&tns, n, on);
331+ return true;
332+ }
333+ return false;
334+}
335+
324336 void bar_put(win_bar_t *bar, const char *fmt, ...)
325337 {
326338 size_t len = bar->size - (bar->p - bar->buf), n;