Add hidden-on-hover sidebar mode
Domain ships HIDDEN_SIDEBAR_WIDTH_PX = 8 alongside the existing collapsed/default tiers. ElyShell tracks sidebar_hover_expanded with expand_hidden_sidebar / collapse_hidden_sidebar helpers; switching back to a non-hidden width via the layout cards or core API resets the flag automatically so the sidebar can never be both hidden and expanded after a mode change. Renderer: - render_sidebar takes a sidebar_hidden flag and routes to a thin 8 px clickable rail (hover bg + click expands) when the active space's width is at HIDDEN. - While the rail is expanded, render_browser overlays a transparent backdrop + the full default-width sidebar absolutely positioned in the shell inset, so the main pane content never reflows. - collapsed_sidebar_active still drives the COLLAPSED-tier compact sidebar; the hidden tier is opted out of that path. Appearance form: - Layout cards section gains the design's third "Hidden on hover" card with a 6 px sliver preview that mutates the active space to HIDDEN_SIDEBAR_WIDTH_PX. LayoutMode now derives id/width/preview from a small enum so adding a fourth mode would be one match arm. The hover-expanded state never persists into the domain; once the user switches modes or clicks the backdrop, it collapses cleanly.
This commit is contained in:
@@ -66,6 +66,7 @@ pub struct ElyShell {
|
||||
pub(crate) plugin_search_input: Entity<InputState>,
|
||||
pub(crate) translucency_slider: Entity<SliderState>,
|
||||
pub(crate) workspace_picker_open: bool,
|
||||
pub(crate) sidebar_hover_expanded: bool,
|
||||
download_action_error: Option<String>,
|
||||
download_clear_confirmation: bool,
|
||||
download_security_confirmation: Option<PendingDownloadFileAction>,
|
||||
@@ -177,6 +178,7 @@ impl ElyShell {
|
||||
plugin_search_input,
|
||||
translucency_slider,
|
||||
workspace_picker_open: false,
|
||||
sidebar_hover_expanded: false,
|
||||
download_action_error: None,
|
||||
download_clear_confirmation: false,
|
||||
download_security_confirmation: None,
|
||||
|
||||
Reference in New Issue
Block a user