srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/core/src/theme.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/core/src/theme.rs')
-rw-r--r--crates/core/src/theme.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/core/src/theme.rs b/crates/core/src/theme.rs
index 4dbf96d..026688a 100644
--- a/crates/core/src/theme.rs
+++ b/crates/core/src/theme.rs
@@ -157,6 +157,24 @@ pub struct ThemeConfig {
/// this convention's own (Windows/GNOME) maximize icon rather than
/// borrowing the other convention's.
pub traffic_light_buttons: bool,
+ /// Show only the titlebar buttons the window can actually use, rather
+ /// than a fixed three.
+ ///
+ /// Today that means one rule: a window whose client pinned its minimum
+ /// and maximum size to the same value (`Window::resizable` is `false`)
+ /// does not get a Maximize button, because pressing it can do nothing.
+ /// A dialog's Close-only titlebar is a separate, older rule that
+ /// applies regardless of this setting.
+ ///
+ /// On by default. A button that visibly does nothing when pressed is a
+ /// defect rather than a preference, and GNOME, KDE and Windows all
+ /// hide or disable maximize in exactly this case. `theme.button_mode =
+ /// "fixed"` restores the always-three behaviour for anyone who wants
+ /// the titlebar to look identical on every window.
+ ///
+ /// Asked for as titlebars able to use "decorations/buttons of the
+ /// program/dynamic".
+ pub dynamic_buttons: bool,
}
impl Default for ThemeConfig {
@@ -175,6 +193,7 @@ impl Default for ThemeConfig {
button_order: None,
button_glyph_always: false,
traffic_light_buttons: true,
+ dynamic_buttons: true,
}
}
}