diff options
author | Zandr Martin <zandrmartin@gmail.com> | 2016-07-30 08:44:21 -0500 |
---|---|---|
committer | Zandr Martin <zandrmartin@gmail.com> | 2016-07-30 08:44:21 -0500 |
commit | e6af5f8bdbd98d1ece927b67d9ef881f3511e087 (patch) | |
tree | 1867cf64da858a89a2fda1884bf25c2809770f6c | |
parent | remove outdated (when wlc commit merged) comment (diff) | |
parent | Merge pull request #804 from thejan2009/misc-border-fix (diff) | |
download | sway-e6af5f8bdbd98d1ece927b67d9ef881f3511e087.tar.gz sway-e6af5f8bdbd98d1ece927b67d9ef881f3511e087.tar.zst sway-e6af5f8bdbd98d1ece927b67d9ef881f3511e087.zip |
Merge branch 'master' of git://github.com/SirCmpwn/sway into x11-pids
-rw-r--r-- | include/border.h | 1 | ||||
-rw-r--r-- | sway/border.c | 20 | ||||
-rw-r--r-- | sway/layout.c | 10 |
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); | |||
20 | void update_view_border(swayc_t *view); | 20 | void update_view_border(swayc_t *view); |
21 | void map_update_view_border(swayc_t *view, void *data); | 21 | void map_update_view_border(swayc_t *view, void *data); |
22 | int get_font_text_height(const char *font); | 22 | int get_font_text_height(const char *font); |
23 | bool 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 | |||
424 | bool 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 | } |