Bugfix: Fix initialization / assignments when RandR is missing
This commit is contained in:
parent
3f45d3c447
commit
5db97dc473
|
@ -35,12 +35,21 @@ void disable_randr(xcb_connection_t *conn);
|
|||
* Initializes a CT_OUTPUT Con (searches existing ones from inplace restart
|
||||
* before) to use for the given Output.
|
||||
*
|
||||
* XXX: for assignments, we probably need to move workspace creation from here
|
||||
* to after the loop in randr_query_outputs().
|
||||
*
|
||||
*/
|
||||
void output_init_con(Output *output);
|
||||
|
||||
/**
|
||||
* Initializes at least one workspace for this output, trying the following
|
||||
* steps until there is at least one workspace:
|
||||
*
|
||||
* • Move existing workspaces, which are assigned to be on the given output, to
|
||||
* the output.
|
||||
* • Create the first assigned workspace for this output.
|
||||
* • Create the first unused workspace.
|
||||
*
|
||||
*/
|
||||
void init_ws_for_output(Output *output, Con *content);
|
||||
|
||||
/**
|
||||
* Initializes the specified output, assigning the specified workspace to it.
|
||||
*
|
||||
|
|
|
@ -213,6 +213,7 @@ void disable_randr(xcb_connection_t *conn) {
|
|||
s->rect.height = root_screen->height_in_pixels;
|
||||
s->name = "xroot-0";
|
||||
output_init_con(s);
|
||||
init_ws_for_output(s, output_get_content(s->con));
|
||||
|
||||
TAILQ_INSERT_TAIL(&outputs, s, outputs);
|
||||
|
||||
|
@ -325,7 +326,7 @@ void output_init_con(Output *output) {
|
|||
* • Create the first unused workspace.
|
||||
*
|
||||
*/
|
||||
static void init_ws_for_output(Output *output, Con *content) {
|
||||
void init_ws_for_output(Output *output, Con *content) {
|
||||
char *name;
|
||||
|
||||
/* go through all assignments and move the existing workspaces to this output */
|
||||
|
@ -371,6 +372,7 @@ static void init_ws_for_output(Output *output, Con *content) {
|
|||
GREP_FIRST(visible, content, child->fullscreen_mode == CF_OUTPUT);
|
||||
if (!visible) {
|
||||
visible = TAILQ_FIRST(&(content->nodes_head));
|
||||
focused = content;
|
||||
workspace_show(visible->name);
|
||||
}
|
||||
return;
|
||||
|
@ -383,6 +385,7 @@ static void init_ws_for_output(Output *output, Con *content) {
|
|||
|
||||
LOG("Initializing first assigned workspace \"%s\" for output \"%s\"\n",
|
||||
assignment->name, assignment->output);
|
||||
focused = content;
|
||||
workspace_show(assignment->name);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ static void query_screens(xcb_connection_t *conn) {
|
|||
TAILQ_INSERT_HEAD(&outputs, s, outputs);
|
||||
else TAILQ_INSERT_TAIL(&outputs, s, outputs);
|
||||
output_init_con(s);
|
||||
init_ws_for_output(s, output_get_content(s->con));
|
||||
num_screens++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue