aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sway/tree/container.h1
-rw-r--r--sway/desktop/render.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index 5c368df2..2c973f71 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -285,6 +285,7 @@ bool container_is_fullscreen_or_child(struct sway_container *container);
/**
* Return the output which will be used for scale purposes.
* This is the most recently entered output.
+ * If the container is not on any output, return NULL.
*/
struct sway_output *container_get_effective_output(struct sway_container *con);
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index 20832cc4..908ad819 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -519,7 +519,11 @@ static void render_titlebar(struct sway_output *output,
wlr_texture_get_size(title_texture,
&texture_box.width, &texture_box.height);
- float title_scale = container_get_effective_output(con)->wlr_output->scale;
+ // The effective output may be NULL when con is not on any output.
+ // This can happen because we render all children of containers,
+ // even those that are out of the bounds of any output.
+ struct sway_output *effective = container_get_effective_output(con);
+ float title_scale = effective ? effective->wlr_output->scale : output_scale;
texture_box.width = texture_box.width * output_scale / title_scale;
texture_box.height = texture_box.height * output_scale / title_scale;
ob_title_width = texture_box.width;