diff --git a/include/view.h b/include/view.h index 5e1c5baf..a8bad905 100644 --- a/include/view.h +++ b/include/view.h @@ -222,6 +222,7 @@ struct view { enum ssd_preference ssd_preference; bool shaded; bool minimized; + bool remaximize; enum view_axis maximized; bool fullscreen; bool tearing_hint; diff --git a/src/input/cursor.c b/src/input/cursor.c index 0fc2bbd0..eb88051b 100644 --- a/src/input/cursor.c +++ b/src/input/cursor.c @@ -295,6 +295,8 @@ process_cursor_move(struct server *server, uint32_t time) }; interactive_anchor_to_cursor(server, &new_geo); /* Shaded clients will not process resize events until unshaded */ + if (view->maximized == VIEW_AXIS_BOTH) + view->remaximize = true; view_set_shade(view, false); view_set_untiled(view); view_restore_to(view, new_geo); diff --git a/src/interactive.c b/src/interactive.c index f6fd5450..149316f6 100644 --- a/src/interactive.c +++ b/src/interactive.c @@ -152,6 +152,8 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges) interactive_anchor_to_cursor(server, &natural_geo); /* Shaded clients will not process resize events until unshaded */ view_set_shade(view, false); + if (view->maximized == VIEW_AXIS_BOTH) + view->remaximize = true; view_set_untiled(view); view_restore_to(view, natural_geo); } @@ -265,6 +267,11 @@ interactive_finish(struct view *view) } } + if (view->remaximize) { + view_maximize(view, VIEW_AXIS_BOTH, true); + view->remaximize = false; + } + interactive_cancel(view); }