Make named workspace assignments work again

Please note that you need a quoted string for the workspace name.
Example:
    workspace "1: www" output HDMI2

Fixes: #456
next
Michael Stapelberg 2011-10-27 22:43:53 +01:00
parent a4cb4a64d4
commit 5227b29b0f
1 changed files with 33 additions and 30 deletions

View File

@ -741,6 +741,7 @@ void parse_file(const char *f) {
%type <number> bar_mode_mode
%type <string> command
%type <string> word_or_number
%type <string> qstring_or_number
%type <string> optional_workspace_name
%type <string> workspace_name
%type <string> window_class
@ -935,7 +936,10 @@ criterion:
}
;
qstring_or_number:
QUOTEDSTRING
| NUMBER { sasprintf(&$$, "%d", $1); }
;
word_or_number:
WORD
@ -1344,20 +1348,20 @@ workspace_bar:
;
workspace:
TOKWORKSPACE NUMBER TOKOUTPUT OUTPUT optional_workspace_name
TOKWORKSPACE qstring_or_number TOKOUTPUT OUTPUT optional_workspace_name
{
int ws_num = $2;
if (ws_num < 1) {
DLOG("Invalid workspace assignment, workspace number %d out of range\n", ws_num);
} else {
char *ws_name = NULL;
if ($5 == NULL) {
sasprintf(&ws_name, "%d", ws_num);
} else {
char *ws_name = $2;
if ($5 != NULL) {
ELOG("The old (v3) syntax workspace <number> output <output> <name> is deprecated.\n");
ELOG("Please use the new syntax: workspace \"<workspace>\" output <output>\n");
ELOG("In your case, the following should work:\n");
ELOG(" workspace \"%s\" output %s\n", $5, $4);
ws_name = $5;
context->has_warnings = true;
}
DLOG("Should assign workspace %s to output %s\n", ws_name, $4);
DLOG("Assigning workspace \"%s\" to output \"%s\"\n", ws_name, $4);
/* Check for earlier assignments of the same workspace so that we
* dont have assignments of a single workspace to different
* outputs */
@ -1378,7 +1382,6 @@ workspace:
TAILQ_INSERT_TAIL(&ws_assignments, assignment, ws_assignments);
}
}
}
| TOKWORKSPACE NUMBER workspace_name
{
int ws_num = $2;