mirror of
https://github.com/swaywm/sway.git
synced 2025-11-15 06:59:50 -05:00
refactored view visibility
- replace visibilty mask integers with an enum - set output's visibilty mask on creation - added update_visibility to manually update a containers visibility (e.g. when it moved to an invisible workspace)
This commit is contained in:
parent
1efda79bf2
commit
f22c937953
4 changed files with 27 additions and 8 deletions
|
|
@ -520,16 +520,25 @@ void set_view_visibility(swayc_t *view, void *data) {
|
|||
if (!ASSERT_NONNULL(view)) {
|
||||
return;
|
||||
}
|
||||
uint32_t *p = data;
|
||||
uint32_t mask = *(uint32_t *)data;
|
||||
if (view->type == C_VIEW) {
|
||||
wlc_view_set_mask(view->handle, *p);
|
||||
if (*p == 2) {
|
||||
wlc_view_set_mask(view->handle, mask);
|
||||
if (mask & VISIBLE) {
|
||||
wlc_view_bring_to_front(view->handle);
|
||||
} else {
|
||||
wlc_view_send_to_back(view->handle);
|
||||
}
|
||||
}
|
||||
view->visible = (*p == 2);
|
||||
view->visible = mask & VISIBLE;
|
||||
sway_log(L_DEBUG, "Container %p is now %s", view, view->visible ? "visible" : "invisible");
|
||||
}
|
||||
|
||||
void update_visibility(swayc_t *container) {
|
||||
swayc_t *ws = swayc_active_workspace_for(container);
|
||||
bool visible = ws->parent->focused == container;
|
||||
uint32_t mask = visible ? VISIBLE : INVISIBLE;
|
||||
sway_log(L_DEBUG, "Setting visibility of container %p to %s", container, visible ? "visible" : "invisible");
|
||||
container_map(ws, set_view_visibility, &mask);
|
||||
}
|
||||
|
||||
void reset_gaps(swayc_t *view, void *data) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue