diff options
author | Bert <ber.t@gmx.com> | 2011-02-19 09:47:53 +0100 |
---|---|---|
committer | Bert <ber.t@gmx.com> | 2011-02-19 09:47:53 +0100 |
commit | a367d35ba0f9edf8a01f7d98d9f58df9df292c15 (patch) | |
tree | 23bb1e805eac062c9902f0d7a61010c4fb2ed2dd /thumbs.c | |
parent | c6726ed331ed1fbe72fd28f48ebe41c4ccd721e0 (diff) |
Update title when moving selection
Diffstat (limited to 'thumbs.c')
-rw-r--r-- | thumbs.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -35,6 +35,7 @@ void tns_init(tns_t *tns, int cnt) { tns->cnt = tns->first = tns->sel = 0; tns->thumbs = (thumb_t*) s_malloc(cnt * sizeof(thumb_t)); memset(tns->thumbs, 0, cnt * sizeof(thumb_t)); + tns->dirty = 0; } void tns_free(tns_t *tns, win_t *win) { @@ -81,12 +82,14 @@ void tns_load(tns_t *tns, win_t *win, const char *filename) { imlib_render_image_part_on_drawable_at_size(0, 0, w, h, 0, 0, t->w, t->h); imlib_free_image(); + + tns->dirty = 1; } void tns_render(tns_t *tns, win_t *win) { int i, cnt, x, y; - if (!tns || !win) + if (!tns || !tns->dirty || !win) return; tns->cols = MAX(1, win->w / thumb_dim); @@ -117,6 +120,8 @@ void tns_render(tns_t *tns, win_t *win) { } } + tns->dirty = 0; + tns_highlight(tns, win, -1); } @@ -138,13 +143,13 @@ void tns_highlight(tns_t *tns, win_t *win, int old) { win_draw(win); } -void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { +int tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { int sel, old; if (!tns || !win) - return; + return 0; - sel = tns->sel; + sel = old = tns->sel; switch (dir) { case MOVE_LEFT: @@ -165,11 +170,12 @@ void tns_move_selection(tns_t *tns, win_t *win, movedir_t dir) { break; } - if (sel != tns->sel && tns->thumbs[sel].x != 0) { - old = tns->sel; + if (sel != old && tns->thumbs[sel].x != 0) { tns->sel = sel; tns_highlight(tns, win, old); } + + return sel != old; } int tns_translate(tns_t *tns, int x, int y) { |