mirror of
https://github.com/labwc/labwc.git
synced 2025-11-30 06:59:52 -05:00
osd: allow window switcher to temporary unshade windows
This can be configured with a new unshade="yes|no" argument for windowSwitcher in rc.xml Fixes: #3111
This commit is contained in:
parent
babd7af8f8
commit
364a1d5207
7 changed files with 29 additions and 5 deletions
|
|
@ -9,6 +9,7 @@
|
|||
#include "common/scene-helpers.h"
|
||||
#include "config/rcxml.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "output.h"
|
||||
#include "scaled-buffer/scaled-font-buffer.h"
|
||||
#include "scaled-buffer/scaled-icon-buffer.h"
|
||||
|
|
@ -160,9 +161,14 @@ restore_preview_node(struct server *server)
|
|||
if (!osd_state->preview_was_enabled) {
|
||||
wlr_scene_node_set_enabled(osd_state->preview_node, false);
|
||||
}
|
||||
if (osd_state->preview_was_shaded) {
|
||||
struct view *view = node_view_from_node(osd_state->preview_node);
|
||||
view_set_shade(view, true);
|
||||
}
|
||||
osd_state->preview_node = NULL;
|
||||
osd_state->preview_parent = NULL;
|
||||
osd_state->preview_anchor = NULL;
|
||||
osd_state->preview_was_shaded = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -203,6 +209,7 @@ osd_finish(struct server *server)
|
|||
server->osd_state.preview_node = NULL;
|
||||
server->osd_state.preview_anchor = NULL;
|
||||
server->osd_state.cycle_view = NULL;
|
||||
server->osd_state.preview_was_shaded = false;
|
||||
|
||||
destroy_osd_scenes(server);
|
||||
|
||||
|
|
@ -244,6 +251,10 @@ preview_cycled_view(struct view *view)
|
|||
if (!osd_state->preview_was_enabled) {
|
||||
wlr_scene_node_set_enabled(osd_state->preview_node, true);
|
||||
}
|
||||
if (rc.window_switcher.unshade && view->shaded) {
|
||||
view_set_shade(view, false);
|
||||
osd_state->preview_was_shaded = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: This abuses an implementation detail of the always-on-top tree.
|
||||
|
|
@ -294,6 +305,10 @@ update_osd(struct server *server)
|
|||
}
|
||||
}
|
||||
|
||||
if (rc.window_switcher.preview) {
|
||||
preview_cycled_view(server->osd_state.cycle_view);
|
||||
}
|
||||
|
||||
/* Outline current window */
|
||||
if (rc.window_switcher.outlines) {
|
||||
if (view_is_focusable(server->osd_state.cycle_view)) {
|
||||
|
|
@ -301,9 +316,6 @@ update_osd(struct server *server)
|
|||
}
|
||||
}
|
||||
|
||||
if (rc.window_switcher.preview) {
|
||||
preview_cycled_view(server->osd_state.cycle_view);
|
||||
}
|
||||
out:
|
||||
wl_array_release(&views);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue