You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: CHANGELOG.md
+99
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,105 @@ This file is updated upon each release.
7
7
Changes since the last release can be found at <https://github.com/emilk/egui/compare/latest...HEAD> or by running the `scripts/generate_changelog.py` script.
This release adds initial support for multi-pass layout, which is a tool to circumvent [a common limitation of immediate mode](https://github.com/emilk/egui#layout).
13
+
You can use the new `UiBuilder::sizing_pass` ([#4969](https://github.com/emilk/egui/pull/4969)) to instruct the `Ui` and widgets to shrink to their minimum size, then store that size.
14
+
Then call the new `Context::request_discard` ([#5059](https://github.com/emilk/egui/pull/5059)) to discard the visual output and do another _pass_ immediately after the current finishes.
15
+
Together, this allows more advanced layouts that is normally not possible in immediate mode.
16
+
So far this is only used by `egui::Grid` to hide the "first-frame jitters" that would sometimes happen before, but 3rd party libraries can also use it to do much more advanced things.
17
+
18
+
There is also a new `UiBuilder` for more flexible construction of `Ui`s ([#4969](https://github.com/emilk/egui/pull/4969)).
19
+
By specifying a `sense` for the `Ui` you can make it respond to clicks and drags, reading the result with the new `Ui::response` ([#5054](https://github.com/emilk/egui/pull/5054)).
20
+
Among other things, you can use this to create buttons that contain arbitrary widgets.
21
+
22
+
0.29 also adds improve support for automatic switching between light and dark mode.
23
+
You can now set up a custom `Style` for both dark and light mode, and have egui follow the system preference ([#4744](https://github.com/emilk/egui/pull/4744)[#4860](https://github.com/emilk/egui/pull/4860)).
24
+
25
+
There also has been several small improvements to the look of egui:
26
+
* Fix vertical centering of text (e.g. in buttons) ([#5117](https://github.com/emilk/egui/pull/5117))
27
+
* Sharper rendering of lines and outlines ([#4943](https://github.com/emilk/egui/pull/4943))
28
+
* Nicer looking text selection, especially in light mode ([#5017](https://github.com/emilk/egui/pull/5017))
29
+
30
+
#### The new text selection
31
+
<imgwidth="198"alt="New text selection in light mode"src="https://github.com/user-attachments/assets/bd342946-299c-44ab-bc2d-2aa8ddbca8eb">
32
+
<imgwidth="187"alt="New text selection in dark mode"src="https://github.com/user-attachments/assets/352bed32-5150-49b9-a9f9-c7679a0d30b2">
33
+
34
+
35
+
#### What text selection used to look like
36
+
<imgwidth="143"alt="Old text selection in light mode"src="https://github.com/user-attachments/assets/f3cbd798-cfed-4ad4-aa3a-d7480efcfa3c">
37
+
<imgwidth="143"alt="Old text selection in dark mode"src="https://github.com/user-attachments/assets/9925d18d-da82-4a44-8a98-ea6857ecc14f">
38
+
39
+
### 🧳 Migration
40
+
*`id_source` is now called `id_salt` everywhere ([#5025](https://github.com/emilk/egui/pull/5025))
41
+
*`Ui::new` now takes a `UiBuilder` ([#4969](https://github.com/emilk/egui/pull/4969))
42
+
* Deprecated (replaced with `UiBuilder`):
43
+
* `ui.add_visible_ui`
44
+
* `ui.allocate_ui_at_rect`
45
+
* `ui.child_ui`
46
+
* `ui.child_ui_with_id_source`
47
+
* `ui.push_stack_info`
48
+
49
+
### ⭐ Added
50
+
* Create a `UiBuilder` for building `Ui`s [#4969](https://github.com/emilk/egui/pull/4969) by [@emilk](https://github.com/emilk)
51
+
* Add `egui::Sides` for adding UI on left and right sides [#5036](https://github.com/emilk/egui/pull/5036) by [@emilk](https://github.com/emilk)
52
+
* Make light & dark visuals customizable when following the system theme [#4744](https://github.com/emilk/egui/pull/4744)[#4860](https://github.com/emilk/egui/pull/4860) by [@bash](https://github.com/bash)
53
+
* Interactive `Ui`:s: add `UiBuilder::sense` and `Ui::response`[#5054](https://github.com/emilk/egui/pull/5054) by [@lucasmerlin](https://github.com/lucasmerlin)
54
+
* Add a menu button with text and image [#4748](https://github.com/emilk/egui/pull/4748) by [@NicolasBircksZR](https://github.com/NicolasBircksZR)
55
+
* Add `Ui::columns_const()`[#4764](https://github.com/emilk/egui/pull/4764) by [@v0x0g](https://github.com/v0x0g)
56
+
* Add `Slider::max_decimals_opt`[#4953](https://github.com/emilk/egui/pull/4953) by [@bircni](https://github.com/bircni)
57
+
* Add `Label::halign`[#4975](https://github.com/emilk/egui/pull/4975) by [@rustbasic](https://github.com/rustbasic)
58
+
* Add `ui.shrink_clip_rect`[#5068](https://github.com/emilk/egui/pull/5068) by [@emilk](https://github.com/emilk)
59
+
* Add `ScrollArea::scroll_bar_rect`[#5070](https://github.com/emilk/egui/pull/5070) by [@emilk](https://github.com/emilk)
60
+
* Add `Options::input_options` for click-delay etc [#4942](https://github.com/emilk/egui/pull/4942) by [@girtsf](https://github.com/girtsf)
61
+
* Add `WidgetType::RadioGroup`[#5081](https://github.com/emilk/egui/pull/5081) by [@bash](https://github.com/bash)
62
+
* Add return value to `with_accessibility_parent`[#5083](https://github.com/emilk/egui/pull/5083) by [@bash](https://github.com/bash)
63
+
* Add `Ui::with_visual_transform`[#5055](https://github.com/emilk/egui/pull/5055) by [@lucasmerlin](https://github.com/lucasmerlin)
64
+
* Make `Slider` and `DragValue` compatible with `NonZeroUsize` etc [#5105](https://github.com/emilk/egui/pull/5105) by [@emilk](https://github.com/emilk)
65
+
* Add `Context::request_discard` for multi-pass layouts [#5059](https://github.com/emilk/egui/pull/5059) by [@emilk](https://github.com/emilk)
66
+
* Add UI to modify `FontTweak` live [#5125](https://github.com/emilk/egui/pull/5125) by [@emilk](https://github.com/emilk)
67
+
* Add `Response::intrinsic_size` to enable better layout in 3rd party crates [#5082](https://github.com/emilk/egui/pull/5082) by [@lucasmerlin](https://github.com/lucasmerlin)
68
+
* Add support for mipmap textures [#5146](https://github.com/emilk/egui/pull/5146) by [@nolanderc](https://github.com/nolanderc)
69
+
* Add `DebugOptions::show_unaligned`[#5165](https://github.com/emilk/egui/pull/5165) by [@emilk](https://github.com/emilk)
70
+
* Add `Slider::clamping` for precise clamp control [#5119](https://github.com/emilk/egui/pull/5119) by [@emilk](https://github.com/emilk)
71
+
72
+
### 🚀 Performance
73
+
* Optimize `Color32::from_rgba_unmultiplied` with LUT [#5088](https://github.com/emilk/egui/pull/5088) by [@YgorSouza](https://github.com/YgorSouza)
74
+
75
+
### 🔧 Changed
76
+
* Rename `id_source` to `id_salt`[#5025](https://github.com/emilk/egui/pull/5025) by [@bircni](https://github.com/bircni)
77
+
* Avoid some `Id` clashes by seeding auto-ids with child id [#4840](https://github.com/emilk/egui/pull/4840) by [@ironpeak](https://github.com/ironpeak)
78
+
* Nicer looking text selection, especially in light mode [#5017](https://github.com/emilk/egui/pull/5017) by [@emilk](https://github.com/emilk)
79
+
* Fix blurry lines by aligning to pixel grid [#4943](https://github.com/emilk/egui/pull/4943) by [@juancampa](https://github.com/juancampa)
80
+
* Center-align all text vertically [#5117](https://github.com/emilk/egui/pull/5117) by [@emilk](https://github.com/emilk)
81
+
* Clamp margin values in `Margin::ui`[#4873](https://github.com/emilk/egui/pull/4873) by [@rustbasic](https://github.com/rustbasic)
82
+
* Make `scroll_to_*` animations configurable [#4305](https://github.com/emilk/egui/pull/4305) by [@lucasmerlin](https://github.com/lucasmerlin)
83
+
* Update `Button` to correctly align contained image [#4891](https://github.com/emilk/egui/pull/4891) by [@PrimmR](https://github.com/PrimmR)
84
+
* Deprecate `ahash` re-exports [#4979](https://github.com/emilk/egui/pull/4979) by [@oscargus](https://github.com/oscargus)
85
+
* Fix: Ensures correct IME behavior when the text input area gains or loses focus [#4896](https://github.com/emilk/egui/pull/4896) by [@rustbasic](https://github.com/rustbasic)
86
+
* Enable rustdoc `generate-link-to-definition` feature on docs.rs [#5030](https://github.com/emilk/egui/pull/5030) by [@GuillaumeGomez](https://github.com/GuillaumeGomez)
87
+
* Make some `Memory` methods public [#5046](https://github.com/emilk/egui/pull/5046) by [@bircni](https://github.com/bircni)
88
+
* Deprecate `ui.set_sizing_pass`[#5074](https://github.com/emilk/egui/pull/5074) by [@emilk](https://github.com/emilk)
89
+
* Export module `egui::frame`[#5087](https://github.com/emilk/egui/pull/5087) by [@simgt](https://github.com/simgt)
90
+
* Use `log` crate instead of `eprintln` & remove some unwraps [#5010](https://github.com/emilk/egui/pull/5010) by [@bircni](https://github.com/bircni)
91
+
* Fix: `Event::Copy` and `Event::Cut` behave as if they select the entire text when there is no selection [#5115](https://github.com/emilk/egui/pull/5115) by [@rustbasic](https://github.com/rustbasic)
92
+
93
+
### 🐛 Fixed
94
+
* Prevent text shrinking in tooltips; round wrap-width to integer [#5161](https://github.com/emilk/egui/pull/5161) by [@emilk](https://github.com/emilk)
95
+
* Fix bug causing tooltips with dynamic content to shrink [#5168](https://github.com/emilk/egui/pull/5168) by [@emilk](https://github.com/emilk)
96
+
* Remove some debug asserts [#4826](https://github.com/emilk/egui/pull/4826) by [@emilk](https://github.com/emilk)
97
+
* Handle the IME event first in `TextEdit` to fix some bugs [#4794](https://github.com/emilk/egui/pull/4794) by [@rustbasic](https://github.com/rustbasic)
98
+
* Slider: round to decimals after applying `step_by`[#4822](https://github.com/emilk/egui/pull/4822) by [@AurevoirXavier](https://github.com/AurevoirXavier)
99
+
* Fix: hint text follows the alignment set on the `TextEdit`[#4889](https://github.com/emilk/egui/pull/4889) by [@PrimmR](https://github.com/PrimmR)
100
+
* Request focus on a `TextEdit` when clicked [#4991](https://github.com/emilk/egui/pull/4991) by [@Zoxc](https://github.com/Zoxc)
101
+
* Fix `Id` clash in `Frame` styling widget [#4967](https://github.com/emilk/egui/pull/4967) by [@YgorSouza](https://github.com/YgorSouza)
102
+
* Prevent `ScrollArea` contents from exceeding the container size [#5006](https://github.com/emilk/egui/pull/5006) by [@DouglasDwyer](https://github.com/DouglasDwyer)
103
+
* Fix bug in size calculation of truncated text [#5076](https://github.com/emilk/egui/pull/5076) by [@emilk](https://github.com/emilk)
104
+
* Fix: Make sure `RawInput::take` clears all events, like it says it does [#5104](https://github.com/emilk/egui/pull/5104) by [@emilk](https://github.com/emilk)
105
+
* Fix `DragValue` range clamping [#5118](https://github.com/emilk/egui/pull/5118) by [@emilk](https://github.com/emilk)
106
+
* Fix: panic when dragging window between monitors of different pixels_per_point [#4868](https://github.com/emilk/egui/pull/4868) by [@rustbasic](https://github.com/rustbasic)
107
+
108
+
10
109
## 0.28.1 - 2024-07-05 - Tooltip tweaks
11
110
### ⭐ Added
12
111
* Add `Image::uri()`[#4720](https://github.com/emilk/egui/pull/4720) by [@rustbasic](https://github.com/rustbasic)
Copy file name to clipboardexpand all lines: crates/ecolor/CHANGELOG.md
+4
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,10 @@ This file is updated upon each release.
6
6
Changes since the last release can be found at <https://github.com/emilk/egui/compare/latest...HEAD> or by running the `scripts/generate_changelog.py` script.
7
7
8
8
9
+
## 0.29.0 - 2024-09-26
10
+
* Document the fact that the `hex_color!` macro is not `const`[#5169](https://github.com/emilk/egui/pull/5169) by [@YgorSouza](https://github.com/YgorSouza)
0 commit comments