output: Add option to preview the contents of the current cycle_view

Add the 'cycleViewPreview.core' option to rc.xml to enable previews of
the selected view when cycling between windows. Default this option to
be disabled to match current behavior.
This commit is contained in:
Liam Middlebrook 2022-01-20 11:38:23 -08:00 committed by Johan Malm
parent c484ab252e
commit 875b258602
5 changed files with 21 additions and 0 deletions

View file

@ -31,6 +31,10 @@ Configuration must be wrapped in a <labwc_config> root-node.
*<core><adaptiveSync>* [yes|no]
Enable adaptive sync. Default is no.
*<core><cycleViewPreview>* [yes|no]
Preview the contents of the selected window when cycling between windows.
Default is no.
# FOCUS
*<focus><followMouse>* [yes|no]

View file

@ -11,6 +11,7 @@
<decoration>server</decoration>
<gap>0</gap>
<adaptiveSync>no</adaptiveSync>
<cycleViewPreview>no</cycleViewPreview>
</core>
<!--

View file

@ -48,6 +48,9 @@ struct rcxml {
/* window snapping */
int snap_edge_range;
bool snap_top_maximize;
/* cycle view (alt+tab) */
bool cycle_preview_contents;
};
extern struct rcxml rc;

View file

@ -384,6 +384,8 @@ entry(xmlNode *node, char *nodename, char *content)
rc.snap_edge_range = atoi(content);
} else if (!strcasecmp(nodename, "topMaximize.snapping")) {
rc.snap_top_maximize = get_bool(content);
} else if (!strcasecmp(nodename, "cycleViewPreview.core")) {
rc.cycle_preview_contents = get_bool(content);
}
}
@ -482,6 +484,7 @@ rcxml_init()
rc.screen_edge_strength = 20;
rc.snap_edge_range = 1;
rc.snap_top_maximize = true;
rc.cycle_preview_contents = false;
}
static struct {

View file

@ -802,6 +802,16 @@ output_render(struct output *output, pixman_region32_t *damage)
/* 'alt-tab' border */
if (output->server->cycle_view) {
/* If the 'cycle_preview_contents' option is set in
* rc.xml, render the contents of the cycle_view over
* all other views (except for the OSD)
*/
if (rc.cycle_preview_contents) {
render_deco(output->server->cycle_view, output, damage);
render_view_toplevels(output->server->cycle_view, output, damage);
render_view_popups(output->server->cycle_view, output, damage);
}
render_cycle_box(output, damage, output->server->cycle_view);
render_osd(output, damage, output->server);
}