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:
parent
1fbce6b2c3
commit
776770cdcd
9 changed files with 53 additions and 57 deletions
|
@ -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
2
Cargo.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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.
|
@ -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"
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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| {
|
||||||
|
|
Loading…
Reference in a new issue