1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 07:03:14 -04:00
Commit Graph

3591 Commits

Author SHA1 Message Date
Hubert Głuchowski
40f237d43c Add comment and check for newline before multiline layout 2024-12-05 18:45:36 +01:00
Hubert Głuchowski
25da82279f Fix text horizontal alignment 2024-12-05 18:27:38 +01:00
Hubert Głuchowski
c6592ec898 Fix nits 2024-12-04 19:30:13 +01:00
Hubert Głuchowski
e15b34b984 Slightly simplify paint_text_selection code 2024-12-02 00:52:25 +01:00
Fishhh
139f28640d Replace a hack with a proper implementation 2024-11-30 19:29:40 +01:00
Fishhh
110a9c39e3 Move some PlacedRow methods back to Row 2024-11-30 18:27:13 +01:00
Fishhh
bbe566256e Fix Row::ends_with_newline docs, explain skipping of last galley row 2024-11-30 18:17:38 +01:00
Fishhh
fd8413c62a Simplify layout_multiline loop loop into a while loop 2024-11-30 18:12:24 +01:00
Fishhh
1be24ba470 Respect LayoutJob::round_output_size_to_nearest_ui_point 2024-11-30 17:51:07 +01:00
Fishhh
66c83c31ce Move ends_with_newline back into Row 2024-11-30 17:51:07 +01:00
Fishhh
6147ff3668 Round PlacedRow positions to pixels during multiline layout 2024-11-30 16:59:38 +01:00
Fishhh
6d6bc3befb Respect first_row_min_height during multiline Galley layout 2024-11-30 16:47:18 +01:00
Fishhh
abbc561ae1 Correctly handle empty lines 2024-11-30 15:59:50 +01:00
Hubert Głuchowski
bc86bec1cb Properly handle row repositioning 2024-11-29 15:57:47 +01:00
Hubert Głuchowski
f028154da8 Move cached-multiline-layout code into a helper function 2024-11-29 13:02:49 +01:00
Hubert Głuchowski
3de1723659 Don't add leading space to more than one split layout section 2024-11-29 11:55:15 +01:00
Hubert Głuchowski
4e3f162801 Fix lints 2024-11-29 11:50:24 +01:00
Hubert Głuchowski
db32a1ed44 Make Galleys share Rows and store their offsets 2024-11-28 18:54:54 +01:00
Hubert Głuchowski
150c0f662b Cache individual lines of text in GalleyCache 2024-11-28 18:53:45 +01:00
Hubert Głuchowski
622b848c00 Fix typo 2024-11-28 16:47:05 +01:00
Samson
84cc1572b1 Update glow to 0.16 (#5395)
<!--
Please read the "Making a PR" section of
[`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md)
before opening a Pull Request!

* Keep your PR:s small and focused.
* The PR title is what ends up in the changelog, so make it descriptive!
* If applicable, add a screenshot or gif.
* If it is a non-trivial addition, consider adding a demo for it to
`egui_demo_lib`, or a new example.
* Do NOT open PR:s from your `master` branch, as that makes it hard for
maintainers to test and add commits to your PR.
* Remember to run `cargo fmt` and `cargo clippy`.
* Open the PR as a draft until you have self-reviewed it and run
`./scripts/check.sh`.
* When you have addressed a PR comment, mark it as resolved.

Please be patient! I will review your PR, but my time is limited!
-->

* [X] I have followed the instructions in the PR template

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-11-26 21:00:34 +01:00
Nicolas
88543270e0 Fix CI failures (#5407)
Fixes the RUSTSEC-2024-0399 issue with rustls and the errors in the
regression test
See:
https://rustsec.org/advisories/RUSTSEC-2024-0399.html
https://github.com/rustls/rustls/issues/2227

This also fixes the cargo deny runs which are currently failing

* [x] I have followed the instructions in the PR template
2024-11-26 20:09:59 +01:00
Valentin
7cee35c02a document justification for FallbackEgl (#5392)
The previous link does not explain why we chose FallbackEgl. This is a
better link.
2024-11-26 15:23:43 +01:00
Valentin
6359ba7e66 forward x11 and wayland features to glutin (#5391)
eframe has features for selecting between x11 and wayland. eframe does
not forward the features to glutin. This makes glutin always compile
with both backends enabled. This change forwards the feature. This
allows users of egui to compile less dependencies when they only need
one of x11, wayland.

To understand this change, read the glutin Cargo.toml [1] and the glutin
build.rs [2]. You always have to enable glutin's glx feature with the
x11 feature. The other default features (egl, wgl) stay enabled. This is
intentional so that everything continues to work as before. We could
further minimize when egl and wgl are enabled, but that is not part of
this change. There is little reason to do so because those feature
already only add dependencies when you compile glutin for the right
platform (for example wgl on windows).

[1]
https://github.com/rust-windowing/glutin/blob/v0.32.1/glutin/Cargo.toml
[2]
https://github.com/rust-windowing/glutin/blob/v0.32.1/glutin/build.rs
2024-11-26 15:22:44 +01:00
Nicolas
12f9d6f42c add painter.line() (#5291)
* Closes <https://github.com/emilk/egui/issues/5273>
* [x] I have followed the instructions in the PR template
2024-11-26 15:17:47 +01:00
lucasmerlin
e28505077d Update accesskit to 0.17 (#5372)
Updates accesskit and kittest. 

* [x] I have followed the instructions in the PR template
2024-11-26 15:16:08 +01:00
lucasmerlin
2f9b14def8 Add links to the wiki and move integrations there (#5373)
* [x] I have followed the instructions in the PR template
2024-11-26 15:00:38 +01:00
lucasmerlin
9ecc0b232c Fix disabled widgets "eating" focus (#5370)
- fixes https://github.com/emilk/egui/issues/5359

For the test I added a `Harness::press_key` function. We should
eventually add these to kittest, probably via a trait one can implement
for the `Harness` but for now this should do.
2024-11-26 14:31:30 +01:00
Elie Michel
83a30064f4 Minor typo in README (#5381) 2024-11-18 17:28:22 +01:00
GiGaGon
1787952a83 Create gray -> grey doc aliases (#5362)
As someone who uses "grey" instead of "gray", it is annoying that my
autocomplete can never find any of the "gray" color related things, so
this adds doc aliases for that.

* [x] I have followed the instructions in the PR template
2024-11-11 13:21:58 +01:00
lucasmerlin
3c7ad0ee12 egui_kittest: Allow passing state to the app closure (#5313)
The allows us to pass any state to the ui closure. While it is possible
to just store state in the closure itself, accessing that state after
the harness was created to e.g. read or modify it would require interior
mutability. With this change there are new `Harness::new_state`,
`Harness::run_state`, ... methods that allow passing state on each run.

This builds on top of #5301, which should be merged first

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2024-11-06 14:43:41 +01:00
Emil Ernerfeldt
fc743d63b4 Add link to helpful article in font alpha TODO 2024-11-06 13:33:43 +01:00
lucasmerlin
5d6a58b917 Fix some typos (#5339)
The spell check pipeline in #5313 suddenly failed, this fixes these
typos and some more found via my IDEs spell checker tool
2024-11-04 09:51:34 +01:00
lucasmerlin
ad14bf2490 Add Harness::new_ui, Harness::fit_contents (#5301)
This adds a `Harness::new_ui`, which accepts a Ui closure and shows the
ui in a central panel. One big benefit is that this allows us to add a
fit_contents method that can run the ui closure with a sizing pass and
resize the "screen" based on the content size.

I also used this to add a snapshot test for the rendering_test at
different scales.
2024-11-01 18:30:40 +01:00
Cody Neiman
21826bec18 Use proper image crate URI and MIME support detection (#5324)
<!--
Please read the "Making a PR" section of
[`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md)
before opening a Pull Request!

* Keep your PR:s small and focused.
* The PR title is what ends up in the changelog, so make it descriptive!
* If applicable, add a screenshot or gif.
* If it is a non-trivial addition, consider adding a demo for it to
`egui_demo_lib`, or a new example.
* Do NOT open PR:s from your `master` branch, as that makes it hard for
maintainers to test and add commits to your PR.
* Remember to run `cargo fmt` and `cargo clippy`.
* Open the PR as a draft until you have self-reviewed it and run
`./scripts/check.sh`.
* When you have addressed a PR comment, mark it as resolved.

Please be patient! I will review your PR, but my time is limited!
-->

* [X] I have followed the instructions in the PR template

I removed the webp supported URI test given that the webp feature would
have to be enabled. I kept that webp is not supported in the other
tests.

There might need to be an additional warning in the changelog that image
support detection is now stricter.
2024-11-01 13:33:12 +01:00
StarStarJ
3f5cd74de7 Put font data into Arc to reduce memory consumption (#5276)
egui never accesses the `FontDefinitions`' member fields mutably, except
in `fonts_tweak_ui` where it cloned the `FontDefinitions` object anyway.

This patch reduces system memory consumption for shared font
definitions.
And also removes some overhead from copying (e.g. for the per
`pixel_per_points` font atlas)

Also it allows to keep a copy of the font definitions outside of egui.

In my App that uses international fonts:
Before:

![image](https://github.com/user-attachments/assets/f8dfb4f4-a21c-447c-8cf9-83025ad6e960)

New:

![image](https://github.com/user-attachments/assets/9f297fbd-e620-4b7e-a32a-65073ee805ed)


Note: If `Arc` is not wanted, then it could ofc be abstracted away.

I know this is quite a breaking change API wise, but would like to hear
your opinion.
2024-11-01 13:30:02 +01:00
lucasmerlin
793cb92557 Add egui_kittest label to workflow and changelog script (#5323)
* [X] I have followed the instructions in the PR template
2024-11-01 13:25:41 +01:00
YgorSouza
444c21a437 Prevent panic when copying text outside of a secure context (#5326)
* Closes <https://github.com/emilk/egui/issues/5293>
* [x] I have followed the instructions in the PR template
2024-11-01 13:21:59 +01:00
lucasmerlin
bbbd936f50 Exclude icon.png from lfs (#5336)
* Closes #5331 
* [x] I have followed the instructions in the PR template
2024-11-01 13:21:05 +01:00
Emil Ernerfeldt
42652e223c Update some crates (#5337) 2024-11-01 13:07:01 +01:00
TÖRÖK Attila
67c82ed5f2 wgpu: Bump to wgpu 23.0.0 and wasm-bindgen to 0.2.95 (#5330)
Co-authored-by: Andreas Reich <r_andreas2@web.de>
2024-10-30 18:53:22 +01:00
valadaptive
5bfff316c9 Fix documentation for file drag and drop (#5328)
<!--
Please read the "Making a PR" section of
[`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md)
before opening a Pull Request!

* Keep your PR:s small and focused.
* The PR title is what ends up in the changelog, so make it descriptive!
* If applicable, add a screenshot or gif.
* If it is a non-trivial addition, consider adding a demo for it to
`egui_demo_lib`, or a new example.
* Do NOT open PR:s from your `master` branch, as that makes it hard for
maintainers to test and add commits to your PR.
* Remember to run `cargo fmt` and `cargo clippy`.
* Open the PR as a draft until you have self-reviewed it and run
`./scripts/check.sh`.
* When you have addressed a PR comment, mark it as resolved.

Please be patient! I will review your PR, but my time is limited!
-->

The `RawInput::dropped_files` documentation referred to `NativeOptions`,
but the `drag_and_drop` option was moved to `ViewportBuilder` and is now
enabled by default.

Note that drag-and-drop is not *explicitly* enabled by default here, but
rather is enabled by default in winit. We only override winit's default
if the API consumer specifies it. It might be a good idea in general to
provide explicit defaults for everything in `ViewportBuilder` so we're
not relying on winit's behavior, but that's best left for another PR.

* Closes N/A
* [x] I have followed the instructions in the PR template
2024-10-30 15:24:45 +01:00
Cody Neiman
2cd3485dd4 Update MSRV from 1.76 to 1.77 (#5322)
<!--
Please read the "Making a PR" section of
[`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md)
before opening a Pull Request!

* Keep your PR:s small and focused.
* The PR title is what ends up in the changelog, so make it descriptive!
* If applicable, add a screenshot or gif.
* If it is a non-trivial addition, consider adding a demo for it to
`egui_demo_lib`, or a new example.
* Do NOT open PR:s from your `master` branch, as that makes it hard for
maintainers to test and add commits to your PR.
* Remember to run `cargo fmt` and `cargo clippy`.
* Open the PR as a draft until you have self-reviewed it and run
`./scripts/check.sh`.
* When you have addressed a PR comment, mark it as resolved.

Please be patient! I will review your PR, but my time is limited!
-->

* [X] I have followed the instructions in the PR template

I am preparing a separate PR that adds support for JXL with `jxl-oxide`,
which is unlikely to be added to the `image` crate anytime soon (more
context will be provided in that PR).

`jxl-oxide` makes use of the
[`array::each_mut`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut)
API which was stabilized in 1.77, which is the motivation for this MSRV
bump.

Rust 1.77 was officially released to stable on 21 March, 2024.
2024-10-30 09:06:34 +01:00
lucasmerlin
dafcfdad80 egui_kittest: Allow customizing the snapshot threshold and path (#5304)
This adds `egui_kittest::try_image_snapshot_options` and
`egui_kittest::image_snapshot_options`, as well as
`Harness::wgpu_snapshot_options` and
`Harness::try_wgpu_snapshot_options`

* [X] I have followed the instructions in the PR template
2024-10-29 19:52:21 +01:00
Arthur Brussee
759a0b2a21 Add option to initialize on existing wgpu setup (#5319)
When mixing and matching eframe with other wgpu applications
(https://github.com/tracel-ai/burn in my case), it can be helpful to use
an existing wgpu setup to initialize eframe with. This PR changes the
WpuConfiguration (in a non-backwards compat way :/), to either take some
options how to create a wgpu setup, or an existing wgpu setup
(consisting of an instance, adapter, device and queue).

* [x] I have followed the instructions in the PR template

---------

Co-authored-by: Andreas Reich <r_andreas2@web.de>
2024-10-29 17:12:28 +01:00
Bruce Mitchener
fba2dc85a3 egui-winit: Remove implicit accesskit_winit feature (#5316)
This is controlled by the `accesskit` feature and nothing needs the
implicit `accesskit_winit` feature, so use `dep:` syntax to prevent it
from being created.

* [x] I have followed the instructions in the PR template
2024-10-29 13:09:31 +01:00
MStarha
44877d490e Respect Style::override_font_id in RichText (#5310)
<!--
Please read the "Making a PR" section of
[`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md)
before opening a Pull Request!

* Keep your PR:s small and focused.
* The PR title is what ends up in the changelog, so make it descriptive!
* If applicable, add a screenshot or gif.
* If it is a non-trivial addition, consider adding a demo for it to
`egui_demo_lib`, or a new example.
* Do NOT open PR:s from your `master` branch, as that makes it hard for
maintainers to test and add commits to your PR.
* Remember to run `cargo fmt` and `cargo clippy`.
* Open the PR as a draft until you have self-reviewed it and run
`./scripts/check.sh`.
* When you have addressed a PR comment, mark it as resolved.

Please be patient! I will review your PR, but my time is limited!
-->

Currently `Style::override_font_id` does not affect widgets with their
`TextStyle` like `Button`s, `ComboBox`es, `CheckBox`es, etc. This PR
fixes this behavior such that all widgets using default configuration of
`RichText` are affected by this setting.
* [x] I have followed the instructions in the PR template
2024-10-29 12:51:17 +01:00
rustbasic
926799a167 Fix: Popup incorrectly calculates possible min width of popup causing panic (#5208)
Fix: Popup incorrectly calculates possible min width of popup causing
panic

* Closes #5206
2024-10-29 12:43:05 +01:00
zhatuokun
c7d46ac9f9 Fix: Sides did not apply the layout position correctly. (#5303)
Same as last time, but use `available_rect_before_wrap` to avoid
containing infinity.
2024-10-29 12:42:02 +01:00
rustbasic
3f2bd14554 Fix: Window::default_pos does not work (#5315)
Fix: Window::default_pos does not work

Issues: Since `default_size` is not applied to `area`,
`style.spacing.default_area_size` is applied, causing problems.

* Closes #5314
2024-10-29 12:40:51 +01:00