mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	Fix crash when using _ToEdge actions when using the default keybinds
This happens because of two separate bugs:
- The action validation failed to verify the data type of the argument
- When adding the fallback keybinds we add them as string but expect them being an int
This commit fixes the first bug.
Fixes 1ee8715d57
actions: use enum for _ToEdge actions
			
			
This commit is contained in:
		
							parent
							
								
									2c14a5a406
								
							
						
					
					
						commit
						8d0ee4811b
					
				
					 1 changed files with 6 additions and 3 deletions
				
			
		| 
						 | 
					@ -257,13 +257,13 @@ action_str_from_arg(struct action_arg *arg)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool
 | 
					static bool
 | 
				
			||||||
arg_value_exists(struct action *action, const char *key)
 | 
					arg_value_exists(struct action *action, const char *key, enum action_arg_type type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	assert(action);
 | 
						assert(action);
 | 
				
			||||||
	assert(key);
 | 
						assert(key);
 | 
				
			||||||
	struct action_arg *arg;
 | 
						struct action_arg *arg;
 | 
				
			||||||
	wl_list_for_each(arg, &action->args, link) {
 | 
						wl_list_for_each(arg, &action->args, link) {
 | 
				
			||||||
		if (!strcasecmp(key, arg->key)) {
 | 
							if (!strcasecmp(key, arg->key) && arg->type == type) {
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -373,6 +373,8 @@ bool
 | 
				
			||||||
action_is_valid(struct action *action)
 | 
					action_is_valid(struct action *action)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *arg_name = NULL;
 | 
						const char *arg_name = NULL;
 | 
				
			||||||
 | 
						enum action_arg_type arg_type = LAB_ACTION_ARG_STR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (action->type) {
 | 
						switch (action->type) {
 | 
				
			||||||
	case ACTION_TYPE_EXECUTE:
 | 
						case ACTION_TYPE_EXECUTE:
 | 
				
			||||||
		arg_name = "command";
 | 
							arg_name = "command";
 | 
				
			||||||
| 
						 | 
					@ -380,6 +382,7 @@ action_is_valid(struct action *action)
 | 
				
			||||||
	case ACTION_TYPE_MOVE_TO_EDGE:
 | 
						case ACTION_TYPE_MOVE_TO_EDGE:
 | 
				
			||||||
	case ACTION_TYPE_SNAP_TO_EDGE:
 | 
						case ACTION_TYPE_SNAP_TO_EDGE:
 | 
				
			||||||
		arg_name = "direction";
 | 
							arg_name = "direction";
 | 
				
			||||||
 | 
							arg_type = LAB_ACTION_ARG_INT;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case ACTION_TYPE_SHOW_MENU:
 | 
						case ACTION_TYPE_SHOW_MENU:
 | 
				
			||||||
		arg_name = "menu";
 | 
							arg_name = "menu";
 | 
				
			||||||
| 
						 | 
					@ -399,7 +402,7 @@ action_is_valid(struct action *action)
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (arg_value_exists(action, arg_name)) {
 | 
						if (arg_value_exists(action, arg_name, arg_type)) {
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue