Skip to content

Commit

Permalink
Max window size & other size helpers (#3537)
Browse files Browse the repository at this point in the history
Was a bit confused why the max_size API isn't exposed on `Window`, when
it's perfectly functional in `Resize`. Anyway here's the main thing that
it affects:

```rs
let screen = ctx.available_rect();
let size = screen.size();

egui::Window::new(self.name())
    .resizable(true)
    .resize(|resize| resize.max_size(size)) // Before
    .max_size(size)                         // After
    .show(ctx, |ui| todo!());
```

I also added some other relevant helpers for consistency.

This PR doesn't change any logic, only forwards along some helper
functions that are already public for consistency.
  • Loading branch information
arduano authored Nov 16, 2023
1 parent 83aa310 commit 4886c8c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
12 changes: 12 additions & 0 deletions crates/egui/src/containers/resize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,18 @@ impl Resize {
self
}

/// Won't expand to larger than this
pub fn max_width(mut self, max_width: f32) -> Self {
self.max_size.x = max_width;
self
}

/// Won't expand to larger than this
pub fn max_height(mut self, max_height: f32) -> Self {
self.max_size.y = max_height;
self
}

/// Can you resize it with the mouse?
///
/// Note that a window can still auto-resize.
Expand Down
24 changes: 24 additions & 0 deletions crates/egui/src/containers/window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,30 @@ impl<'open> Window<'open> {
self
}

/// Set minimum size of the window, equivalent to calling both `min_width` and `min_height`.
pub fn min_size(mut self, min_size: impl Into<Vec2>) -> Self {
self.resize = self.resize.min_size(min_size);
self
}

/// Set maximum width of the window.
pub fn max_width(mut self, max_width: f32) -> Self {
self.resize = self.resize.max_width(max_width);
self
}

/// Set maximum height of the window.
pub fn max_height(mut self, max_height: f32) -> Self {
self.resize = self.resize.max_height(max_height);
self
}

/// Set maximum size of the window, equivalent to calling both `max_width` and `max_height`.
pub fn max_size(mut self, max_size: impl Into<Vec2>) -> Self {
self.resize = self.resize.max_size(max_size);
self
}

/// Set current position of the window.
/// If the window is movable it is up to you to keep track of where it moved to!
pub fn current_pos(mut self, current_pos: impl Into<Pos2>) -> Self {
Expand Down

0 comments on commit 4886c8c

Please sign in to comment.