Merge pull request #1553 from Airblader/feature-remove-output-assignment

Remove the A_TO_OUTPUT option
next
Michael Stapelberg 2015-03-16 22:40:25 +01:00
commit d9c2ce0023
3 changed files with 14 additions and 22 deletions

View File

@ -460,7 +460,6 @@ struct Assignment {
*
* A_COMMAND = run the specified command for the matching window
* A_TO_WORKSPACE = assign the matching window to the specified workspace
* A_TO_OUTPUT = assign the matching window to the specified output
*
* While the type is a bitmask, only one value can be set at a time. It is
* a bitmask to allow filtering for multiple types, for example in the
@ -470,18 +469,16 @@ struct Assignment {
enum {
A_ANY = 0,
A_COMMAND = (1 << 0),
A_TO_WORKSPACE = (1 << 1),
A_TO_OUTPUT = (1 << 2)
A_TO_WORKSPACE = (1 << 1)
} type;
/** the criteria to check if a window matches */
Match match;
/** destination workspace/output/command, depending on the type */
/** destination workspace/command, depending on the type */
union {
char *command;
char *workspace;
char *output;
} dest;
TAILQ_ENTRY(Assignment) assignments;

View File

@ -158,8 +158,6 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
assign = TAILQ_FIRST(&assignments);
if (assign->type == A_TO_WORKSPACE)
FREE(assign->dest.workspace);
else if (assign->type == A_TO_OUTPUT)
FREE(assign->dest.output);
else if (assign->type == A_COMMAND)
FREE(assign->dest.command);
match_free(&(assign->match));

View File

@ -253,23 +253,20 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
/* See if any container swallows this new window */
nc = con_for_window(search_at, cwindow, &match);
if (nc == NULL) {
/* If not, check if it is assigned to a specific workspace / output */
if ((assignment = assignment_for(cwindow, A_TO_WORKSPACE | A_TO_OUTPUT))) {
/* If not, check if it is assigned to a specific workspace */
if ((assignment = assignment_for(cwindow, A_TO_WORKSPACE))) {
DLOG("Assignment matches (%p)\n", match);
if (assignment->type == A_TO_WORKSPACE) {
Con *assigned_ws = workspace_get(assignment->dest.workspace, NULL);
nc = con_descend_tiling_focused(assigned_ws);
DLOG("focused on ws %s: %p / %s\n", assigned_ws->name, nc, nc->name);
if (nc->type == CT_WORKSPACE)
nc = tree_open_con(nc, cwindow);
else
nc = tree_open_con(nc->parent, cwindow);
Con *assigned_ws = workspace_get(assignment->dest.workspace, NULL);
nc = con_descend_tiling_focused(assigned_ws);
DLOG("focused on ws %s: %p / %s\n", assigned_ws->name, nc, nc->name);
if (nc->type == CT_WORKSPACE)
nc = tree_open_con(nc, cwindow);
else
nc = tree_open_con(nc->parent, cwindow);
/* set the urgency hint on the window if the workspace is not visible */
if (!workspace_is_visible(assigned_ws))
urgency_hint = true;
}
/* TODO: handle assignments with type == A_TO_OUTPUT */
/* set the urgency hint on the window if the workspace is not visible */
if (!workspace_is_visible(assigned_ws))
urgency_hint = true;
} else if (startup_ws) {
/* If its not assigned, but was started on a specific workspace,
* we want to open it there */