Merge pull request #2719 from RyanDwyer/fix-view-is-visible

Fix floating views in tabbed/stacked workspaces not getting frame events
This commit is contained in:
Drew DeVault 2018-09-28 02:12:18 -05:00 committed by GitHub
commit 0b2afee711
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -989,12 +989,16 @@ bool view_is_visible(struct sway_view *view) {
floater = floater->parent; floater = floater->parent;
} }
bool is_sticky = container_is_floating(floater) && floater->is_sticky; bool is_sticky = container_is_floating(floater) && floater->is_sticky;
if (!is_sticky && !workspace_is_visible(workspace)) {
return false;
}
// Check view isn't in a tabbed or stacked container on an inactive tab // Check view isn't in a tabbed or stacked container on an inactive tab
struct sway_seat *seat = input_manager_current_seat(input_manager); struct sway_seat *seat = input_manager_current_seat(input_manager);
struct sway_container *con = view->container; struct sway_container *con = view->container;
while (con) { while (con) {
enum sway_container_layout layout = container_parent_layout(con); enum sway_container_layout layout = container_parent_layout(con);
if (layout == L_TABBED || layout == L_STACKED) { if ((layout == L_TABBED || layout == L_STACKED)
&& !container_is_floating(con)) {
struct sway_node *parent = con->parent ? struct sway_node *parent = con->parent ?
&con->parent->node : &con->workspace->node; &con->parent->node : &con->workspace->node;
if (seat_get_active_tiling_child(seat, parent) != &con->node) { if (seat_get_active_tiling_child(seat, parent) != &con->node) {
@ -1008,10 +1012,6 @@ bool view_is_visible(struct sway_view *view) {
!container_is_fullscreen_or_child(view->container)) { !container_is_fullscreen_or_child(view->container)) {
return false; return false;
} }
// Check the workspace is visible
if (!is_sticky) {
return workspace_is_visible(workspace);
}
return true; return true;
} }