Skip to content

feat(alt-backtick): add visual overlay switcher for same-group windows#38

Open
tutumumu777 wants to merge 7 commits into
MrBeanCpp:masterfrom
tutumumu777:feat-add-group-switching-window
Open

feat(alt-backtick): add visual overlay switcher for same-group windows#38
tutumumu777 wants to merge 7 commits into
MrBeanCpp:masterfrom
tutumumu777:feat-add-group-switching-window

Conversation

@tutumumu777

Copy link
Copy Markdown

Summary

  • Show a frosted-glass overlay when pressing Alt+`` (same visual style as Alt+Tab)
  • Each item displays "窗口 N" above the icon and the window title below it
  • Window switching is deferred until Alt is released (instead of switching immediately)

Changes

  • IconOnlyDelegate: added group switcher mode — draws number label above icon and title below
  • Widget: added showGroupSwitcherOverlay() with a taller grid (110px) to accommodate text labels; stores itemDelegate pointer to toggle modes at runtime
  • keyPressEvent (Alt+`` ): tracks groupCurrentIndex, shows overlay instead of switching immediately; Alt+Shift+`` navigates in reverse
  • keyReleaseEvent: switches to the highlighted window on Alt release, then resets all state

Test plan

  • Open multiple windows of the same app (e.g. VS Code, Notepad)
  • Hold Alt and press ` repeatedly — overlay should appear and cycle through windows
  • Press Alt+Shift+`` to cycle in reverse
  • Release Alt — should switch to the highlighted window
  • Verify Alt+Tab still works normally after using Alt+``

WangQi added 7 commits April 3, 2026 18:40
- show frosted-glass overlay when pressing Alt+` (same style as Alt+Tab)
- display "窗口 N" above icon and window title below for each item
- defer window switch until Alt is released instead of switching immediately
- add group switcher mode to IconOnlyDelegate with taller grid (110px)
- store itemDelegate pointer in Widget to toggle mode at runtime
…ment

- widen Alt+� group-switcher items and render labels in white for readability
- keep stable "窗口 N" labels bound to windows instead of active-order changes
- hide the Release console window with multi-config CMake generators
- auto-copy runtime DLLs and run windeployqt after Windows builds
…777/AltTaber into feat-add-group-switching-window

# Conflicts:
#	CMakeLists.txt
- New GroupSwitcherWidget: top app icon + vertical window-title list,
  replacing the old horizontal 'window N' badge layout.
- Mode mutual switching: Alt+Tab and Alt+` can swap on the fly without
  releasing Alt; requestShow() and the Alt+` branch handle the cross-fade.
- Fix: Alt+` failure on multi-process Explorer windows (Win11 22H2+),
  by using switchToWindow(hwnd, force=true) so SetForegroundWindow can
  bypass focus-stealing prevention while the popup does not own focus.
- Fix: scrolling past the last item caused the first item to vanish.
  Pack item_spacing into each item's sizeHint instead of relying on
  QListWidget::setSpacing; auto-enable scrolling when entries exceed
  group_switcher/max_visible_items (default 15).
- ConfigManager:
  * Extract AppSwitcherStyle / GroupSwitcherStyle (icon size, padding,
    colors, badge, fonts, item layout, scroll threshold...).
  * On first launch, generate config.ini with bilingual (CN/EN) comments
    if missing or empty (never overwrites existing user config).
  * Always overwrite config.template.ini on launch as up-to-date reference.
- IconOnlyDelegate: drop group-mode branch; apply AppSwitcherStyle to
  every paint property (background, hover, selected, badge, icon padding).
- Docs: bilingual README structure
  * Root README.md  -> English (links to doc/README.zh-CN.md)
  * doc/README.en.md, doc/README.zh-CN.md -> full bilingual versions.
- CMake POST_BUILD: copy README.md, img/, doc/ into build/Release/ for
  release packaging.
- .gitignore: collapse 170+ generated build/ entries into a single 'build/'.
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.

1 participant