GList *list;
}
-%token <integer> INTEGER;
+%token <integer> INTEGER
%token <string> STRING
%token <string> FIELD
-%token <string> EXECUTE
-%token <string> RESTART
%token <string> DESKTOP
%type <list> fields
config:
| config '\n'
| config fields FIELD '\n' { addbinding($2, $3, NULL, 0); }
- | config fields DESKTOP INTEGER '\n' { addbinding($2, $3, NULL, $4); }
- | config fields RESTART '\n' { addbinding($2, $3, NULL, 0); }
- | config fields EXECUTE STRING '\n' { addbinding($2, $3, $4, 0); }
- | config fields RESTART STRING '\n' { addbinding($2, $3, $4, 0); }
+ | config fields FIELD INTEGER '\n' { addbinding($2, $3, NULL, $4); }
+ | config fields FIELD STRING '\n' { addbinding($2, $3, $4, 0); }
;
fields:
- FIELD { $$ = g_list_prepend(NULL, $1); }
- | fields FIELD { $$ = g_list_prepend($1, $2); }
+ FIELD { $$ = g_list_append(NULL, $1); }
+ | fields FIELD { $$ = g_list_append($1, $2); }
;
%%
/* these have extra data! */
if (a->func == action_execute || a->func == action_restart)
a->data.execute.path = apath;
- if (a->func == action_desktop)
- a->data.desktop.desk = (unsigned) num + 1;
+ else
+ g_free(apath);
+ if (a->func == action_desktop || a->func == action_send_to_desktop)
+ a->data.desktop.desk = (unsigned) num - 1;
+ if (a->func == action_move_relative_horz ||
+ a->func == action_move_relative_vert ||
+ a->func == action_resize_relative_horz ||
+ a->func == action_resize_relative_vert)
+ a->data.relative.delta = num;
if (!kbind(keylist, a)) {
action_free(a);