mirror of
https://github.com/swaywm/sway.git
synced 2024-12-29 00:16:22 +01:00
Merge pull request #804 from thejan2009/misc-border-fix
Misc border fix
This commit is contained in:
commit
e3104a48e3
3 changed files with 22 additions and 9 deletions
|
@ -20,5 +20,6 @@ void render_view_borders(wlc_handle view);
|
||||||
void update_view_border(swayc_t *view);
|
void update_view_border(swayc_t *view);
|
||||||
void map_update_view_border(swayc_t *view, void *data);
|
void map_update_view_border(swayc_t *view, void *data);
|
||||||
int get_font_text_height(const char *font);
|
int get_font_text_height(const char *font);
|
||||||
|
bool should_hide_top_border(swayc_t *con, double y);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -332,10 +332,12 @@ void update_view_border(swayc_t *view) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
cr = create_border_buffer(view, g, &surface);
|
cr = create_border_buffer(view, g, &surface);
|
||||||
|
|
||||||
|
bool render_top = !should_hide_top_border(view, view->y);
|
||||||
if (view == focused) {
|
if (view == focused) {
|
||||||
render_borders(view, cr, &config->border_colors.focused, false);
|
render_borders(view, cr, &config->border_colors.focused, render_top);
|
||||||
} else {
|
} else {
|
||||||
render_borders(view, cr, &config->border_colors.focused_inactive, false);
|
render_borders(view, cr, &config->border_colors.focused_inactive, render_top);
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate container titles
|
// generate container titles
|
||||||
|
@ -418,3 +420,17 @@ void render_view_borders(wlc_handle view) {
|
||||||
wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer);
|
wlc_pixels_write(WLC_RGBA8888, &c->border->geometry, c->border->buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool should_hide_top_border(swayc_t *con, double y) {
|
||||||
|
// returns true if container is child of tabbed/stacked layout and is
|
||||||
|
// sharing top border with tabbed titlebar
|
||||||
|
swayc_t *par = con->parent;
|
||||||
|
while (par->type != C_WORKSPACE) {
|
||||||
|
if (par->layout == L_TABBED || par->layout == L_STACKED) {
|
||||||
|
return con->y == y;
|
||||||
|
}
|
||||||
|
con = par;
|
||||||
|
par = par->parent;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -579,21 +579,17 @@ void update_geometry(swayc_t *container) {
|
||||||
border_left = 0;
|
border_left = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (geometry.origin.x + geometry.size.w == size.w ||
|
if (geometry.origin.x + geometry.size.w == workspace->x + workspace->width) {
|
||||||
geometry.size.w == container->x + container->width) {
|
|
||||||
// should work for swaybar at right
|
|
||||||
border_right = 0;
|
border_right = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config->hide_edge_borders == E_VERTICAL || config->hide_edge_borders == E_BOTH) {
|
if (config->hide_edge_borders == E_VERTICAL || config->hide_edge_borders == E_BOTH) {
|
||||||
if (geometry.origin.y == workspace->y) {
|
if (geometry.origin.y == workspace->y || should_hide_top_border(container, geometry.origin.y)) {
|
||||||
border_top = 0;
|
border_top = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (geometry.origin.y + geometry.size.h == size.h ||
|
if (geometry.origin.y + geometry.size.h == workspace->y + workspace->height) {
|
||||||
geometry.size.h == container->y + container->height) {
|
|
||||||
// this works for swaybar at bottom
|
|
||||||
border_bottom = 0;
|
border_bottom = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue