mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
foreign: handle minimize request
This commit is contained in:
parent
b4722d988e
commit
9cf0608aba
5 changed files with 28 additions and 18 deletions
|
|
@ -225,6 +225,7 @@ struct view {
|
|||
|
||||
struct wlr_foreign_toplevel_handle_v1 *toplevel_handle;
|
||||
struct wl_listener toplevel_handle_request_maximize;
|
||||
struct wl_listener toplevel_handle_request_minimize;
|
||||
|
||||
struct wl_listener map;
|
||||
struct wl_listener unmap;
|
||||
|
|
@ -296,8 +297,7 @@ void subsurface_create(struct view *view, struct wlr_subsurface *wlr_subsurface)
|
|||
|
||||
void view_move_resize(struct view *view, struct wlr_box geo);
|
||||
void view_move(struct view *view, double x, double y);
|
||||
void view_minimize(struct view *view);
|
||||
void view_unminimize(struct view *view);
|
||||
void view_minimize(struct view *view, bool minimized);
|
||||
/* view_wlr_output - return the output that a view is mostly on */
|
||||
struct wlr_output *view_wlr_output(struct view *view);
|
||||
void view_center(struct view *view);
|
||||
|
|
|
|||
|
|
@ -337,7 +337,7 @@ cursor_button(struct wl_listener *listener, void *data)
|
|||
view->impl->close(view);
|
||||
break;
|
||||
case LAB_SSD_BUTTON_ICONIFY:
|
||||
view_minimize(view);
|
||||
view_minimize(view, true);
|
||||
break;
|
||||
case LAB_SSD_PART_TITLE:
|
||||
interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ desktop_focus_view(struct seat *seat, struct view *view)
|
|||
}
|
||||
if (view->minimized) {
|
||||
/* this will unmap and then focus */
|
||||
view_unminimize(view);
|
||||
view_minimize(view, false);
|
||||
return;
|
||||
} else if (view->mapped) {
|
||||
struct wlr_surface *prev_surface;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,20 @@
|
|||
#include "labwc.h"
|
||||
|
||||
static void
|
||||
handle_toplevel_handle_request_minimize(struct wl_listener *listener, void *data)
|
||||
{
|
||||
struct view *view = wl_container_of(listener, view,
|
||||
toplevel_handle_request_minimize);
|
||||
struct wlr_foreign_toplevel_handle_v1_minimized_event *event = data;
|
||||
view_minimize(view, event->minimized);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -23,4 +31,8 @@ foreign_toplevel_handle_create(struct view *view)
|
|||
handle_toplevel_handle_request_maximize;
|
||||
wl_signal_add(&view->toplevel_handle->events.request_maximize,
|
||||
&view->toplevel_handle_request_maximize);
|
||||
view->toplevel_handle_request_minimize.notify =
|
||||
handle_toplevel_handle_request_minimize;
|
||||
wl_signal_add(&view->toplevel_handle->events.request_minimize,
|
||||
&view->toplevel_handle_request_minimize);
|
||||
}
|
||||
|
|
|
|||
24
src/view.c
24
src/view.c
|
|
@ -16,23 +16,21 @@ view_move(struct view *view, double x, double y)
|
|||
}
|
||||
|
||||
void
|
||||
view_minimize(struct view *view)
|
||||
view_minimize(struct view *view, bool minimized)
|
||||
{
|
||||
if (view->minimized == true) {
|
||||
if (view->minimized == minimized) {
|
||||
return;
|
||||
}
|
||||
view->minimized = true;
|
||||
view->impl->unmap(view);
|
||||
}
|
||||
|
||||
void
|
||||
view_unminimize(struct view *view)
|
||||
{
|
||||
if (view->minimized == false) {
|
||||
return;
|
||||
if (view->toplevel_handle) {
|
||||
wlr_foreign_toplevel_handle_v1_set_minimized(view->toplevel_handle,
|
||||
minimized);
|
||||
}
|
||||
view->minimized = minimized;
|
||||
if (minimized) {
|
||||
view->impl->unmap(view);
|
||||
} else {
|
||||
view->impl->map(view);
|
||||
}
|
||||
view->minimized = false;
|
||||
view->impl->map(view);
|
||||
}
|
||||
|
||||
/* view_wlr_output - return the output that a view is mostly on */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue