diff options
author | crondog <crondog@gmail.com> | 2016-04-02 14:49:13 +1100 |
---|---|---|
committer | crondog <crondog@gmail.com> | 2016-04-03 10:37:16 +1000 |
commit | b02be709cd92b23a78383700250df3c9907fddfe (patch) | |
tree | fdeb7546cffecab83d35cd4fdd621b1236e600aa /sway/border.c | |
parent | Merge pull request #562 from fluxchief/border-endian (diff) | |
download | sway-b02be709cd92b23a78383700250df3c9907fddfe.tar.gz sway-b02be709cd92b23a78383700250df3c9907fddfe.tar.zst sway-b02be709cd92b23a78383700250df3c9907fddfe.zip |
Fix window borders
This fixes floating borders when moving outside of the output. Not sure what
happens with dual screen as I only have 1 monitor
Diffstat (limited to 'sway/border.c')
-rw-r--r-- | sway/border.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sway/border.c b/sway/border.c index acabc8e0..00a4b1fb 100644 --- a/sway/border.c +++ b/sway/border.c | |||
@@ -139,23 +139,26 @@ static void render_borders(swayc_t *view, cairo_t *cr, struct border_colors *col | |||
139 | static void render_with_title_bar(swayc_t *view, cairo_t *cr, struct border_colors *colors) { | 139 | static void render_with_title_bar(swayc_t *view, cairo_t *cr, struct border_colors *colors) { |
140 | struct wlc_geometry *tb = &view->title_bar_geometry; | 140 | struct wlc_geometry *tb = &view->title_bar_geometry; |
141 | struct wlc_geometry *b = &view->border_geometry; | 141 | struct wlc_geometry *b = &view->border_geometry; |
142 | int title_y = MIN(view->actual_geometry.origin.y - (int)tb->size.h, 0); | ||
142 | 143 | ||
143 | // borders | 144 | // borders |
144 | render_borders(view, cr, colors); | 145 | render_borders(view, cr, colors); |
145 | 146 | ||
146 | // title bar background | 147 | // title bar background |
147 | cairo_set_source_u32(cr, colors->child_border); | 148 | cairo_set_source_u32(cr, colors->child_border); |
148 | cairo_rectangle(cr, 0, 0, tb->size.w, tb->size.h); | 149 | cairo_rectangle(cr, 0, title_y, tb->size.w, tb->size.h); |
149 | cairo_fill(cr); | 150 | cairo_fill(cr); |
150 | 151 | ||
151 | // header top line | 152 | // header top line |
152 | render_sharp_line(cr, colors->border, 0, 0, tb->size.w, 1); | 153 | render_sharp_line(cr, colors->border, 0, title_y, tb->size.w, 1); |
153 | 154 | ||
154 | // text | 155 | // text |
155 | if (view->name) { | 156 | if (view->name) { |
156 | int width, height; | 157 | int width, height; |
157 | get_text_size(cr, config->font, &width, &height, "%s", view->name); | 158 | get_text_size(cr, config->font, &width, &height, "%s", view->name); |
158 | cairo_move_to(cr, view->border_thickness, 2); | 159 | int x = MIN(view->actual_geometry.origin.x, view->border_thickness); |
160 | int y = MIN(view->actual_geometry.origin.y - height - 2, 2); | ||
161 | cairo_move_to(cr, x, y); | ||
159 | cairo_set_source_u32(cr, colors->text); | 162 | cairo_set_source_u32(cr, colors->text); |
160 | pango_printf(cr, config->font, "%s", view->name); | 163 | pango_printf(cr, config->font, "%s", view->name); |
161 | } | 164 | } |
@@ -163,7 +166,7 @@ static void render_with_title_bar(swayc_t *view, cairo_t *cr, struct border_colo | |||
163 | // header bottom line | 166 | // header bottom line |
164 | render_sharp_line(cr, colors->border, | 167 | render_sharp_line(cr, colors->border, |
165 | view->actual_geometry.origin.x - b->origin.x, | 168 | view->actual_geometry.origin.x - b->origin.x, |
166 | tb->size.h - 1, | 169 | title_y + tb->size.h - 1, |
167 | view->actual_geometry.size.w, 1); | 170 | view->actual_geometry.size.w, 1); |
168 | } | 171 | } |
169 | 172 | ||