aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--options.c8
-rw-r--r--options.h1
-rw-r--r--window.c19
3 files changed, 20 insertions, 8 deletions
diff --git a/options.c b/options.c
index a3f4143..38bc59e 100644
--- a/options.c
+++ b/options.c
@@ -29,7 +29,7 @@ options_t _options;
const options_t *options = (const options_t*) &_options;
void print_usage() {
- printf("usage: sxiv [-dfhpqsvZ] [-g GEOMETRY] [-z ZOOM] FILES...\n");
+ printf("usage: sxiv [-dFfhpqsvZ] [-g GEOMETRY] [-z ZOOM] FILES...\n");
}
void print_version() {
@@ -45,12 +45,13 @@ void parse_options(int argc, char **argv) {
_options.zoom = 1.0;
_options.aa = 1;
+ _options.fixed = 0;
_options.fullscreen = 0;
_options.geometry = NULL;
_options.quiet = 0;
- while ((opt = getopt(argc, argv, "dfg:hpqsvZz:")) != -1) {
+ while ((opt = getopt(argc, argv, "dFfg:hpqsvZz:")) != -1) {
switch (opt) {
case '?':
print_usage();
@@ -58,6 +59,9 @@ void parse_options(int argc, char **argv) {
case 'd':
_options.scalemode = SCALE_DOWN;
break;
+ case 'F':
+ _options.fixed = 1;
+ break;
case 'f':
_options.fullscreen = 1;
break;
diff --git a/options.h b/options.h
index 7de4f0f..19a0c6b 100644
--- a/options.h
+++ b/options.h
@@ -29,6 +29,7 @@ typedef struct options_s {
float zoom;
unsigned char aa;
+ unsigned char fixed;
unsigned char fullscreen;
char *geometry;
diff --git a/window.c b/window.c
index 3904fe8..a7a1121 100644
--- a/window.c
+++ b/window.c
@@ -33,7 +33,8 @@ static GC bgc;
void win_open(win_t *win) {
win_env_t *e;
- XClassHint *classhint;
+ XClassHint classhint;
+ XSizeHints sizehints;
XColor bgcol;
int gmask;
@@ -99,11 +100,17 @@ void win_open(win_t *win) {
win_set_title(win, "sxiv");
- if ((classhint = XAllocClassHint())) {
- classhint->res_name = "sxiv";
- classhint->res_class = "sxiv";
- XSetClassHint(e->dpy, win->xwin, classhint);
- XFree(classhint);
+ classhint.res_name = "sxiv";
+ classhint.res_class = "sxiv";
+ XSetClassHint(e->dpy, win->xwin, &classhint);
+
+ if (options->fixed) {
+ sizehints.flags = PMinSize | PMaxSize;
+ sizehints.min_width = win->w;
+ sizehints.max_width = win->w;
+ sizehints.min_height = win->h;
+ sizehints.max_height = win->h;
+ XSetWMNormalHints(e->dpy, win->xwin, &sizehints);
}
XMapWindow(e->dpy, win->xwin);