Skip to content

Combo box popups and tooltips reopen as background windows under GNOME Wayland/Xwayland #404

@danjboyd

Description

@danjboyd

Summary

Under GNOME on a Wayland session, GNUstep combo box dropdowns and native tooltips can appear once and then fail to reappear on subsequent attempts.

The root cause appears to be that these popup-style panels are shown as independent top-level windows rather than transient children of their owning window.

Environment

  • Debian 13
  • GNOME session on Wayland
  • GNUstep apps running under Xwayland
  • libs-gui current master

Observed behavior

Combo boxes

  • The first combo box dropdown often appears.
  • On the second attempt, the dropdown does not appear.
  • GNOME shows a notification like "Window" is ready, which suggests the popup is being treated as a separate top-level window.

Tooltips

  • Native GNUstep tooltips show the first time.
  • Subsequent tooltip displays may fail in the same way.

Expected behavior

Combo box dropdowns and tooltips should remain associated with their owning window and reliably reopen in the foreground instead of being managed as unrelated top-level windows.

Notes from investigation

This appears to be a libs-gui issue.

The issue was resolved locally by changing libs-gui so the combo popup window and tooltip window are attached to their owning window as child/transient windows before being shown, and detached when dismissed.

The relevant areas are:

  • Source/NSComboBoxCell.m
  • Source/GSToolTips.m

The working patch makes these popup windows follow the same general ownership model already used for menu windows.

Proposed fix

Before showing these popup panels:

  • attach the combo popup window to the control's window
  • attach the shared tooltip window to the view's window

When the popup is dismissed:

  • detach it again

This allows the window manager to keep these popup windows associated with the owning application window.

Patch

I am attaching the working patch in a follow-up comment.

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