aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-05-05 20:32:31 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-05-05 20:32:31 +1000
commite83e5487be4142af290e772199c2870d6140be46 (patch)
treed88f77c7ca8d54d8a64c3e713a05c6b9d18c59f7
parentfbcbbb976c29bb2c4b1bc6aeb6331acd10c70f5f (diff)
Use scissor to render title texture
This allows the title's texture to always be the full width of the text, and clipped at render time according to the desired width (eg. tabs...). As an added bonus, the texture no longer needs to be updated when containers are arranged.
-rw-r--r--sway/desktop/output.c8
-rw-r--r--sway/tree/arrange.c1
-rw-r--r--sway/tree/container.c6
3 files changed, 3 insertions, 12 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 03af4239..d17a6e14 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -308,12 +308,10 @@ static void render_container_simple_border_normal(struct sway_output *output,
// Title text
if (title_texture) {
- double x = (con->x + con->sway_view->border_thickness)
- * output->wlr_output->scale;
- double y = (con->y + con->sway_view->border_thickness)
- * output->wlr_output->scale;
+ wlr_renderer_scissor(renderer, &box);
wlr_render_texture(renderer, title_texture,
- output->wlr_output->transform_matrix, x, y, 1);
+ output->wlr_output->transform_matrix, box.x, box.y, 1);
+ wlr_renderer_scissor(renderer, NULL);
}
}
diff --git a/sway/tree/arrange.c b/sway/tree/arrange.c
index 1299beb6..83bb20fb 100644
--- a/sway/tree/arrange.c
+++ b/sway/tree/arrange.c
@@ -203,7 +203,6 @@ void arrange_children_of(struct sway_container *parent) {
} else {
arrange_children_of(child);
}
- container_update_title_textures(child);
}
container_damage_whole(parent);
update_debug_tree();
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 3746ad81..9fb47020 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -584,12 +584,6 @@ static void update_title_texture(struct sway_container *con,
get_text_size(c, config->font, &width, NULL, scale, false, "%s", con->name);
cairo_destroy(c);
- int borders = (con->type == C_VIEW ? con->sway_view->border_thickness :
- config->border_thickness) * 2 * scale;
- if (width > con->width * scale - borders) {
- width = con->width * scale - borders;
- }
-
cairo_surface_t *surface = cairo_image_surface_create(
CAIRO_FORMAT_ARGB32, width, height);
cairo_t *cairo = cairo_create(surface);