diff --git a/include/ssd.h b/include/ssd.h index 040cc3af..111ea729 100644 --- a/include/ssd.h +++ b/include/ssd.h @@ -60,6 +60,6 @@ uint32_t ssd_resize_edges(enum ssd_part_type type); void ssd_update_title(struct view *view); void ssd_create(struct view *view); void ssd_destroy(struct view *view); -void ssd_update_geometry(struct view *view); +void ssd_update_geometry(struct view *view, bool force); #endif /* __LABWC_SSD_H */ diff --git a/src/server.c b/src/server.c index cfcac22f..45e30ef2 100644 --- a/src/server.c +++ b/src/server.c @@ -36,14 +36,10 @@ reload_config_and_theme(void) continue; } view->margin = ssd_thickness(view); - struct ssd_part *part; - wl_list_for_each(part, &view->ssd.parts, link) { - part->box = ssd_visible_box(view, part->type); - } + ssd_update_geometry(view, true); } menu_reconfigure(g_server, g_server->rootmenu); - damage_all_outputs(g_server); } diff --git a/src/ssd.c b/src/ssd.c index ac90642e..3ef64684 100644 --- a/src/ssd.c +++ b/src/ssd.c @@ -354,9 +354,9 @@ geometry_changed(struct view *view) } void -ssd_update_geometry(struct view *view) +ssd_update_geometry(struct view *view, bool force) { - if (!geometry_changed(view)) { + if (!geometry_changed(view) && !force) { return; } struct ssd_part *part; diff --git a/src/xdg.c b/src/xdg.c index d456fd8f..8b333507 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -69,7 +69,7 @@ handle_commit(struct wl_listener *listener, void *data) view->pending_move_resize.configure_serial = 0; } } - ssd_update_geometry(view); + ssd_update_geometry(view, false); damage_view_part(view); } @@ -164,7 +164,7 @@ xdg_toplevel_view_configure(struct view *view, struct wlr_box geo) } else if (view->pending_move_resize.configure_serial == 0) { view->x = geo.x; view->y = geo.y; - ssd_update_geometry(view); + ssd_update_geometry(view, false); damage_all_outputs(view->server); } } @@ -174,7 +174,7 @@ xdg_toplevel_view_move(struct view *view, double x, double y) { view->x = x; view->y = y; - ssd_update_geometry(view); + ssd_update_geometry(view, false); damage_all_outputs(view->server); } diff --git a/src/xwayland.c b/src/xwayland.c index ed434ba8..ed2f989c 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -22,7 +22,7 @@ handle_commit(struct wl_listener *listener, void *data) view->pending_move_resize.height - view->h; view->pending_move_resize.update_y = false; } - ssd_update_geometry(view); + ssd_update_geometry(view, false); damage_view_whole(view); } @@ -107,7 +107,7 @@ move(struct view *view, double x, double y) struct wlr_xwayland_surface *s = view->xwayland_surface; wlr_xwayland_surface_configure(s, (int16_t)x, (int16_t)y, (uint16_t)s->width, (uint16_t)s->height); - ssd_update_geometry(view); + ssd_update_geometry(view, false); damage_all_outputs(view->server); }