Skip to content

Commit 0dd2ab0

Browse files
committed
Add set-min-size configuration option
1 parent 01f9154 commit 0dd2ab0

File tree

7 files changed

+33
-21
lines changed

7 files changed

+33
-21
lines changed

docs/docs/config.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,6 +1581,21 @@ Example:
15811581
height = 400
15821582
```
15831583

1584+
## window.set-min-size
1585+
1586+
Whether or not to give window managers a minimum size for the window. If set,
1587+
the size is set to `400x300`
1588+
1589+
- Default: `true`
1590+
1591+
Example:
1592+
1593+
```toml
1594+
[window]
1595+
set-min-size = true
1596+
```
1597+
1598+
15841599
## window.mode
15851600

15861601
Define how the window will be created

frontends/rioterm/src/application.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,10 +1407,6 @@ impl ApplicationHandler<EventPayload> for Application<'_> {
14071407
}
14081408
}
14091409

1410-
// let duration = start.elapsed();
1411-
// println!("Time elapsed in render() is: {:?}", duration);
1412-
// }
1413-
14141410
if self.config.renderer.strategy.is_game() {
14151411
route.request_redraw();
14161412
} else if route

frontends/rioterm/src/router/window.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,13 @@ pub fn create_window_builder(
3030

3131
let mut window_builder = WindowAttributes::default()
3232
.with_title(title)
33-
.with_min_inner_size(rio_window::dpi::LogicalSize {
34-
width: DEFAULT_MINIMUM_WINDOW_WIDTH,
35-
height: DEFAULT_MINIMUM_WINDOW_HEIGHT,
33+
.with_min_inner_size(if config.window.set_min_size {
34+
Some(rio_window::dpi::LogicalSize {
35+
width: DEFAULT_MINIMUM_WINDOW_WIDTH,
36+
height: DEFAULT_MINIMUM_WINDOW_HEIGHT,
37+
})
38+
} else {
39+
None
3640
})
3741
.with_resizable(true)
3842
.with_decorations(true)

rio-backend/src/config/defaults.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ pub fn default_window_height() -> i32 {
121121
490
122122
}
123123

124+
#[inline]
125+
pub fn default_set_min_size() -> bool {
126+
true
127+
}
128+
124129
#[inline]
125130
pub fn default_disable_ctlseqs_alt() -> bool {
126131
#[cfg(target_os = "macos")]

rio-backend/src/config/window.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ pub struct Window {
7777
pub width: i32,
7878
#[serde(default = "default_window_height")]
7979
pub height: i32,
80+
#[serde(default = "default_set_min_size", rename = "set-min-size")]
81+
pub set_min_size: bool,
8082
#[serde(default = "WindowMode::default")]
8183
pub mode: WindowMode,
8284
#[serde(default = "default_opacity")]
@@ -111,6 +113,7 @@ impl Default for Window {
111113
Window {
112114
width: default_window_width(),
113115
height: default_window_height(),
116+
set_min_size: default_set_min_size(),
114117
mode: WindowMode::default(),
115118
opacity: default_opacity(),
116119
background_image: None,

rio-window/src/platform_impl/linux/wayland/event_loop/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ impl<T: 'static> EventLoop<T> {
399399
let physical_size = *new_inner_size.lock().unwrap();
400400
drop(new_inner_size);
401401

402+
402403
// Resize the window when user altered the size.
403404
if old_physical_size != physical_size {
404405
self.with_state(|state| {

rio-window/src/window.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -206,20 +206,8 @@ impl WindowAttributes {
206206
///
207207
/// See [`Window::set_min_inner_size`] for details.
208208
#[inline]
209-
pub fn with_min_inner_size<S: Into<Size>>(mut self, min_size: S) -> Self {
210-
self.min_inner_size = Some(min_size.into());
211-
self
212-
}
213-
214-
/// Sets the maximum dimensions a window can have.
215-
///
216-
/// If this is not set, the window will have no maximum or will be set to
217-
/// the primary monitor's dimensions by the platform.
218-
///
219-
/// See [`Window::set_max_inner_size`] for details.
220-
#[inline]
221-
pub fn with_max_inner_size<S: Into<Size>>(mut self, max_size: S) -> Self {
222-
self.max_inner_size = Some(max_size.into());
209+
pub fn with_min_inner_size<S: Into<Size>>(mut self, min_size: Option<S>) -> Self {
210+
self.min_inner_size = min_size.map(|s| s.into());
223211
self
224212
}
225213

0 commit comments

Comments
 (0)