Added support for multiple commands per key/button mapping; elegant fix for issue #150
This commit is contained in:
		
							parent
							
								
									06164c29b7
								
							
						
					
					
						commit
						9c92de8584
					
				| @ -102,8 +102,10 @@ static const keymap_t keys[] = { | ||||
| 	{ 0,            XK_R,             t_reload_all,         (arg_t) None }, | ||||
| 
 | ||||
| 	{ 0,            XK_n,             i_navigate,           (arg_t) +1 }, | ||||
| 	{ 0,            XK_n,             i_scroll_to_edge,     (arg_t) (DIR_LEFT | DIR_UP) }, | ||||
| 	{ 0,            XK_space,         i_navigate,           (arg_t) +1 }, | ||||
| 	{ 0,            XK_p,             i_navigate,           (arg_t) -1 }, | ||||
| 	{ 0,            XK_p,             i_scroll_to_edge,     (arg_t) (DIR_LEFT | DIR_UP) }, | ||||
| 	{ 0,            XK_BackSpace,     i_navigate,           (arg_t) -1 }, | ||||
| 	{ 0,            XK_bracketright,  i_navigate,           (arg_t) +10 }, | ||||
| 	{ 0,            XK_bracketleft,   i_navigate,           (arg_t) -10 }, | ||||
|  | ||||
							
								
								
									
										22
									
								
								image.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								image.c
									
									
									
									
									
								
							| @ -687,20 +687,14 @@ bool img_pan_edge(img_t *img, direction_t dir) | ||||
| 	ox = img->x; | ||||
| 	oy = img->y; | ||||
| 
 | ||||
| 	switch (dir) { | ||||
| 		case DIR_LEFT: | ||||
| 			img->x = 0; | ||||
| 			break; | ||||
| 		case DIR_RIGHT: | ||||
| 			img->x = img->win->w - img->w * img->zoom; | ||||
| 			break; | ||||
| 		case DIR_UP: | ||||
| 			img->y = 0; | ||||
| 			break; | ||||
| 		case DIR_DOWN: | ||||
| 			img->y = img->win->h - img->h * img->zoom; | ||||
| 			break; | ||||
| 	} | ||||
| 	if (dir & DIR_LEFT) | ||||
| 		img->x = 0; | ||||
| 	if (dir & DIR_RIGHT) | ||||
| 		img->x = img->win->w - img->w * img->zoom; | ||||
| 	if (dir & DIR_UP) | ||||
| 		img->y = 0; | ||||
| 	if (dir & DIR_DOWN) | ||||
| 		img->y = img->win->h - img->h * img->zoom; | ||||
| 
 | ||||
| 	img_check_pan(img, true); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										12
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								main.c
									
									
									
									
									
								
							| @ -541,6 +541,7 @@ void on_keypress(XKeyEvent *kev) | ||||
| 	unsigned int sh; | ||||
| 	KeySym ksym, shksym; | ||||
| 	char key; | ||||
| 	bool dirty = false; | ||||
| 
 | ||||
| 	if (kev == NULL) | ||||
| 		return; | ||||
| @ -571,16 +572,18 @@ void on_keypress(XKeyEvent *kev) | ||||
| 		    (cmds[keys[i].cmd].mode < 0 || cmds[keys[i].cmd].mode == mode)) | ||||
| 		{ | ||||
| 			if (cmds[keys[i].cmd].func(keys[i].arg)) | ||||
| 				redraw(); | ||||
| 			break; | ||||
| 				dirty = true; | ||||
| 		} | ||||
| 	} | ||||
| 	if (dirty) | ||||
| 		redraw(); | ||||
| 	prefix = 0; | ||||
| } | ||||
| 
 | ||||
| void on_buttonpress(XButtonEvent *bev) | ||||
| { | ||||
| 	int i, sel; | ||||
| 	bool dirty = false; | ||||
| 	static Time firstclick; | ||||
| 
 | ||||
| 	if (bev == NULL) | ||||
| @ -597,10 +600,11 @@ void on_buttonpress(XButtonEvent *bev) | ||||
| 			    (cmds[buttons[i].cmd].mode < 0 || cmds[buttons[i].cmd].mode == mode)) | ||||
| 			{ | ||||
| 				if (cmds[buttons[i].cmd].func(buttons[i].arg)) | ||||
| 					redraw(); | ||||
| 				break; | ||||
| 					dirty = true; | ||||
| 			} | ||||
| 		} | ||||
| 		if (dirty) | ||||
| 			redraw(); | ||||
| 	} else { | ||||
| 		/* thumbnail mode (hard-coded) */ | ||||
| 		switch (bev->button) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert Münnich
						Bert Münnich