diff --git a/include/view.h b/include/view.h index 53f8de73..3b3aeba8 100644 --- a/include/view.h +++ b/include/view.h @@ -36,6 +36,7 @@ struct view_impl { void (*set_fullscreen)(struct view *view, bool fullscreen); void (*unmap)(struct view *view); void (*maximize)(struct view *view, bool maximize); + void (*minimize)(struct view *view, bool minimize); void (*move_to_front)(struct view *view); void (*move_to_back)(struct view *view); }; diff --git a/src/view.c b/src/view.c index 6f287b3a..7b459254 100644 --- a/src/view.c +++ b/src/view.c @@ -230,6 +230,9 @@ view_minimize(struct view *view, bool minimized) wlr_foreign_toplevel_handle_v1_set_minimized( view->toplevel.handle, minimized); } + if (view->impl->minimize) { + view->impl->minimize(view, minimized); + } view->minimized = minimized; if (minimized) { view->impl->unmap(view); diff --git a/src/xdg.c b/src/xdg.c index 6d5a9928..0df83b04 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -314,6 +314,12 @@ xdg_toplevel_view_maximize(struct view *view, bool maximized) wlr_xdg_toplevel_set_maximized(xdg_toplevel_from_view(view), maximized); } +static void +xdg_toplevel_view_minimize(struct view *view, bool minimized) +{ + /* noop */ +} + static void xdg_toplevel_view_set_activated(struct view *view, bool activated) { @@ -465,6 +471,7 @@ static const struct view_impl xdg_toplevel_view_impl = { .set_fullscreen = xdg_toplevel_view_set_fullscreen, .unmap = xdg_toplevel_view_unmap, .maximize = xdg_toplevel_view_maximize, + .minimize = xdg_toplevel_view_minimize, .move_to_front = view_impl_move_to_front, .move_to_back = view_impl_move_to_back, }; diff --git a/src/xwayland.c b/src/xwayland.c index 6cf77420..cb9af47c 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -510,6 +510,13 @@ xwayland_view_maximize(struct view *view, bool maximized) maximized); } +static void +xwayland_view_minimize(struct view *view, bool minimized) +{ + wlr_xwayland_surface_set_minimized(xwayland_surface_from_view(view), + minimized); +} + enum z_direction { LAB_TO_FRONT, LAB_TO_BACK, @@ -604,6 +611,7 @@ static const struct view_impl xwayland_view_impl = { .set_fullscreen = xwayland_view_set_fullscreen, .unmap = xwayland_view_unmap, .maximize = xwayland_view_maximize, + .minimize = xwayland_view_minimize, .move_to_front = xwayland_view_move_to_front, .move_to_back = xwayland_view_move_to_back, };