aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/view.c83
1 files changed, 39 insertions, 44 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 2fdb14a2..a485e902 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -97,8 +97,9 @@ void view_autoconfigure(struct sway_view *view) {
return;
}
+ struct sway_container *output = container_parent(view->swayc, C_OUTPUT);
+
if (view->is_fullscreen) {
- struct sway_container *output = container_parent(view->swayc, C_OUTPUT);
view_configure(view, 0, 0, output->width, output->height);
view->x = view->y = 0;
return;
@@ -110,6 +111,25 @@ void view_autoconfigure(struct sway_view *view) {
other_views = container_count_descendants_of_type(ws, C_VIEW) - 1;
}
+ view->border_top = view->border_bottom = true;
+ view->border_left = view->border_right = true;
+ if (view->swayc->layout != L_FLOATING) {
+ if (config->hide_edge_borders == E_BOTH
+ || config->hide_edge_borders == E_VERTICAL
+ || (config->hide_edge_borders == E_SMART && !other_views)) {
+ view->border_left = view->swayc->x != 0;
+ int right_x = view->swayc->x + view->swayc->width;
+ view->border_right = right_x != output->width;
+ }
+ if (config->hide_edge_borders == E_BOTH
+ || config->hide_edge_borders == E_HORIZONTAL
+ || (config->hide_edge_borders == E_SMART && !other_views)) {
+ view->border_top = view->swayc->y != 0;
+ int bottom_y = view->swayc->y + view->swayc->height;
+ view->border_bottom = bottom_y != output->height;
+ }
+ }
+
double x, y, width, height;
x = y = width = height = 0;
switch (view->border) {
@@ -120,51 +140,26 @@ void view_autoconfigure(struct sway_view *view) {
height = view->swayc->height;
break;
case B_PIXEL:
- if (view->swayc->layout > L_VERT
- || config->hide_edge_borders == E_NONE
- || config->hide_edge_borders == E_HORIZONTAL
- || (config->hide_edge_borders == E_SMART && other_views)) {
- x = view->swayc->x + view->border_thickness;
- width = view->swayc->width - view->border_thickness * 2;
- } else {
- x = view->swayc->x;
- width = view->swayc->width;
- }
- if (view->swayc->layout > L_VERT
- || config->hide_edge_borders == E_NONE
- || config->hide_edge_borders == E_VERTICAL
- || (config->hide_edge_borders == E_SMART && other_views)) {
- y = view->swayc->y + view->border_thickness;
- height = view->swayc->height - view->border_thickness * 2;
- } else {
- y = view->swayc->y;
- height = view->swayc->height;
- }
+ x = view->swayc->x + view->border_thickness * view->border_left;
+ y = view->swayc->y + view->border_thickness * view->border_top;
+ width = view->swayc->width
+ - view->border_thickness * view->border_left
+ - view->border_thickness * view->border_right;
+ height = view->swayc->height
+ - view->border_thickness * view->border_top
+ - view->border_thickness * view->border_bottom;
break;
case B_NORMAL:
- if (view->swayc->layout > L_VERT
- || config->hide_edge_borders == E_NONE
- || config->hide_edge_borders == E_HORIZONTAL
- || (config->hide_edge_borders == E_SMART && other_views)) {
- x = view->swayc->x + view->border_thickness;
- width = view->swayc->width - view->border_thickness * 2;
- } else {
- x = view->swayc->x;
- width = view->swayc->width;
- }
- if (view->swayc->layout > L_VERT
- || config->hide_edge_borders == E_NONE
- || config->hide_edge_borders == E_VERTICAL
- || (config->hide_edge_borders == E_SMART && other_views)) {
- // Height is: border + title height + border + view height + border
- y = view->swayc->y + config->font_height
- + view->border_thickness * 2;
- height = view->swayc->height - config->font_height
- - view->border_thickness * 3;
- } else {
- y = view->swayc->y;
- height = view->swayc->height;
- }
+ // Height is: border + title height + border + view height + border
+ x = view->swayc->x + view->border_thickness * view->border_left;
+ y = view->swayc->y + config->font_height
+ + view->border_thickness * (view->border_top + 1);
+ width = view->swayc->width
+ - view->border_thickness * view->border_left
+ - view->border_thickness * view->border_right;
+ height = view->swayc->height - config->font_height
+ - view->border_thickness * (view->border_top + 1)
+ - view->border_thickness * view->border_bottom;
break;
}