New option: -F, fixed/floating window
This commit is contained in:
		
							parent
							
								
									8fb3110ebb
								
							
						
					
					
						commit
						f2ceac2f8a
					
				| @ -29,7 +29,7 @@ options_t _options; | |||||||
| const options_t *options = (const options_t*) &_options; | const options_t *options = (const options_t*) &_options; | ||||||
| 
 | 
 | ||||||
| void print_usage() { | 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() { | void print_version() { | ||||||
| @ -45,12 +45,13 @@ void parse_options(int argc, char **argv) { | |||||||
| 	_options.zoom = 1.0; | 	_options.zoom = 1.0; | ||||||
| 	_options.aa = 1; | 	_options.aa = 1; | ||||||
| 
 | 
 | ||||||
|  | 	_options.fixed = 0; | ||||||
| 	_options.fullscreen = 0; | 	_options.fullscreen = 0; | ||||||
| 	_options.geometry = NULL; | 	_options.geometry = NULL; | ||||||
| 
 | 
 | ||||||
| 	_options.quiet = 0; | 	_options.quiet = 0; | ||||||
| 
 | 
 | ||||||
| 	while ((opt = getopt(argc, argv, "dfg:hpqsvZz:")) != -1) { | 	while ((opt = getopt(argc, argv, "dFfg:hpqsvZz:")) != -1) { | ||||||
| 		switch (opt) { | 		switch (opt) { | ||||||
| 			case '?': | 			case '?': | ||||||
| 				print_usage(); | 				print_usage(); | ||||||
| @ -58,6 +59,9 @@ void parse_options(int argc, char **argv) { | |||||||
| 			case 'd': | 			case 'd': | ||||||
| 				_options.scalemode = SCALE_DOWN; | 				_options.scalemode = SCALE_DOWN; | ||||||
| 				break; | 				break; | ||||||
|  | 			case 'F': | ||||||
|  | 				_options.fixed = 1; | ||||||
|  | 				break; | ||||||
| 			case 'f': | 			case 'f': | ||||||
| 				_options.fullscreen = 1; | 				_options.fullscreen = 1; | ||||||
| 				break; | 				break; | ||||||
|  | |||||||
| @ -29,6 +29,7 @@ typedef struct options_s { | |||||||
| 	float zoom; | 	float zoom; | ||||||
| 	unsigned char aa; | 	unsigned char aa; | ||||||
| 
 | 
 | ||||||
|  | 	unsigned char fixed; | ||||||
| 	unsigned char fullscreen; | 	unsigned char fullscreen; | ||||||
| 	char *geometry; | 	char *geometry; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								window.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								window.c
									
									
									
									
									
								
							| @ -33,7 +33,8 @@ static GC bgc; | |||||||
| 
 | 
 | ||||||
| void win_open(win_t *win) { | void win_open(win_t *win) { | ||||||
| 	win_env_t *e; | 	win_env_t *e; | ||||||
| 	XClassHint *classhint; | 	XClassHint classhint; | ||||||
|  | 	XSizeHints sizehints; | ||||||
| 	XColor bgcol; | 	XColor bgcol; | ||||||
| 	int gmask; | 	int gmask; | ||||||
| 
 | 
 | ||||||
| @ -99,11 +100,17 @@ void win_open(win_t *win) { | |||||||
| 
 | 
 | ||||||
| 	win_set_title(win, "sxiv"); | 	win_set_title(win, "sxiv"); | ||||||
| 
 | 
 | ||||||
| 	if ((classhint = XAllocClassHint())) { | 	classhint.res_name = "sxiv"; | ||||||
| 		classhint->res_name = "sxiv"; | 	classhint.res_class = "sxiv"; | ||||||
| 		classhint->res_class = "sxiv"; | 	XSetClassHint(e->dpy, win->xwin, &classhint); | ||||||
| 		XSetClassHint(e->dpy, win->xwin, classhint); | 
 | ||||||
| 		XFree(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); | 	XMapWindow(e->dpy, win->xwin); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert