nsxivc666d30
Added it_toggle_bar command; default mapping: XK_b
+30 −0
7 files changed
- M README.md +1 −0
- M commands.c +10 −0
- M commands.h +1 −0
- M config.def.h +1 −0
- M sxiv.1 +3 −0
- M window.c +13 −0
- M window.h +1 −0
| @@ -88,6 +88,7 @@ The following general key commands are available: | |||
| 88 | 88 | ||
| 89 | 89 | f Toggle fullscreen mode (requires an EWMH/NetWM compliant | |
| 90 | 90 | window manager) | |
| 91 | + | b Toggle visibility of info bar on bottom of window | |
| 91 | 92 | A Toggle visibility of alpha-channel, i.e. transparency | |
| 92 | 93 | ||
| 93 | 94 | r Reload image | |
| @@ -76,6 +76,7 @@ bool it_switch_mode(arg_t a) { | |||
| 76 | 76 | ||
| 77 | 77 | bool it_toggle_fullscreen(arg_t a) { | |
| 78 | 78 | win_toggle_fullscreen(&win); | |
| 79 | + | /* redraw after next ConfigureNotify event */ | |
| 79 | 80 | set_timeout(redraw, TO_REDRAW_RESIZE, false); | |
| 80 | 81 | if (mode == MODE_IMAGE) | |
| 81 | 82 | img.checkpan = true; | |
| @@ -84,6 +85,15 @@ bool it_toggle_fullscreen(arg_t a) { | |||
| 84 | 85 | return false; | |
| 85 | 86 | } | |
| 86 | 87 | ||
| 88 | + | bool it_toggle_bar(arg_t a) { | |
| 89 | + | win_toggle_bar(&win); | |
| 90 | + | if (mode == MODE_IMAGE) | |
| 91 | + | img.checkpan = img.dirty = true; | |
| 92 | + | else | |
| 93 | + | tns.dirty = true; | |
| 94 | + | return true; | |
| 95 | + | } | |
| 96 | + | ||
| 87 | 97 | bool it_reload_image(arg_t a) { | |
| 88 | 98 | if (mode == MODE_IMAGE) { | |
| 89 | 99 | load_image(fileidx); | |
| @@ -44,6 +44,7 @@ typedef struct { | |||
| 44 | 44 | bool it_quit(arg_t); | |
| 45 | 45 | bool it_switch_mode(arg_t); | |
| 46 | 46 | bool it_toggle_fullscreen(arg_t); | |
| 47 | + | bool it_toggle_bar(arg_t); | |
| 47 | 48 | bool it_reload_image(arg_t); | |
| 48 | 49 | bool it_remove_image(arg_t); | |
| 49 | 50 | bool i_navigate(arg_t); | |
| @@ -60,6 +60,7 @@ static const keymap_t keys[] = { | |||
| 60 | 60 | { false, XK_q, it_quit, (arg_t) None }, | |
| 61 | 61 | { false, XK_Return, it_switch_mode, (arg_t) None }, | |
| 62 | 62 | { false, XK_f, it_toggle_fullscreen, (arg_t) None }, | |
| 63 | + | { false, XK_b, it_toggle_bar, (arg_t) None }, | |
| 63 | 64 | ||
| 64 | 65 | { false, XK_r, it_reload_image, (arg_t) None }, | |
| 65 | 66 | { false, XK_D, it_remove_image, (arg_t) None }, | |
| @@ -105,6 +105,9 @@ Go to the last image, or image number | |||
| 105 | 105 | .B f | |
| 106 | 106 | Toggle fullscreen mode. | |
| 107 | 107 | .TP | |
| 108 | + | .B b | |
| 109 | + | Toggle visibility of info bar on bottom of window. | |
| 110 | + | .TP | |
| 108 | 111 | .B A | |
| 109 | 112 | Toggle visibility of alpha-channel, i.e. image transparency. | |
| 110 | 113 | .TP | |
| @@ -306,6 +306,19 @@ void win_toggle_fullscreen(win_t *win) { | |||
| 306 | 306 | SubstructureNotifyMask | SubstructureRedirectMask, &ev); | |
| 307 | 307 | } | |
| 308 | 308 | ||
| 309 | + | void win_toggle_bar(win_t *win) { | |
| 310 | + | if (win == NULL || win->xwin == None) | |
| 311 | + | return; | |
| 312 | + | ||
| 313 | + | if (win->barh != 0) { | |
| 314 | + | win->h += win->barh; | |
| 315 | + | win->barh = 0; | |
| 316 | + | } else { | |
| 317 | + | win->barh = font.ascent + font.descent + 2 * V_TEXT_PAD; | |
| 318 | + | win->h -= win->barh; | |
| 319 | + | } | |
| 320 | + | } | |
| 321 | + | ||
| 309 | 322 | void win_clear(win_t *win) { | |
| 310 | 323 | win_env_t *e; | |
| 311 | 324 | ||
| @@ -69,6 +69,7 @@ bool win_configure(win_t*, XConfigureEvent*); | |||
| 69 | 69 | bool win_moveresize(win_t*, int, int, unsigned int, unsigned int); | |
| 70 | 70 | ||
| 71 | 71 | void win_toggle_fullscreen(win_t*); | |
| 72 | + | void win_toggle_bar(win_t*); | |
| 72 | 73 | ||
| 73 | 74 | void win_clear(win_t*); | |
| 74 | 75 | void win_draw(win_t*); | |