summaryrefslogtreecommitdiffstats
path: root/video/out/wayland_common.c
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2019-12-03 21:48:06 +0800
committerPhilip Langdale <philipl@overt.org>2019-12-04 09:32:25 +0800
commit353e4efdefca0fe118f5717783bf7e1df3592620 (patch)
treeddebf2314988c8be11e5de03f5aa31bc54f2bc18 /video/out/wayland_common.c
parentf8689eff6d8c982ed970f02929a50be1406e1e25 (diff)
downloadmpv-353e4efdefca0fe118f5717783bf7e1df3592620.tar.bz2
mpv-353e4efdefca0fe118f5717783bf7e1df3592620.tar.xz
osc: rework window control configuration to add auto mode
To aid in discoverability, and to address the most common case directly, I'm adding an 'auto' mode for the window controls. In this case, we will show the controls if there is no window border and hide them if there are borders. This also respects the option being toggled at runtime. To ensure that it works in the wayland case, I've also made sure that the wayland code explicitly forces the option to false if decoration support is missing. Based on feedback, I've split the config in two, with one option for whether controls are active, and one for alignment. These are new enough that we can get away with ignoring compatibility.
Diffstat (limited to 'video/out/wayland_common.c')
-rw-r--r--video/out/wayland_common.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index cbc7d63d31..dd20432394 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -1047,8 +1047,12 @@ static int create_xdg_surface(struct vo_wayland_state *wl)
static int set_border_decorations(struct vo_wayland_state *wl, int state)
{
- if (!wl->xdg_toplevel_decoration)
+ if (!wl->xdg_toplevel_decoration) {
+ wl->vo_opts->border = false;
+ m_config_cache_write_opt(wl->vo_opts_cache,
+ &wl->vo_opts->border);
return VO_NOTIMPL;
+ }
enum zxdg_toplevel_decoration_v1_mode mode;
if (state) {
@@ -1131,6 +1135,9 @@ int vo_wayland_init(struct vo *vo)
wl->xdg_toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(wl->xdg_decoration_manager, wl->xdg_toplevel);
set_border_decorations(wl, wl->vo_opts->border);
} else {
+ wl->vo_opts->border = false;
+ m_config_cache_write_opt(wl->vo_opts_cache,
+ &wl->vo_opts->border);
MP_VERBOSE(wl, "Compositor doesn't support the %s protocol!\n",
zxdg_decoration_manager_v1_interface.name);
}