Skip to content

Vertical tabs settings popup items (View as / Density) are unclickable #9539

@leozeli

Description

@leozeli

Summary

When the vertical tabs settings popup is open, clicking any option — View as (Panes / Tabs), Density (Compact / Expanded), Pane title as, and other toggle items — has no visible effect. The popup opens correctly but its interactive items do not respond to clicks.

Steps to reproduce

  1. Enable vertical tabs (Settings → Features → Vertical Tabs).
  2. Click the settings (gear) button at the top of the vertical tabs panel.
  3. The settings popup opens showing "View as", "Density", "Pane title as", etc.
  4. Click any option — e.g. switch from "Panes" to "Tabs" under View as, or toggle Compact / Expanded under Density.

Expected: The selected option activates and the panel updates accordingly.
Actual: Nothing happens. Cursor shows a pointer on hover, but clicking produces no response.

Root cause

render_vertical_tabs_panel renders the settings popup a second time as a panel-level overlay, in addition to the workspace-level rendering (wrapped in Dismiss) that already exists in the workspace view render function.

Both render calls pass the same &VerticalTabsPanelState, so every Hoverable button in the popup shares the same MouseStateHandle instance. Hoverable records a pending click on LeftMouseDown via self.state().click_count = Some(n), then fires the handler on LeftMouseUp via click_count.take().

Because warpui's Stack uses EventDispatchMode::Broadcast by default, both overlay instances receive every mouse event. The dispatch order is:

  1. Panel-level copy (dispatched first): receives LeftMouseUp, calls click_count.take() — consumes the value — then bails because is_mouse_over_element returns false (covered by the higher-z-index workspace overlay). No action dispatched.
  2. Workspace-level copy (inside Dismiss): receives LeftMouseUp, calls click_count.take() — finds None because step 1 already consumed it — skips the handler. No action dispatched.

Result: clicks are silently dropped and the popup items appear completely unresponsive.

Fix

Remove the redundant panel-level popup render from render_vertical_tabs_panel. The workspace-level Dismiss rendering already handles positioning, click-outside-to-close, and z-ordering correctly.

Environment

  • OS: Arch Linux, Hyprland 0.54.3 (Wayland)
  • Branch: master (reproduced from initial public release commit)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:ui-frameworkCore Warp UI framework, rendering, layout, and windowing infrastructure.area:window-tabs-panesWindow, tab, pane, and workspace layout management.bugSomething isn't working.os:linuxLinux-specific behavior, regressions, or requests.repro:highThe report includes enough evidence that the issue appears highly reproducible.triagedIssue has received an initial automated triage pass.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions