refactor(settings): a pull-out drawer, with Zoom as a category — and the menu moves to the wordmark

Creator directive, 2026-11-01. Settings stopped being a centred modal.

- **Drawer** (Controls/SettingsDrawer): hosted in PreviewPane's pull-out stack, 320px, the same
  animated-width pattern as Stream Settings / YPP / Socials / TEST, opened by the gear rail tab
  on a single left click. SettingsDrawerOpen is exclusive with the other four, both directions.
  This also removes the modal's MaxHeight-700 scroll problem for good: the drawer is the height
  of the preview.
- **Categories**: headings with controls indented beneath them. Zoom now owns *Zoom view shape*
  (Circle / Phone / Tablet) and *Zoom box follows*; Recordings, Brand logo and Scene transition
  are their own categories.
- **The app menu moved to the LlamaCasty wordmark** (right-click → Report Bug / Feature Request /
  About). Left-click still opens About. The gear tab no longer carries a menu at all, so clicking
  it does exactly one thing.

OverlayHost keeps only the Bug / Feature / About panels; its brand-logo handlers and the dev-panel
injection moved with the settings block. BrandLogoPreviewTests follows the control (same assertions,
new path). Release 0 warnings; 15 tests pass across brand logo, zoom, entitlement and preview
history.
This commit is contained in:
2026-11-01 09:16:27 -08:00
parent c418288215
commit a35ec0c5f8
14 changed files with 310 additions and 173 deletions
+3 -14
View File
@@ -730,22 +730,11 @@ public partial class PreviewPane : UserControl
}
}
/// <summary>Rail settings tab (creator ruling 2026-11-01): left-click opens the same app menu
/// the top-bar gear used to own, so Bug / Feature / About keep their only entry point.</summary>
/// <summary>Rail settings tab (creator ruling 2026-11-01): a left click opens the Settings
/// DRAWER immediately, exactly like the other rail tabs — no menu, no modal.</summary>
private void SettingsTab_Click(object sender, MouseButtonEventArgs e)
{
if (sender is not FrameworkElement { ContextMenu: { } menu } anchor) return;
menu.PlacementTarget = anchor;
menu.Placement = System.Windows.Controls.Primitives.PlacementMode.Left;
menu.IsOpen = true;
if (DataContext is MainViewModel vm) vm.ToggleSettingsDrawer();
e.Handled = true;
}
/// <summary>Right-click goes straight to App Settings — the same shortcut the old gear had.</summary>
private void SettingsTab_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
if (DataContext is MainViewModel { OpenSettingsCommand: { } open } && open.CanExecute(null))
open.Execute(null);
}
}