mirror of
https://github.com/swaywm/sway.git
synced 2025-11-12 13:29:56 -05:00
Listen to output layout change
This commit is contained in:
parent
f3d880b0ec
commit
c7abb77f22
7 changed files with 43 additions and 30 deletions
|
|
@ -26,13 +26,6 @@ void swayc_descendants_of_type(swayc_t *root, enum swayc_types type,
|
|||
}
|
||||
}
|
||||
|
||||
static void update_root_geometry() {
|
||||
struct wlr_box *box =
|
||||
wlr_output_layout_get_box(root_container.output_layout, NULL);
|
||||
root_container.width = box->width;
|
||||
root_container.height = box->height;
|
||||
}
|
||||
|
||||
static swayc_t *new_swayc(enum swayc_types type) {
|
||||
// next id starts at 1 because 0 is assigned to root_container in layout.c
|
||||
static size_t next_id = 1;
|
||||
|
|
@ -94,7 +87,6 @@ swayc_t *new_output(struct sway_output *sway_output) {
|
|||
sway_log(L_DEBUG, "Creating default workspace %s", ws_name);
|
||||
new_workspace(output, ws_name);
|
||||
free(ws_name);
|
||||
update_root_geometry();
|
||||
return output;
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +187,6 @@ swayc_t *destroy_output(swayc_t *output) {
|
|||
|
||||
sway_log(L_DEBUG, "OUTPUT: Destroying output '%s'", output->name);
|
||||
free_swayc(output);
|
||||
update_root_geometry();
|
||||
|
||||
return &root_container;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <wlr/types/wlr_output.h>
|
||||
#include <wlr/types/wlr_output_layout.h>
|
||||
#include "sway/container.h"
|
||||
#include "sway/layout.h"
|
||||
#include "sway/output.h"
|
||||
#include "sway/view.h"
|
||||
#include "list.h"
|
||||
|
|
@ -14,13 +15,27 @@
|
|||
|
||||
swayc_t root_container;
|
||||
|
||||
static void output_layout_change_notify(struct wl_listener *listener, void *data) {
|
||||
struct wlr_box *box = wlr_output_layout_get_box(
|
||||
root_container.sway_root->output_layout, NULL);
|
||||
root_container.width = box->width;
|
||||
root_container.height = box->height;
|
||||
}
|
||||
|
||||
void init_layout(void) {
|
||||
root_container.id = 0; // normally assigned in new_swayc()
|
||||
root_container.type = C_ROOT;
|
||||
root_container.layout = L_NONE;
|
||||
root_container.name = strdup("root");
|
||||
root_container.children = create_list();
|
||||
root_container.output_layout = wlr_output_layout_create();
|
||||
|
||||
root_container.sway_root = calloc(1, sizeof(*root_container.sway_root));
|
||||
root_container.sway_root->output_layout = wlr_output_layout_create();
|
||||
|
||||
root_container.sway_root->output_layout_change.notify =
|
||||
output_layout_change_notify;
|
||||
wl_signal_add(&root_container.sway_root->output_layout->events.change,
|
||||
&root_container.sway_root->output_layout_change);
|
||||
}
|
||||
|
||||
void add_child(swayc_t *parent, swayc_t *child) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue