summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2016-07-30 09:43:03 -0400
committerLibravatar GitHub <noreply@github.com>2016-07-30 09:43:03 -0400
commite3104a48e387a91b12952089595f447f286f3fea (patch)
tree2bb69da49ca0499b938192899b7d1e4c2f16d7c5
parentFix swaybg sizing on hidpi outputs (diff)
parentrevert border hiding to more recent version (diff)
downloadsway-e3104a48e387a91b12952089595f447f286f3fea.tar.gz
sway-e3104a48e387a91b12952089595f447f286f3fea.tar.zst
sway-e3104a48e387a91b12952089595f447f286f3fea.zip
Merge pull request #804 from thejan2009/misc-border-fix
Misc border fix
-rw-r--r--include/border.h1
-rw-r--r--sway/border.c20
-rw-r--r--sway/layout.c10
3 files changed, 22 insertions, 9 deletions
diff --git a/include/border.h b/include/border.h
index eb7fc656..b629ba46 100644
--- a/include/border.h
+++ b/include/border.h
@@ -20,5 +20,6 @@ void render_view_borders(wlc_handle view);
20void update_view_border(swayc_t *view); 20void update_view_border(swayc_t *view);
21void map_update_view_border(swayc_t *view, void *data); 21void map_update_view_border(swayc_t *view, void *data);
22int get_font_text_height(const char *font); 22int get_font_text_height(const char *font);
23bool should_hide_top_border(swayc_t *con, double y);
23 24
24#endif 25#endif
diff --git a/sway/border.c b/sway/border.c
index d17d8d0c..c1a62bc6 100644
--- a/sway/border.c
+++ b/sway/border.c
@@ -332,10 +332,12 @@ void update_view_border(swayc_t *view) {
332 } 332 }
333 }; 333 };
334 cr = create_border_buffer(view, g, &surface); 334 cr = create_border_buffer(view, g, &surface);
335
336 bool render_top = !should_hide_top_border(view, view->y);
335 if (view == focused) { 337 if (view == focused) {
336 render_borders(view, cr, &config->border_colors.focused, false); 338 render_borders(view, cr, &config->border_colors.focused, render_top);
337 } else { 339 } else {
338 render_borders(view, cr, &config->border_colors.focused_inactive, false); 340 render_borders(view, cr, &config->border_colors.focused_inactive, render_top);
339 } 341 }
340 342
341 // generate container titles 343 // generate container titles
@@ -418,3 +420,17 @@ void render_view_borders(wlc_handle view) {
418 wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer); 420 wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer);
419 } 421 }
420} 422}
423
424bool should_hide_top_border(swayc_t *con, double y) {
425 // returns true if container is child of tabbed/stacked layout and is
426 // sharing top border with tabbed titlebar
427 swayc_t *par = con->parent;
428 while (par->type != C_WORKSPACE) {
429 if (par->layout == L_TABBED || par->layout == L_STACKED) {
430 return con->y == y;
431 }
432 con = par;
433 par = par->parent;
434 }
435 return false;
436}
diff --git a/sway/layout.c b/sway/layout.c
index db9787f3..6502d930 100644
--- a/sway/layout.c
+++ b/sway/layout.c
@@ -579,21 +579,17 @@ void update_geometry(swayc_t *container) {
579 border_left = 0; 579 border_left = 0;
580 } 580 }
581 581
582 if (geometry.origin.x + geometry.size.w == size.w || 582 if (geometry.origin.x + geometry.size.w == workspace->x + workspace->width) {
583 geometry.size.w == container->x + container->width) {
584 // should work for swaybar at right
585 border_right = 0; 583 border_right = 0;
586 } 584 }
587 } 585 }
588 586
589 if (config->hide_edge_borders == E_VERTICAL || config->hide_edge_borders == E_BOTH) { 587 if (config->hide_edge_borders == E_VERTICAL || config->hide_edge_borders == E_BOTH) {
590 if (geometry.origin.y == workspace->y) { 588 if (geometry.origin.y == workspace->y || should_hide_top_border(container, geometry.origin.y)) {
591 border_top = 0; 589 border_top = 0;
592 } 590 }
593 591
594 if (geometry.origin.y + geometry.size.h == size.h || 592 if (geometry.origin.y + geometry.size.h == workspace->y + workspace->height) {
595 geometry.size.h == container->y + container->height) {
596 // this works for swaybar at bottom
597 border_bottom = 0; 593 border_bottom = 0;
598 } 594 }
599 } 595 }