Skip to content

Item-based regions don't properly track movement when it comes from an ancestor #697

@remi-labeyrie-tbe

Description

@remi-labeyrie-tbe

Problem

Region { item: someItem } only connects to the item's own xChanged/yChanged signals. When an ancestor of the tracked item moves, build() is never re-triggered because those signals don't fire on the registered item itself.

This causes blur regions and input masks to become stale at their initial position whenever items move under an animated parent (for example, blurred notification toasts sliding in/out or being repositioned).

Fix

Walk the item's parent chain on setItem() and connect to each ancestor's xChanged/yChanged, forwarding them to the existing itemChanged signal. This ensures build() gets called whenever the item's position in window-space changes, regardless of which ancestor moved.

I already have that fix implemented there as a reference: https://github.com/calops/quickshell/tree/fix/region-parent-tracking

It seems to be working properly on my side.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions