Skip to content

Open the mini panel by the tray icon, on the screen it was clicked on - #2

Merged
steeben merged 5 commits into
mainfrom
mini-panel-by-tray
Oct 22, 2026
Merged

steeben merged 5 commits into
mainfrom
mini-panel-by-tray

Conversation

@steeben

@steeben steeben commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Requested by Stephen · project thread

What

The mini panel always took the corner of Screens.Primary. With the notification area on another monitor (for example a taskbar mod that moves the tray to a secondary screen), it opened on the wrong screen.

  • MiniPanel.Place (Core) takes the click point. A click that lands on a taskbar (inside the screen, outside its work area) puts the panel against that bar, centred on the click and clamped to the work area. With no click, or a click inside the work area (the icon's menu), the existing corner rule applies.
  • MiniPanelWindow picks the screen with Screens.ScreenFromPoint(click), falling back to the primary screen, and re-places on ScalingChanged so a move to a screen with a different DPI keeps its size right.
  • MainWindow.ToggleMini reads the pointer with GetCursorPos on Windows. Elsewhere the click is unknown and the old behaviour stays.

Tests

Six new MiniPanelTests cases: bar at the foot, top, left, near the end of the bar, on a second screen, and a click inside the work area. Existing cases pass null for the click.

Not built or run locally (no .NET SDK in the authoring environment); relying on CI for build, format and tests, and needs a manual check on a multi-monitor Windows setup.


Generated by Claude Code

The panel took the main screen's corner, so with the notification area on
another monitor it opened on the wrong screen. A click on the icon now
reads the pointer's place on Windows and puts the panel against that
taskbar, centred on the click within the work area. Without a click on a
bar it keeps the corner rule, on the clicked screen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXdvwJ9Y3S9ThVsMtuVQSS
@steeben steeben self-assigned this Oct 22, 2026
The panel appeared and vanished at once, which reads as abrupt beside the
system's own flyouts. The card now fades up into place as it opens and
fades away as it closes; a close waits for the fade unless the app is
stopping. Both follow Windows' animation setting through Motion.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXdvwJ9Y3S9ThVsMtuVQSS
In the mini panel, the microphone's switch carries its reason, such as
"Muted by the boom arm", and the row keeps every control beside its
name, so the name gave way until "Microphone" broke mid-word. A row now
puts its control under the name when, side by side, the name would no
longer fit on one line.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXdvwJ9Y3S9ThVsMtuVQSS
The panel's height cap was set from its own height at the time, so a
row that grew afterwards, such as the microphone's switch moving under
its name once the boom arm's reason arrives, was cut off at the bottom.
The cap is now the work area less the edge gaps.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXdvwJ9Y3S9ThVsMtuVQSS
A new key beside the mix's shortcuts, Ctrl + Alt + M by default, toggles
the mini panel, or brings the window forward while the panel is off,
as a click on the icon does. With no pointer on the taskbar to open by,
it opens by the clock end of the main taskbar, on whichever screen that is.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXdvwJ9Y3S9ThVsMtuVQSS
@steeben
steeben merged commit e923b53 into main Oct 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants