diff --git a/include/view.h b/include/view.h index b21d7ca2..b4f90e6a 100644 --- a/include/view.h +++ b/include/view.h @@ -495,6 +495,7 @@ void view_toggle_always_on_bottom(struct view *view); void view_toggle_visible_on_all_workspaces(struct view *view); bool view_is_tiled(struct view *view); +bool view_is_tiled_and_notify_tiled(struct view *view); bool view_is_floating(struct view *view); void view_move_to_workspace(struct view *view, struct workspace *workspace); enum ssd_mode view_get_ssd_mode(struct view *view); diff --git a/src/ssd/ssd-titlebar.c b/src/ssd/ssd-titlebar.c index 87d0f2e9..32d6131a 100644 --- a/src/ssd/ssd-titlebar.c +++ b/src/ssd/ssd-titlebar.c @@ -123,7 +123,7 @@ ssd_titlebar_create(struct ssd *ssd) set_maximize_alt_icon(ssd, true); ssd->state.was_maximized = true; } - if (view_is_tiled(view) && !maximized) { + if (view_is_tiled_and_notify_tiled(view) && !maximized) { set_squared_corners(ssd, true); ssd->state.was_tiled_not_maximized = true; } @@ -193,7 +193,9 @@ ssd_titlebar_update(struct ssd *ssd) struct theme *theme = view->server->theme; bool maximized = view->maximized == VIEW_AXIS_BOTH; - bool tiled_not_maximized = view_is_tiled(ssd->view) && !maximized; + bool tiled_not_maximized = view_is_tiled_and_notify_tiled(ssd->view) + && !maximized; + if (ssd->state.was_maximized != maximized || ssd->state.was_tiled_not_maximized != tiled_not_maximized) { set_squared_corners(ssd, maximized || tiled_not_maximized); diff --git a/src/view.c b/src/view.c index f83c9a66..5c98a935 100644 --- a/src/view.c +++ b/src/view.c @@ -1171,6 +1171,23 @@ view_is_tiled(struct view *view) || view->tiled_region_evacuate); } +bool +view_is_tiled_and_notify_tiled(struct view *view) +{ + switch (rc.snap_tiling_events_mode) { + case LAB_TILING_EVENTS_NEVER: + return false; + case LAB_TILING_EVENTS_REGION: + return view->tiled_region || view->tiled_region_evacuate; + case LAB_TILING_EVENTS_EDGE: + return view->tiled; + case LAB_TILING_EVENTS_ALWAYS: + return view_is_tiled(view); + } + + return false; +} + bool view_is_floating(struct view *view) {