mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-14 08:21:27 -04:00
conf: csd.preferred can now be set to ‘none’
When csd.preferred == none, we will request CSDs from the compositor, but internally render as if we are using SSDs. That is, we don’t render any window decorations at all. Note that some compositors may ignore our request to use CSDs, and still render SSDs for us. Closes #163
This commit is contained in:
parent
e54adbfa7c
commit
6ff97128fc
5 changed files with 46 additions and 20 deletions
38
wayland.c
38
wayland.c
|
|
@ -635,22 +635,29 @@ xdg_toplevel_decoration_configure(void *data,
|
|||
{
|
||||
struct wl_window *win = data;
|
||||
|
||||
switch (mode) {
|
||||
case ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE:
|
||||
LOG_INFO("using CSD decorations");
|
||||
win->use_csd = CSD_YES;
|
||||
csd_instantiate(win);
|
||||
break;
|
||||
|
||||
case ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE:
|
||||
LOG_INFO("using SSD decorations");
|
||||
if (win->term->conf->csd.preferred == CONF_CSD_PREFER_NONE) {
|
||||
/* User explicitly disabled window decorations */
|
||||
LOG_INFO("window decorations disabled");
|
||||
win->use_csd = CSD_NO;
|
||||
csd_destroy(win);
|
||||
break;
|
||||
} else {
|
||||
switch (mode) {
|
||||
case ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE:
|
||||
LOG_INFO("using CSD decorations");
|
||||
win->use_csd = CSD_YES;
|
||||
csd_instantiate(win);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_ERR("unimplemented: unknown XDG toplevel decoration mode: %u", mode);
|
||||
break;
|
||||
case ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE:
|
||||
LOG_INFO("using SSD decorations");
|
||||
win->use_csd = CSD_NO;
|
||||
csd_destroy(win);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_ERR("unimplemented: unknown XDG toplevel decoration mode: %u", mode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (win->is_configured && win->use_csd == CSD_YES) {
|
||||
|
|
@ -1184,7 +1191,6 @@ wayl_win_init(struct terminal *term)
|
|||
|
||||
xdg_toplevel_set_app_id(win->xdg_toplevel, conf->app_id);
|
||||
|
||||
/* Request server-side decorations */
|
||||
if (wayl->xdg_decoration_manager != NULL) {
|
||||
win->xdg_toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(
|
||||
wayl->xdg_decoration_manager, win->xdg_toplevel);
|
||||
|
|
@ -1200,6 +1206,10 @@ wayl_win_init(struct terminal *term)
|
|||
|
||||
zxdg_toplevel_decoration_v1_add_listener(
|
||||
win->xdg_toplevel_decoration, &xdg_toplevel_decoration_listener, win);
|
||||
} else if (conf->csd.preferred == CONF_CSD_PREFER_NONE) {
|
||||
/* No decoration manager - and user specifically do *not* want CSDs */
|
||||
win->use_csd = CSD_NO;
|
||||
LOG_INFO("no decoration manager available - user has disabled CSDs");
|
||||
} else {
|
||||
/* No decoration manager - thus we *must* draw our own decorations */
|
||||
win->use_csd = CSD_YES;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue