Krolyxon
Commit 603e664

Branches

Refs →

nsxiv603e664

Nicer fit window to image

Author
Bert
Date
2011-02-06 17:40 +0100
Parent
cbf6aae
Commit
603e664f7c9fc5cb228eef90fdaa501ac5dfa3bb

+18 −11

4 files changed

  1. M Makefile +1 −1
  2. M main.c +10 −2
  3. M window.c +6 −7
  4. M window.h +1 −1
M Makefile View
@@ -1,6 +1,6 @@
11 all: sxiv
22
3−VERSION=git-20110204
3+VERSION=git-20110206
44
55 CC?=gcc
66 PREFIX?=/usr/local
M main.c View
@@ -222,6 +222,8 @@ unsigned char timeout;
222222 int mox, moy;
223223
224224 void on_keypress(XKeyEvent *kev) {
225+ int x, y;
226+ unsigned int w, h;
225227 char key;
226228 KeySym ksym;
227229 int changed;
@@ -330,8 +332,14 @@ void on_keypress(XKeyEvent *kev) {
330332 /* render on next configurenotify */
331333 break;
332334 case XK_W:
333− if ((changed = win_resize(&win, img.w * img.zoom, img.h * img.zoom)))
334− img.checkpan = 1;
335+ x = win.x + img.x;
336+ y = win.y + img.y;
337+ w = img.w * img.zoom;
338+ h = img.h * img.zoom;
339+ if ((changed = win_moveresize(&win, x, y, w, h))) {
340+ img.x = x - win.x;
341+ img.y = y - win.y;
342+ }
335343 break;
336344
337345 /* miscellaneous */
M window.c View
@@ -157,24 +157,23 @@ int win_configure(win_t *win, XConfigureEvent *c) {
157157 return changed;
158158 }
159159
160−int win_resize(win_t *win, unsigned int w, unsigned int h) {
160+int win_moveresize(win_t *win, int x, int y, unsigned int w, unsigned int h) {
161161 if (!win)
162162 return 0;
163163
164+ x = MAX(0, x);
165+ y = MAX(0, y);
164166 w = MIN(w, win->env.scrw - 2 * win->bw);
165167 h = MIN(h, win->env.scrh - 2 * win->bw);
166168
167− if (win->w == w && win->h == h)
169+ if (win->x == x && win->y == y && win->w == w && win->h == h)
168170 return 0;
169171
172+ win->x = x;
173+ win->y = y;
170174 win->w = w;
171175 win->h = h;
172176
173− if (win->x + w + 2 * win->bw > win->env.scrw)
174− win->x = win->env.scrw - w - 2 * win->bw;
175− if (win->y + h + 2 * win->bw > win->env.scrh)
176− win->y = win->env.scrh - h - 2 * win->bw;
177−
178177 if (options->fixed)
179178 win_set_sizehints(win);
180179
M window.h View
@@ -57,7 +57,7 @@ void win_open(win_t*);
5757 void win_close(win_t*);
5858
5959 int win_configure(win_t*, XConfigureEvent*);
60−int win_resize(win_t*, unsigned int, unsigned int);
60+int win_moveresize(win_t*, int, int, unsigned int, unsigned int);
6161
6262 void win_toggle_fullscreen(win_t*);
6363