view: add minimize method

...and call wlr_xwayland_surface_set_minimized() for xwayland surfaces on
(un)minimize.

Fixes: #958
This commit is contained in:
Johan Malm 2023-06-25 11:37:56 +01:00 committed by Johan Malm
parent 945928a8f6
commit 16bf67a8cd
4 changed files with 19 additions and 0 deletions

View file

@ -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);
};

View file

@ -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);

View file

@ -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,
};

View file

@ -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,
};