Publish 0.14.2 (#670)

* Fix window resize bug introduced in `0.14.1`.

* tweak plot demo layout to allow more narrow window

* Release 0.14.2 - Window resize fix
This commit is contained in:
Emil Ernerfeldt 2021-08-28 12:19:35 +02:00 committed by GitHub
parent 1fbce6b2c3
commit 776770cdcd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 53 additions and 57 deletions

View file

@ -8,6 +8,12 @@ NOTE: [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md) and [
## Unreleased ## Unreleased
## 0.14.2 - 2021-08-28 - Window resize fix
### Fixed 🐛
* Fix window resize bug introduced in `0.14.1`.
## 0.14.1 - 2021-08-28 - Layout bug fixes ## 0.14.1 - 2021-08-28 - Layout bug fixes
### Added ⭐ ### Added ⭐

2
Cargo.lock generated
View file

@ -788,7 +788,7 @@ dependencies = [
[[package]] [[package]]
name = "egui" name = "egui"
version = "0.14.1" version = "0.14.2"
dependencies = [ dependencies = [
"epaint", "epaint",
"ron", "ron",

View file

@ -1375,56 +1375,56 @@ async function init(input) {
var ret = wasm.memory; var ret = wasm.memory;
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2074 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_30);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper2075 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2075 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_30); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_33);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2076 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2077 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_33); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_36);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2078 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2079 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_36); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_39);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2080 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2081 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_39); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_42);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2082 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2084 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_42); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_45);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2085 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2086 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_45); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_48);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2087 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2088 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_48); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_51);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2089 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2090 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_51); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_54);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2091 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2092 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_54); var ret = makeMutClosure(arg0, arg1, 663, __wbg_adapter_57);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2093 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2152 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 664, __wbg_adapter_57); var ret = makeClosure(arg0, arg1, 720, __wbg_adapter_60);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2153 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper2154 = function(arg0, arg1, arg2) {
var ret = makeClosure(arg0, arg1, 721, __wbg_adapter_60); var ret = makeClosure(arg0, arg1, 720, __wbg_adapter_63);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper2155 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper3334 = function(arg0, arg1, arg2) {
var ret = makeClosure(arg0, arg1, 721, __wbg_adapter_63); var ret = makeMutClosure(arg0, arg1, 746, __wbg_adapter_66);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper3335 = function(arg0, arg1, arg2) {
var ret = makeMutClosure(arg0, arg1, 747, __wbg_adapter_66);
return addHeapObject(ret); return addHeapObject(ret);
}; };

Binary file not shown.

View file

@ -1,6 +1,6 @@
[package] [package]
name = "egui" name = "egui"
version = "0.14.1" version = "0.14.2"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"] authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Simple, portable immediate mode GUI library for Rust" description = "Simple, portable immediate mode GUI library for Rust"
edition = "2018" edition = "2018"

View file

@ -339,11 +339,9 @@ impl Prepared {
// Important check - don't try to move e.g. a combobox popup! // Important check - don't try to move e.g. a combobox popup!
if movable { if movable {
if let Some(bounds) = drag_bounds { state.pos = ctx
state.pos = ctx.constrain_window_rect_to_area(state.rect(), bounds).min; .constrain_window_rect_to_area(state.rect(), drag_bounds)
} else { .min;
state.pos = ctx.constrain_window_rect(state.rect()).min;
}
} }
if (move_response.dragged() || move_response.clicked()) if (move_response.dragged() || move_response.clicked())

View file

@ -275,7 +275,7 @@ impl<'open> Window<'open> {
&& !collapsing_header::State::is_open(ctx, collapsing_id).unwrap_or_default(); && !collapsing_header::State::is_open(ctx, collapsing_id).unwrap_or_default();
let possible = PossibleInteractions::new(&area, &resize, is_collapsed); let possible = PossibleInteractions::new(&area, &resize, is_collapsed);
let area = area.movable(false); // We move it manually let area = area.movable(false); // We move it manually, or the area will move the window when we want to resize it
let resize = resize.resizable(false); // We move it manually let resize = resize.resizable(false); // We move it manually
let mut resize = resize.id(resize_id); let mut resize = resize.id(resize_id);
@ -301,16 +301,14 @@ impl<'open> Window<'open> {
0.0 0.0
}; };
let margins = 2.0 * frame.margin + vec2(0.0, title_bar_height); let margins = 2.0 * frame.margin + vec2(0.0, title_bar_height);
let bounds = area.drag_bounds();
interact( interact(
window_interaction, window_interaction,
ctx, ctx,
margins, margins,
area_layer_id, area_layer_id,
area.state_mut(), &mut area,
resize_id, resize_id,
bounds,
) )
}) })
} else { } else {
@ -405,7 +403,10 @@ impl<'open> Window<'open> {
content_inner content_inner
}; };
area.movable = possible.movable; // Tell it the truth area.state_mut().pos = ctx
.constrain_window_rect_to_area(area.state().rect(), area.drag_bounds())
.min;
let full_response = area.end(ctx, area_content_ui); let full_response = area.end(ctx, area_content_ui);
let inner_response = InnerResponse { let inner_response = InnerResponse {
@ -505,21 +506,16 @@ fn interact(
ctx: &Context, ctx: &Context,
margins: Vec2, margins: Vec2,
area_layer_id: LayerId, area_layer_id: LayerId,
area_state: &mut area::State, area: &mut area::Prepared,
resize_id: Id, resize_id: Id,
drag_bounds: Option<Rect>,
) -> Option<WindowInteraction> { ) -> Option<WindowInteraction> {
let new_rect = move_and_resize_window(ctx, &window_interaction)?; let new_rect = move_and_resize_window(ctx, &window_interaction)?;
let new_rect = ctx.round_rect_to_pixels(new_rect); let new_rect = ctx.round_rect_to_pixels(new_rect);
let new_rect = if let Some(bounds) = drag_bounds { let new_rect = ctx.constrain_window_rect_to_area(new_rect, area.drag_bounds());
ctx.constrain_window_rect_to_area(new_rect, bounds)
} else {
ctx.constrain_window_rect(new_rect)
};
// TODO: add this to a Window state instead as a command "move here next frame" // TODO: add this to a Window state instead as a command "move here next frame"
area_state.pos = new_rect.min; area.state_mut().pos = new_rect.min;
if window_interaction.is_resize() { if window_interaction.is_resize() {
ctx.memory() ctx.memory()

View file

@ -509,15 +509,12 @@ impl Context {
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
/// Constrain the position of a window/area /// Constrain the position of a window/area so it fits within the provided boundary.
/// so it fits within the screen. ///
pub(crate) fn constrain_window_rect(&self, window: Rect) -> Rect { /// If area is `None`, will constrain to [`Self::available_rect`].
self.constrain_window_rect_to_area(window, self.available_rect()) pub(crate) fn constrain_window_rect_to_area(&self, window: Rect, area: Option<Rect>) -> Rect {
} let mut area = area.unwrap_or_else(|| self.available_rect());
/// Constrain the position of a window/area
/// so it fits within the provided boundary.
pub(crate) fn constrain_window_rect_to_area(&self, window: Rect, mut area: Rect) -> Rect {
if window.width() > area.width() { if window.width() > area.width() {
// Allow overlapping side bars. // Allow overlapping side bars.
// This is important for small screens, e.g. mobiles running the web demo. // This is important for small screens, e.g. mobiles running the web demo.

View file

@ -75,8 +75,7 @@ impl LineDemo {
.on_hover_text("Always keep the viewport square."); .on_hover_text("Always keep the viewport square.");
ui.checkbox(proportional, "Proportional data axes") ui.checkbox(proportional, "Proportional data axes")
.on_hover_text("Tick are the same size on both axes."); .on_hover_text("Tick are the same size on both axes.");
});
ui.vertical(|ui| {
ComboBox::from_label("Line style") ComboBox::from_label("Line style")
.selected_text(line_style.to_string()) .selected_text(line_style.to_string())
.show_ui(ui, |ui| { .show_ui(ui, |ui| {