Skip to content

[Discussion] Single window? #82

@jacob-hofman

Description

@jacob-hofman

I've seen Dablin's child window positioning behaving inconsistently across platforms, for example:

  • Gnome 13, X session: everything works as expected, child windows appear where expected and move when moving the parent
  • Gnome 13, Wayland session: child windows always appear at the center of the parent one and won't move when moving the parent. HandleConfigureEvent seems to be called only on focus change and not on window move
  • Mac OS X: the child windows show up nearly where they're expected to (fixed margin probably makes it not really precise), but when you move the parent they will act weirdly: sometimes they move at different speed, sometimes they even move in the opposite direction. It seems that the HandleConfigureEvent is called too rapidly, before the previous one finished, so prev_parent_x and prev_parent_y values are not consistent. High pixel density and consequent UI scaling may also have a role in the math not mathing. Interesting fact: it seems that the Mac OS window manager already moves child windows when you move the parent one, so if I remove the "later: follow parent" part and leave only the move() call on first rendering, everything is working exactly as expected.

I think also #73 is related to those differences, and I see the OP is using Wayland.

Of course, it would be possible to handle it on a per-case basis, but I was wondering if it's worth having separate windows and having to deal with those differences. Wouldn't it make sense to have a single window? There could be an additional widget on the right when SLS is visible, and an additional widget on the bottom when DL+ is visible. This would probably cause some geometry change in the window that would not be very pleasant to see, but I think it's better than the actual inconsistent behavior.

Before making a code proposal, I was wondering if there's a specific reason for having separate windows and what you all think about it.

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