foreign: handle maximize request

This commit is contained in:
Johan Malm 2021-08-05 12:52:42 +01:00
parent 042ea266a5
commit b4722d988e
3 changed files with 20 additions and 0 deletions

View file

@ -224,6 +224,7 @@ struct view {
} ssd;
struct wlr_foreign_toplevel_handle_v1 *toplevel_handle;
struct wl_listener toplevel_handle_request_maximize;
struct wl_listener map;
struct wl_listener unmap;

View file

@ -1,5 +1,15 @@
#include "labwc.h"
static void
handle_toplevel_handle_request_maximize(struct wl_listener *listener, void *data)
{
struct view *view = wl_container_of(listener, view,
toplevel_handle_request_maximize);
struct wlr_foreign_toplevel_handle_v1_maximized_event *event = data;
printf("max=%d\n", event->maximized);
view_maximize(view, event->maximized);
}
void
foreign_toplevel_handle_create(struct view *view)
{
@ -8,4 +18,9 @@ foreign_toplevel_handle_create(struct view *view)
view_update_title(view);
wlr_foreign_toplevel_handle_v1_output_enter(view->toplevel_handle,
view_wlr_output(view));
view->toplevel_handle_request_maximize.notify =
handle_toplevel_handle_request_maximize;
wl_signal_add(&view->toplevel_handle->events.request_maximize,
&view->toplevel_handle_request_maximize);
}

View file

@ -73,6 +73,10 @@ view_maximize(struct view *view, bool maximize)
return;
}
view->impl->maximize(view, maximize);
if (view->toplevel_handle) {
wlr_foreign_toplevel_handle_v1_set_maximized(view->toplevel_handle,
maximize);
}
if (maximize) {
view->unmaximized_geometry.x = view->x;
view->unmaximized_geometry.y = view->y;