1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-28 07:23:13 -04:00
Commit Graph

100 Commits

Author SHA1 Message Date
Konkitoman
098d94e705 Fix viewports example 2023-08-05 15:34:23 +03:00
Konkitoman
5ca60cad0e Now seting the time of event as the elapsing time from when the app started for sync viewports 2023-08-05 15:27:06 +03:00
Konkitoman
e8027b3c3a Removed viewport_id and parent_viewport_id from eframe::Frame 2023-08-04 09:10:01 +03:00
Konkitoman
2057993f54 Some more work now stuff is rendered corectly 2023-08-02 20:49:41 +03:00
Konkitoman
141421547b Fix: a sync viewport cannot render itself he needs his parent to be rendered now when sync viewport needs a redraw that redraw will be redirected to his parent 2023-08-02 19:58:12 +03:00
Konkitoman
34fea8a0e5 Some more work on making possible to render viewport_sync in glutin
Context::current_rendering_viewport was replaced by Context::get_viewport_id
Added Context::get_parent_viewport_id
Changed Context::run to need parent_viewport_id
Changed Context::beagin to need parent_viewport_id
Added ImplContext::frame_stack
Some work on making posibile to render multiples frames at the same time
A lot of more things in glutin backend is not Arc<RwLock<T>>
2023-08-02 17:14:31 +03:00
Konkitoman
c7c9713bf8 create_viewport_sync prep Glutin
WGPU Unimplemented again, use Arc<RwLock<T>> for a lot of things
2023-08-01 17:30:36 +03:00
Konkitoman
1e6c1b55d3 Some work on frontend for making create_viewport_sync possible 2023-08-01 15:19:18 +03:00
Konkitoman
fd1c01cf1f Removed Context::set_current_rendering_viewport
Now we always need to say what viewport we rendering in Context::beagin or Context::run
2023-07-30 20:03:56 +03:00
Konkitoman
bb0b80fb08 Fix some warnings 2023-07-28 18:28:16 +03:00
Konkitoman
c56d09a2e5 Fix WGPU implementation memory leak
Now unused surfaces will be cleared
2023-07-27 18:22:43 +03:00
Konkitoman
769c71a714 WGPU implementation 2023-07-27 18:18:14 +03:00
Konkitoman
0e74cf4ca0 Some work making the native window to look like the egui one, and to work the same 2023-07-27 15:08:21 +03:00
Konkitoman
cb09e630a2 Add a new example and change how embedding is stored 2023-07-25 16:40:03 +03:00
Konkitoman
2131f251fc Update example and now the viewport will always render if can create a native window will be embedded 2023-07-25 12:43:34 +03:00
Konkitoman
08b3afdc5e Now the window will have the correct size
Now window will not be resizable if is set to false
2023-07-25 12:10:56 +03:00
Konkitoman
19d1fecb99 Now we can drag any viewport but only the viewport that is focused will be draged because if not on x11 the input will be taken until the application is killed 2023-07-25 11:53:10 +03:00
Konkitoman
93a7c018d7 Now App::update will be responsabile for what viewport will be drawned and its content
A big refactoring was needed
2023-07-25 10:54:31 +03:00
Konkitoman
19f807b4e9 Fix 100% cpu usage because a non existen window is tryng to draw
Fix a small memory leak
2023-07-25 09:57:54 +03:00
Konkitoman
86068c6590 Fix small memory leak
Now windows that do not exist will not be able to stay in redraw requests
2023-07-25 09:48:12 +03:00
Konkitoman
4143f58cc8 Now if winit supports if the window cant be closed will not show the close button 2023-07-24 16:37:47 +03:00
Konkitoman
f4a196cddc Now a WindowEvent::CloseRequested is received will be sent to egui_winit::State in RawInput
Now when we press the close button from a native window if the window has a open variabile connected the window will be closed
2023-07-24 16:15:34 +03:00
Konkitoman
4d883b8217 Fix mouse input
Now on Context.create_viewport in the render function will we have viewport_id and parent_viewport_id
New problem if a windows is fucused and we interact with other window the first event will be send to the last window that was focused
2023-07-24 14:24:30 +03:00
Konkitoman
3a1d9f2e21 A lot of changes:
Now the Viewport render function is passed to the backend
I was needed to update the demo because now Window::show() needs a Fn before was a FnOnce
I changed from FnOnce to Fn because we want the window to be rendered separately from the main window
That means now the variabiles that we are moving to window need to be Rc or Arc!
This is making harder to use `Window`!
I'am waiting for more ideas!
In eframe now any Window has a property render that stores the current window render function, if has not function App::update will be called insted!
New problems in any other window excluding the main window we have no mouse input, i don't know why!
Now every window has embedded to false by default, for testing purposes!
2023-07-23 19:38:02 +03:00
Konkitoman
ea2dcd8cb5 Rename every thing that i was implemented for multiples windows to Viewport 2023-07-23 12:47:36 +03:00
Konkitoman
0daafa0c0f Fixed the problem that cause a break in time space 2023-07-21 22:58:17 +03:00
Konkitoman
2b13572220 Now every window has egui-winit, but a big problem is that a window don't render if the window frame number is bigger the the current frame, this is a spaculation because i don't know if a window stores the current frame i don't know what happens because new window render from the first time but the egui-ctx don't want to render the new window
is like i have tow egui-ctx
2023-07-21 22:00:22 +03:00
Konkitoman
23bb315468 Now a window will not render other window content 2023-07-19 14:01:12 +03:00
Konkitoman
b66cf96343 Not will only redraw what is needed and the cpu will not be at 100% all the time 2023-07-19 11:16:51 +03:00
Konkitoman
680a547a68 Now is rendering on the new windows 2023-07-19 10:48:35 +03:00
Konkitoman
28d5c6e62c Now window will be destroyed if is not rendered 2023-07-18 17:52:55 +03:00
Konkitoman
8f475ef8d8 Is creating a window 2023-07-18 16:50:41 +03:00
Konkitoman
c91de8a871 Some more work for multiples windows support 2023-07-18 15:29:56 +03:00
Konkitoman
7cbe26a1a1 Some work for making eframe to be able to have multiples windows 2023-07-17 16:15:38 +03:00
icedrocket
2a2529bb9c eframe: sleep a bit only when minimized (#3139) 2023-07-10 10:56:24 +02:00
bilabila
9774d4af2c eframe: fix android app quit on resume with glow backend (#3080) 2023-06-15 09:05:11 +02:00
τ
073f49682d Expose Raw Window and Display Handles (#3073)
* Expose raw window and display handles in eframe

* Ensure that no one implements `Clone` in the future

* Cleanup

---------

Co-authored-by: Matti Virkkunen <mvirkkunen@gmail.com>
2023-06-11 22:18:28 +02:00
pan93412
860dac69da eframe: Only run_return twice on Windows (#3053)
The approach of #1889 may remove observers in a view
twice, which produces the Obj-C Exception:

    Cannot remove an observer <...> for the key path
    "nextResponder" from <WinitView ...> because
    it is not registered as an observer.

The above message can only be seen when attaching the
application to debugger. Users normally see:

    [1]    *** trace trap  cargo run

This commit fixes it by only running `event_loop.run_return()`
twice on Windows. Besides:

* We have set `ControlFlow::Exit` on `Event::LoopDestroyed`,
  `EventResult::Exit` and on error; therefore, it is safe
  to not calling `set_exit()`.
* This commit also fix the persistence function in macOS.
  It can't store the content in Memory due to this exception.

Fixed: #2768 (eframe: "App quit unexpectedly" on macOS)

Signed-off-by: pan93412 <pan93412@gmail.com>
2023-06-05 14:57:21 +02:00
Emil Ernerfeldt
03bb89153b eframe: Use NativeOptions::AppId for the persistance location (#3014)
* eframe: Use NativeOptions::AppId for the persistance location

* Fix doclinks

* Fix typo in docs

Closes https://github.com/emilk/egui/issues/3003
2023-05-23 08:38:14 +02:00
Thomas Krause
cc9f1adb84 Add an optional app_id field to eframe's NativeOptions for Wayland (#3007)
* Add an optional app_id field to eframe's NativeOptions (#1600).

This is used in the window builder to set the application ID, which is e.g. important for a proper configuration in `.desktop` files under Wayland.
When no application ID is explicitly set, it defaults to the title of the window.

* Only enable NativeOptions::app_id under Linux.

The wayland feature is not sufficent as constraint and it won't compile e.g. under Windows.
While Wayland could also be used on other Unix-Systems like FreeBSD, this would probably need some specific testing. Winit uses the following definition as "wayland_platform" and on which the required packages are available:

> wayland_platform: { all(feature = "wayland", free_unix, not(wasm), not(redox)) },

* Do not use title as default application ID under Wayland.

The title might be used to also communicate state (opened file, ...) to the user and this might have unforeseen consequences for the application ID. It seems to be better to use the old behavior of not setting an application ID in this case. Also add an example on how to set the application ID in the documentation.

* Avoid as_deref(), which was a left-over of a previous version

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2023-05-22 21:40:04 +02:00
Emil Ernerfeldt
e9fa6c8ff6 Add Pointer::is_decidedly_dragging and could_any_button_be_click (#2979)
* Add Pointer::is_decidedly_dragging and could_any_button_be_click

This allows users to distinguish between click and drags
while they are not yet done.

* Fix warning in eframe

* fix typo
2023-05-08 12:27:49 +02:00
Andreas Reich
f76eefb98d [wgpu] Expose wgpu::Adapter via RenderState (#2954)
* [wgpu] Expose adapter, better errors, better docs, more code sharing, use stencil bits

* doc fix

* remove unnecessary unsafe

* handle missing framebuffer format

* better handling of renderstate creation in winit.rs

* remove unnecessary use directive
2023-04-25 17:42:13 +02:00
Emil Ernerfeldt
7f2de426d2 eframe: Set app icon on Mac and Windows (#2940)
* eframe: Set app icon on Mac and Windows

Also: correctly set window title on Mac when launching from
another process, e.g. python.

Co-authored-by: Wumpf <andreas@rerun.io>

* lint fixes

* Fix web build

* fix typo

* Try fix windows build

---------

Co-authored-by: Wumpf <andreas@rerun.io>
2023-04-20 15:47:04 +02:00
Emil Ernerfeldt
834e2e9f50 Fix: request_repaint_after works even when called from background thread (#2939)
* Refactor repaint logic

* request_repaint_after also fires the request_repaint callback

* Bug fixes

* Add test to egui_demo_app

* build_demo_web: build debug unless --release is specified

* Fix the web backend too

* Run special clippy for wasm, forbidding some types/methods

* Remove wasm_bindgen_check.sh

* Fix typos

* Revert "Remove wasm_bindgen_check.sh"

This reverts commit 92dde25344.

* Only run cranky/clippy once
2023-04-20 10:56:52 +02:00
TicClick
e3a021eea6 Allow for requesting the user's attention to the window (#2905)
* add method for requesting attention to the main window

* use another enum member for user attention type instead of nested `Option`s

(also, document the enum members now that they don't mirror `winit`)

* update the docstring

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>

* add an example app for testing window attention requests

* Apply suggestions from code review

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>

* remove `chrono` dependency and improve the attention example's readability

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2023-04-19 15:29:17 +02:00
Emil Ernerfeldt
d486c76a9f Remove dark-light dependency (#2929)
* Remove dark-light dependency

Since https://github.com/emilk/egui/pull/2750 we now get what we need
straight from `winit`.

* fix warning

* Docstring formatting

* fix typo in check.sh
2023-04-18 21:52:48 +02:00
Emil Ernerfeldt
9c9a54ce36 Replace tracing with log (#2928)
* Replace tracing crate with log

It's just so much simpler to use

* Add `bacon wasm` job

* eframe: add a WebLogger for piping log events to the web console
2023-04-18 21:11:26 +02:00
Dixeran
8a2cfbd131 Apply 'with_active' option to winit (#2813)
* feat: apply 'with_active' option to winit

* fix: remove platform specification

- winit accept this option for all platforms

* build fix

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2023-04-18 16:13:25 +02:00
Emil Ernerfeldt
4809747952 Check for typos on CI (#2918)
* Check for typos on CI

* Fix all typos
2023-04-18 16:10:20 +02:00
Jozef Číž
33aa4d698f Fix typos (#2866)
* Fix typos in comments

* Fix typos in demo texts

* Fix typos in code names

* Fix typos in cargos

* Fix typos in changelogs
2023-04-18 15:52:45 +02:00