diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyevents.c | 36 | ||||
| -rw-r--r-- | src/options.c | 13 | ||||
| -rw-r--r-- | src/options.h | 2 | 
3 files changed, 26 insertions, 25 deletions
| diff --git a/src/keyevents.c b/src/keyevents.c index 81e43e7..7940973 100644 --- a/src/keyevents.c +++ b/src/keyevents.c @@ -29,21 +29,19 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  #include "winwidget.h"  #include "options.h" -void feh_event_invoke_action(winwidget winwid, char *action) +void feh_event_invoke_action(winwidget winwid, unsigned char action)  { -	D(("action is '%s'\n", action)); -	D(("winwid is '%p'\n", winwid)); -	if (action) { +	if (opt.actions[action]) {  		if (opt.slideshow) { -		    feh_action_run(FEH_FILE(winwid->file->data), action); -		    winwidget_update_caption(winwid); +			feh_action_run(FEH_FILE(winwid->file->data), opt.actions[action]); +			winwidget_update_caption(winwid); -		    if (! opt.action_hold_slide) -		      slideshow_change_image(winwid, SLIDE_NEXT); +			if (! opt.hold_actions[action]) +				slideshow_change_image(winwid, SLIDE_NEXT);  		} else if ((winwid->type == WIN_TYPE_SINGLE)  				|| (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)) { -			feh_action_run(FEH_FILE(winwid->file->data), action); +			feh_action_run(FEH_FILE(winwid->file->data), opt.actions[action]);  			winwidget_destroy(winwid);  		} else if (winwid->type == WIN_TYPE_THUMBNAIL) {  			printf("actions from the main thumb window aren't currentl supported!\n"); @@ -215,43 +213,43 @@ void feh_event_handle_keypress(XEvent * ev)  	case XK_KP_Enter:  	case XK_0:  	case XK_KP_0: -		feh_event_invoke_action(winwid, opt.actions[0]); +		feh_event_invoke_action(winwid, 0);  		break;  	case XK_1:  	case XK_KP_1: -		feh_event_invoke_action(winwid, opt.actions[1]); +		feh_event_invoke_action(winwid, 1);  		break;  	case XK_2:  	case XK_KP_2: -		feh_event_invoke_action(winwid, opt.actions[2]); +		feh_event_invoke_action(winwid, 2);  		break;  	case XK_3:  	case XK_KP_3: -		feh_event_invoke_action(winwid, opt.actions[3]); +		feh_event_invoke_action(winwid, 3);  		break;  	case XK_4:  	case XK_KP_4: -		feh_event_invoke_action(winwid, opt.actions[4]); +		feh_event_invoke_action(winwid, 4);  		break;  	case XK_5:  	case XK_KP_5: -		feh_event_invoke_action(winwid, opt.actions[5]); +		feh_event_invoke_action(winwid, 5);  		break;  	case XK_6:  	case XK_KP_6: -		feh_event_invoke_action(winwid, opt.actions[6]); +		feh_event_invoke_action(winwid, 6);  		break;  	case XK_7:  	case XK_KP_7: -		feh_event_invoke_action(winwid, opt.actions[7]); +		feh_event_invoke_action(winwid, 7);  		break;  	case XK_8:  	case XK_KP_8: -		feh_event_invoke_action(winwid, opt.actions[8]); +		feh_event_invoke_action(winwid, 8);  		break;  	case XK_9:  	case XK_KP_9: -		feh_event_invoke_action(winwid, opt.actions[9]); +		feh_event_invoke_action(winwid, 9);  		break;  	case XK_KP_Left:  		winwid->im_x += 10; diff --git a/src/options.c b/src/options.c index 182f3d8..2206f3e 100644 --- a/src/options.c +++ b/src/options.c @@ -71,7 +71,6 @@ void init_parse_options(int argc, char **argv)  	opt.next_button = 5;  	opt.draw_actions = 0; -	opt.action_hold_slide = 0;  	opt.rotate_button = 2;  	opt.no_rotate_ctrl_mask = 0; @@ -422,12 +421,12 @@ static void feh_parse_option_array(int argc, char **argv)  		{"index-size"    , 1, 0, 231},  		{"index-dim"     , 1, 0, 232},  		{"thumb-redraw"  , 1, 0, 'J'}, -		{"action-hold-slide", 0, 0, 233},  		{"info"          , 1, 0, 234},  		{0, 0, 0, 0}  	};  	int optch = 0, cmdx = 0; +	int i = 0;  	/* Now to pass some optionarinos */  	while ((optch = getopt_long(argc, argv, stropts, lopts, &cmdx)) != EOF) { @@ -770,9 +769,6 @@ static void feh_parse_option_array(int argc, char **argv)  		case 'J':  			opt.thumb_redraw = atoi(optarg);  			break; -		case 233: -			opt.action_hold_slide = 1; -			break;  		case 234:  			opt.info_cmd = estrdup(optarg);  			break; @@ -790,6 +786,13 @@ static void feh_parse_option_array(int argc, char **argv)  		}  	} +	for (i = 0; i < 10; i++) { +		if (opt.actions[i] && !opt.hold_actions[i] && (opt.actions[i][0] == ';')) { +			opt.hold_actions[i] = 1; +			opt.actions[i] = &opt.actions[i][1]; +		} +	} +  	/* So that we can safely be called again */  	optind = 1;  	return; diff --git a/src/options.h b/src/options.h index 5a187f4..e99c14c 100644 --- a/src/options.h +++ b/src/options.h @@ -66,9 +66,9 @@ struct __fehoptions {  	unsigned char screen_clip;  	unsigned char hide_pointer;  	unsigned char draw_actions; -	unsigned char action_hold_slide;  	unsigned char cache_thumbnails;  	unsigned char cycle_once; +	unsigned char hold_actions[10];  	char *output_file;  	char *output_dir; | 
