mirror of
https://github.com/labwc/labwc.git
synced 2025-10-31 22:25:34 -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 wlr_foreign_toplevel_handle_v1 *toplevel_handle;
|
||||||
struct wl_listener toplevel_handle_request_maximize;
|
struct wl_listener toplevel_handle_request_maximize;
|
||||||
|
struct wl_listener toplevel_handle_request_minimize;
|
||||||
|
|
||||||
struct wl_listener map;
|
struct wl_listener map;
|
||||||
struct wl_listener unmap;
|
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_resize(struct view *view, struct wlr_box geo);
|
||||||
void view_move(struct view *view, double x, double y);
|
void view_move(struct view *view, double x, double y);
|
||||||
void view_minimize(struct view *view);
|
void view_minimize(struct view *view, bool minimized);
|
||||||
void view_unminimize(struct view *view);
|
|
||||||
/* view_wlr_output - return the output that a view is mostly on */
|
/* view_wlr_output - return the output that a view is mostly on */
|
||||||
struct wlr_output *view_wlr_output(struct view *view);
|
struct wlr_output *view_wlr_output(struct view *view);
|
||||||
void view_center(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);
|
view->impl->close(view);
|
||||||
break;
|
break;
|
||||||
case LAB_SSD_BUTTON_ICONIFY:
|
case LAB_SSD_BUTTON_ICONIFY:
|
||||||
view_minimize(view);
|
view_minimize(view, true);
|
||||||
break;
|
break;
|
||||||
case LAB_SSD_PART_TITLE:
|
case LAB_SSD_PART_TITLE:
|
||||||
interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
|
interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ desktop_focus_view(struct seat *seat, struct view *view)
|
||||||
}
|
}
|
||||||
if (view->minimized) {
|
if (view->minimized) {
|
||||||
/* this will unmap and then focus */
|
/* this will unmap and then focus */
|
||||||
view_unminimize(view);
|
view_minimize(view, false);
|
||||||
return;
|
return;
|
||||||
} else if (view->mapped) {
|
} else if (view->mapped) {
|
||||||
struct wlr_surface *prev_surface;
|
struct wlr_surface *prev_surface;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,20 @@
|
||||||
#include "labwc.h"
|
#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
|
static void
|
||||||
handle_toplevel_handle_request_maximize(struct wl_listener *listener, void *data)
|
handle_toplevel_handle_request_maximize(struct wl_listener *listener, void *data)
|
||||||
{
|
{
|
||||||
struct view *view = wl_container_of(listener, view,
|
struct view *view = wl_container_of(listener, view,
|
||||||
toplevel_handle_request_maximize);
|
toplevel_handle_request_maximize);
|
||||||
struct wlr_foreign_toplevel_handle_v1_maximized_event *event = data;
|
struct wlr_foreign_toplevel_handle_v1_maximized_event *event = data;
|
||||||
printf("max=%d\n", event->maximized);
|
|
||||||
view_maximize(view, event->maximized);
|
view_maximize(view, event->maximized);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -23,4 +31,8 @@ foreign_toplevel_handle_create(struct view *view)
|
||||||
handle_toplevel_handle_request_maximize;
|
handle_toplevel_handle_request_maximize;
|
||||||
wl_signal_add(&view->toplevel_handle->events.request_maximize,
|
wl_signal_add(&view->toplevel_handle->events.request_maximize,
|
||||||
&view->toplevel_handle_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
|
void
|
||||||
view_minimize(struct view *view)
|
view_minimize(struct view *view, bool minimized)
|
||||||
{
|
{
|
||||||
if (view->minimized == true) {
|
if (view->minimized == minimized) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
view->minimized = true;
|
if (view->toplevel_handle) {
|
||||||
view->impl->unmap(view);
|
wlr_foreign_toplevel_handle_v1_set_minimized(view->toplevel_handle,
|
||||||
}
|
minimized);
|
||||||
|
}
|
||||||
void
|
view->minimized = minimized;
|
||||||
view_unminimize(struct view *view)
|
if (minimized) {
|
||||||
{
|
view->impl->unmap(view);
|
||||||
if (view->minimized == false) {
|
} else {
|
||||||
return;
|
view->impl->map(view);
|
||||||
}
|
}
|
||||||
view->minimized = false;
|
|
||||||
view->impl->map(view);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* view_wlr_output - return the output that a view is mostly on */
|
/* view_wlr_output - return the output that a view is mostly on */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue