From 5a13cb0ed136906a4370235214601b0129548c49 Mon Sep 17 00:00:00 2001 From: Mikkel Oscar Lyderik Date: Tue, 29 Mar 2016 14:47:30 +0200 Subject: Implement borders The borders are implemented as a surface/buffer attached to each view which is sent to and rendered by wlc in the view_pre_render callback. All the drawing logic is handled in sway/border.c and all the logic for calculating the geometry of the border/view is handled in `update_geometry` in sway/layout.c (same place as gaps are calculated). --- include/border.h | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 include/border.h (limited to 'include/border.h') diff --git a/include/border.h b/include/border.h new file mode 100644 index 00000000..63cd63d2 --- /dev/null +++ b/include/border.h @@ -0,0 +1,10 @@ +#ifndef _SWAY_BORDER_H +#define _SWAY_BORDER_H +#include +#include "container.h" + +void render_view_borders(wlc_handle view); +void update_view_border(swayc_t *view); +int get_font_text_height(const char *font); + +#endif -- cgit v1.2.3 From 7878de5ccc223baa609770e04efa151f5b99b16d Mon Sep 17 00:00:00 2001 From: Mikkel Oscar Lyderik Date: Wed, 30 Mar 2016 00:13:39 +0200 Subject: Mark focused view focus_inactive on unfocused output --- include/border.h | 1 + sway/border.c | 6 ++++++ sway/focus.c | 2 ++ 3 files changed, 9 insertions(+) (limited to 'include/border.h') diff --git a/include/border.h b/include/border.h index 63cd63d2..85c656e0 100644 --- a/include/border.h +++ b/include/border.h @@ -5,6 +5,7 @@ void render_view_borders(wlc_handle view); void update_view_border(swayc_t *view); +void map_update_view_border(swayc_t *view, void *data); int get_font_text_height(const char *font); #endif diff --git a/sway/border.c b/sway/border.c index 872e8d34..e820794f 100644 --- a/sway/border.c +++ b/sway/border.c @@ -170,6 +170,12 @@ static void render_with_title_bar(swayc_t *view, cairo_t *cr, struct border_colo view->actual_geometry.size.w, 1); } +void map_update_view_border(swayc_t *view, void *data) { + if (view->type == C_VIEW) { + update_view_border(view); + } +} + void update_view_border(swayc_t *view) { cairo_t *cr = NULL; cairo_surface_t *surface = NULL; diff --git a/sway/focus.c b/sway/focus.c index 4cae3b47..0c9719b0 100644 --- a/sway/focus.c +++ b/sway/focus.c @@ -29,6 +29,8 @@ static void update_focus(swayc_t *c) { // Case where output changes case C_OUTPUT: + // update borders for views in prev + container_map(prev, map_update_view_border, NULL); wlc_output_focus(c->handle); break; -- cgit v1.2.3