1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -04:00

Fix all warnings

This commit is contained in:
Konkitoman
2023-08-15 04:04:52 +03:00
parent 17cd31636f
commit 18575d5931
14 changed files with 115 additions and 163 deletions

View File

@@ -113,12 +113,7 @@ pub trait App {
/// The [`egui::Context`] can be cloned and saved if you like.
///
/// To force a repaint, call [`egui::Context::request_repaint`] at any time (e.g. from another thread).
fn update(
&mut self,
ctx: &egui::Context,
frame: &mut Frame,
render_function: Option<&ViewportRender>,
);
fn update(&mut self, ctx: &egui::Context, frame: &mut Frame, render: Option<&ViewportRender>);
/// Get a handle to the app.
///
@@ -818,7 +813,7 @@ impl Frame {
/// struct MyApp;
///
/// impl eframe::App for MyApp {
/// fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
/// fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame, _render: Option<&egui::ViewportRender>) {
/// // In real code the app would render something here
/// frame.request_screenshot();
/// // Things that are added to the frame after the call to

View File

@@ -32,7 +32,7 @@
//! }
//!
//! impl eframe::App for MyEguiApp {
//! fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
//! fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame, _render: Option<&egui::ViewportRender>) {
//! egui::CentralPanel::default().show(ctx, |ui| {
//! ui.heading("Hello World!");
//! });
@@ -187,7 +187,7 @@ mod native;
/// }
///
/// impl eframe::App for MyEguiApp {
/// fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
/// fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame, _render: Option<&egui::ViewportRender>) {
/// egui::CentralPanel::default().show(ctx, |ui| {
/// ui.heading("Hello World!");
/// });

View File

@@ -7,8 +7,6 @@ use winit::platform::macos::WindowBuilderExtMacOS as _;
use raw_window_handle::{HasRawDisplayHandle as _, HasRawWindowHandle as _};
#[cfg(feature = "accesskit")]
use egui::accesskit;
use egui::{mutex::RwLock, NumExt as _, ViewportBuilder, ViewportId, ViewportRender};
#[cfg(feature = "accesskit")]
use egui_winit::accesskit_winit;
@@ -24,13 +22,6 @@ pub struct WindowState {
pub maximized: bool,
}
pub fn points_to_size(points: egui::Vec2) -> winit::dpi::LogicalSize<f64> {
winit::dpi::LogicalSize {
width: points.x as f64,
height: points.y as f64,
}
}
pub fn read_window_info(
window: &winit::window::Window,
pixels_per_point: f32,
@@ -126,7 +117,6 @@ pub fn window_builder<E>(
#[cfg(all(feature = "wayland", target_os = "linux"))]
{
use winit::platform::wayland::WindowBuilderExtWayland as _;
match &native_options.app_id {
Some(app_id) => window_builder = window_builder.with_name(app_id, ""),
None => window_builder = window_builder.with_name(title, ""),
@@ -217,28 +207,6 @@ fn largest_monitor_point_size<E>(event_loop: &EventLoopWindowTarget<E>) -> egui:
}
}
pub fn load_icon(icon_data: epi::IconData) -> Option<winit::window::Icon> {
winit::window::Icon::from_rgba(icon_data.rgba, icon_data.width, icon_data.height).ok()
}
#[cfg(target_os = "windows")]
fn window_builder_drag_and_drop(
window_builder: winit::window::WindowBuilder,
enable: bool,
) -> winit::window::WindowBuilder {
use winit::platform::windows::WindowBuilderExtWindows as _;
window_builder.with_drag_and_drop(enable)
}
#[cfg(not(target_os = "windows"))]
fn window_builder_drag_and_drop(
window_builder: winit::window::WindowBuilder,
_enable: bool,
) -> winit::window::WindowBuilder {
// drag and drop can only be disabled on windows
window_builder
}
pub fn handle_app_output(
window: &winit::window::Window,
current_pixels_per_point: f32,
@@ -359,9 +327,7 @@ pub struct EpiIntegration {
impl EpiIntegration {
#[allow(clippy::too_many_arguments)]
pub fn new<E>(
event_loop: &EventLoopWindowTarget<E>,
max_texture_side: usize,
pub fn new(
window: &winit::window::Window,
system_theme: Option<Theme>,
app_name: &str,
@@ -455,7 +421,7 @@ impl EpiIntegration {
app,
window,
egui_winit,
None,
&None,
ViewportId::MAIN,
ViewportId::MAIN,
);
@@ -473,7 +439,6 @@ impl EpiIntegration {
&mut self,
app: &mut dyn epi::App,
event: &winit::event::WindowEvent<'_>,
window_id: &winit::window::WindowId,
egui_winit: &mut egui_winit::State,
viewport_id: ViewportId,
) -> EventResponse {
@@ -508,22 +473,12 @@ impl EpiIntegration {
egui_winit.on_event(&self.egui_ctx, event)
}
#[cfg(feature = "accesskit")]
pub fn on_accesskit_action_request(
&mut self,
request: accesskit::ActionRequest,
window_id: &winit::window::WindowId,
egui_winit: &mut egui_winit::State,
) {
egui_winit.on_accesskit_action_request(request);
}
pub fn update(
&mut self,
app: &mut dyn epi::App,
window: &winit::window::Window,
egui_winit: &mut egui_winit::State,
render: Option<Arc<Box<ViewportRender>>>,
render: &Option<Arc<Box<ViewportRender>>>,
viewport_id: egui::ViewportId,
parent_id: egui::ViewportId,
) -> egui::FullOutput {

View File

@@ -413,9 +413,7 @@ fn run_and_exit(event_loop: EventLoop<UserEvent>, mut winit_app: impl WinitApp +
mod glow_integration {
use std::sync::Arc;
use egui::{
epaint::ahash::HashMap, mutex::RwLock, NumExt as _, ViewportBuilder, ViewportRender,
};
use egui::{epaint::ahash::HashMap, mutex::RwLock, NumExt as _, ViewportRender};
use egui_winit::{
changes_between_builders, create_winit_window_builder, process_viewport_commands,
EventResponse,
@@ -882,8 +880,6 @@ mod glow_integration {
&self.native_options,
);
let mut integration = epi_integration::EpiIntegration::new(
event_loop,
painter.max_texture_side(),
&gl_window
.window(ViewportId::MAIN)
.read()
@@ -996,7 +992,8 @@ mod glow_integration {
// Sync Rendering
integration.egui_ctx.set_render_sync_callback(
move |viewport_builder, viewport_id, parent_viewport_id, render| {
move |_viewport_builder, viewport_id, parent_viewport_id, render| {
// TODO: we should use `_viewport_builder` to create a new window in this frame!
'try_render: {
let window = glutin.read().windows.get(&viewport_id).cloned();
if let Some(window) = window {
@@ -1121,7 +1118,7 @@ mod glow_integration {
w.parent_id = *id;
}
if let Some(w) = w.window.clone() {
process_viewport_commands(commands, *id, None, w);
process_viewport_commands(commands, *id, None, &w);
}
active_viewports_ids.push(*id);
false
@@ -1302,7 +1299,7 @@ mod glow_integration {
app.write().as_mut(),
&win.window.as_ref().unwrap().read(),
win.egui_winit.as_mut().unwrap(),
win.render.clone(),
&win.render.clone(),
win.window_id,
win.parent_id,
);
@@ -1623,7 +1620,6 @@ mod glow_integration {
break 'res running.integration.write().on_event(
running.app.write().as_mut(),
event,
window_id,
viewport.egui_winit.as_mut().unwrap(),
viewport.window_id,
);
@@ -1660,11 +1656,11 @@ mod glow_integration {
if let Some(viewport_id) = glutin_ctx.window_maps.get(window_id).copied() {
if let Some(viewport) = glutin_ctx.windows.get(&viewport_id).cloned() {
let mut viewport = viewport.write();
running.integration.write().on_accesskit_action_request(
request.clone(),
window_id,
viewport.egui_winit.as_mut().unwrap(),
);
viewport
.egui_winit
.as_mut()
.unwrap()
.on_accesskit_action_request(request.clone());
}
}
// As a form of user input, accessibility actions should
@@ -1884,8 +1880,6 @@ mod wgpu_integration {
let system_theme = system_theme(&window, &self.native_options);
let mut integration = epi_integration::EpiIntegration::new(
event_loop,
painter.max_texture_side().unwrap_or(2048),
&window,
system_theme,
&self.app_name,
@@ -1972,7 +1966,8 @@ mod wgpu_integration {
let _painter = painter.clone();
integration.egui_ctx.set_render_sync_callback(
move |viewport_builder, viewport_id, parent_viewport_id, render| {
move |_viewport_builder, viewport_id, parent_viewport_id, render| {
// TODO: we should use `_viewport_builder` to create a new window in this frame!
'try_render: {
let window = _windows.read().get(&viewport_id).cloned();
if let Some(window) = window {
@@ -2179,7 +2174,7 @@ mod wgpu_integration {
app.as_mut(),
&window.read(),
state.write().as_mut().unwrap(),
render.clone(),
&render.clone(),
viewport_id,
parent_viewport_id,
);
@@ -2424,7 +2419,6 @@ mod wgpu_integration {
Some(running.integration.write().on_event(
running.app.as_mut(),
event,
window_id,
state,
id,
))
@@ -2465,11 +2459,7 @@ mod wgpu_integration {
.and_then(|id| running.windows.read().get(id).cloned())
{
if let Some(state) = &mut *state.write() {
running.integration.write().on_accesskit_action_request(
request.clone(),
window_id,
state,
);
state.on_accesskit_action_request(request.clone());
}
}
// As a form of user input, accessibility actions should
@@ -2523,9 +2513,3 @@ fn system_theme(window: &winit::window::Window, options: &NativeOptions) -> Opti
None
}
}
// ----------------------------------------------------------------------------
fn extremely_far_future() -> std::time::Instant {
std::time::Instant::now() + std::time::Duration::from_secs(10_000_000_000)
}

View File

@@ -1,4 +1,5 @@
use egui::TexturesDelta;
use egui::ViewportId;
use wasm_bindgen::JsValue;
use crate::{epi, App};
@@ -178,9 +179,11 @@ impl AppRunner {
let canvas_size = super::canvas_size_in_points(self.canvas_id());
let raw_input = self.input.new_frame(canvas_size);
let full_output = self.egui_ctx.run(raw_input, 0, 0, |egui_ctx| {
self.app.update(egui_ctx, &mut self.frame, None);
});
let full_output =
self.egui_ctx
.run(raw_input, ViewportId::MAIN, ViewportId::MAIN, |egui_ctx| {
self.app.update(egui_ctx, &mut self.frame, None);
});
let egui::FullOutput {
platform_output,
repaint_after,

View File

@@ -194,70 +194,66 @@ impl Painter {
viewport_id: ViewportId,
window: Option<&winit::window::Window>,
) -> Result<(), crate::WgpuError> {
match window {
Some(window) => {
let size = window.inner_size();
if self.surfaces.get(&viewport_id).is_none() {
let surface = unsafe { self.instance.create_surface(&window)? };
if let Some(window) = window {
let size = window.inner_size();
if self.surfaces.get(&viewport_id).is_none() {
let surface = unsafe { self.instance.create_surface(&window)? };
let render_state = if let Some(render_state) = &self.render_state {
render_state
} else {
let render_state = RenderState::create(
&self.configuration,
&self.instance,
&surface,
self.depth_format,
self.msaa_samples,
)
.await?;
self.render_state.get_or_insert(render_state)
};
let alpha_mode = if self.support_transparent_backbuffer {
let supported_alpha_modes =
surface.get_capabilities(&render_state.adapter).alpha_modes;
// Prefer pre multiplied over post multiplied!
if supported_alpha_modes.contains(&wgpu::CompositeAlphaMode::PreMultiplied)
{
wgpu::CompositeAlphaMode::PreMultiplied
} else if supported_alpha_modes
.contains(&wgpu::CompositeAlphaMode::PostMultiplied)
{
wgpu::CompositeAlphaMode::PostMultiplied
} else {
log::warn!("Transparent window was requested, but the active wgpu surface does not support a `CompositeAlphaMode` with transparency.");
wgpu::CompositeAlphaMode::Auto
}
let render_state = if let Some(render_state) = &self.render_state {
render_state
} else {
let render_state = RenderState::create(
&self.configuration,
&self.instance,
&surface,
self.depth_format,
self.msaa_samples,
)
.await?;
self.render_state.get_or_insert(render_state)
};
let alpha_mode = if self.support_transparent_backbuffer {
let supported_alpha_modes =
surface.get_capabilities(&render_state.adapter).alpha_modes;
// Prefer pre multiplied over post multiplied!
if supported_alpha_modes.contains(&wgpu::CompositeAlphaMode::PreMultiplied) {
wgpu::CompositeAlphaMode::PreMultiplied
} else if supported_alpha_modes
.contains(&wgpu::CompositeAlphaMode::PostMultiplied)
{
wgpu::CompositeAlphaMode::PostMultiplied
} else {
log::warn!("Transparent window was requested, but the active wgpu surface does not support a `CompositeAlphaMode` with transparency.");
wgpu::CompositeAlphaMode::Auto
};
}
} else {
wgpu::CompositeAlphaMode::Auto
};
let supports_screenshot =
!matches!(render_state.adapter.get_info().backend, wgpu::Backend::Gl);
let supports_screenshot =
!matches!(render_state.adapter.get_info().backend, wgpu::Backend::Gl);
self.surfaces.insert(
viewport_id,
SurfaceState {
surface,
width: size.width,
height: size.height,
alpha_mode,
supports_screenshot,
},
);
}
self.resize_and_generate_depth_texture_view_and_msaa_view(
self.surfaces.insert(
viewport_id,
size.width,
size.height,
SurfaceState {
surface,
width: size.width,
height: size.height,
alpha_mode,
supports_screenshot,
},
);
}
None => {
log::warn!("All surfaces was deleted!");
self.surfaces.clear();
}
self.resize_and_generate_depth_texture_view_and_msaa_view(
viewport_id,
size.width,
size.height,
);
} else {
log::warn!("All surfaces was deleted!");
self.surfaces.clear();
}
Ok(())
}

View File

@@ -915,7 +915,7 @@ pub fn process_viewport_commands(
commands: Vec<ViewportCommand>,
viewport_id: ViewportId,
focused: Option<ViewportId>,
window: Arc<RwLock<winit::window::Window>>,
window: &Arc<RwLock<winit::window::Window>>,
) {
use winit::dpi::PhysicalSize;
use winit::window::ResizeDirection;
@@ -1025,14 +1025,18 @@ pub fn process_viewport_commands(
})),
ViewportCommand::ContentProtected(v) => win.set_content_protected(v),
ViewportCommand::CursorPosition(x, y) => {
win.set_cursor_position(LogicalPosition::new(x, y));
if let Err(err) = win.set_cursor_position(LogicalPosition::new(x, y)) {
log::error!("{err}");
}
}
ViewportCommand::CursorGrab(o) => {
win.set_cursor_grab(match o {
if let Err(err) = win.set_cursor_grab(match o {
1 => CursorGrabMode::Confined,
2 => CursorGrabMode::Locked,
_ => CursorGrabMode::None,
});
}) {
log::error!("{err}");
}
}
ViewportCommand::CursorVisible(v) => win.set_cursor_visible(v),
ViewportCommand::CursorHitTest(v) => {
@@ -1051,7 +1055,7 @@ pub fn process_viewports_commands(
) {
for (viewport_id, command) in commands {
if let Some(window) = get_window(viewport_id) {
process_viewport_commands(vec![command], viewport_id, focused, window);
process_viewport_commands(vec![command], viewport_id, focused, &window);
}
}
}
@@ -1113,6 +1117,18 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
));
}
#[cfg(all(feature = "wayland", target_os = "linux"))]
if let Some(name) = builder.name.clone() {
use winit::platform::wayland::WindowBuilderExtWayland as _;
window_builder = window_builder.with_name(name.0, name.1);
}
#[cfg(target_os = "windows")]
if let Some(drag_and_drop) = builder.drag_and_drop {
use winit::platform::windows::WindowBuilderExtWindows as _;
window_builder = window_builder.with_drag_and_drop(enable);
}
// TODO: implement `ViewportBuilder::hittest`
// Is not implemented because winit in his current state will not allow to set cursor_hittest on a `WindowBuilder`

View File

@@ -987,7 +987,7 @@ impl<'open> Window<'open> {
}
});
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
.map_or((None, None), |ir| (Some(()), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size();
}
@@ -1167,7 +1167,7 @@ impl<'open> Window<'open> {
}
});
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
.map_or((None, None), |ir| (Some(()), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size();
}

View File

@@ -435,7 +435,7 @@ impl ContextImpl {
/// // Game loop:
/// loop {
/// let raw_input = egui::RawInput::default();
/// let full_output = ctx.run(raw_input, |ctx| {
/// let full_output = ctx.run(raw_input, egui::ViewportId::MAIN, egui::ViewportId::MAIN, |ctx| {
/// egui::CentralPanel::default().show(&ctx, |ui| {
/// ui.label("Hello world!");
/// if ui.button("Click me").clicked() {
@@ -504,7 +504,7 @@ impl Context {
///
/// // Each frame:
/// let input = egui::RawInput::default();
/// let full_output = ctx.run(input, |ctx| {
/// let full_output = ctx.run(input, egui::ViewportId::MAIN, egui::ViewportId::MAIN, |ctx| {
/// egui::CentralPanel::default().show(&ctx, |ui| {
/// ui.label("Hello egui!");
/// });
@@ -532,7 +532,7 @@ impl Context {
///
/// // Each frame:
/// let input = egui::RawInput::default();
/// ctx.begin_frame(input);
/// ctx.begin_frame(input, egui::ViewportId::MAIN, egui::ViewportId::MAIN);
///
/// egui::CentralPanel::default().show(&ctx, |ui| {
/// ui.label("Hello egui!");

View File

@@ -119,7 +119,7 @@
//! loop {
//! let raw_input: egui::RawInput = gather_input();
//!
//! let full_output = ctx.run(raw_input, |ctx| {
//! let full_output = ctx.run(raw_input, egui::ViewportId::MAIN, egui::ViewportId::MAIN, |ctx| {
//! egui::CentralPanel::default().show(&ctx, |ui| {
//! ui.label("Hello world!");
//! if ui.button("Click me").clicked() {

View File

@@ -100,11 +100,11 @@ impl eframe::App for Custom3d {
fn update(
&mut self,
ctx: &egui::Context,
frame: &mut eframe::Frame,
_frame: &mut eframe::Frame,
render: Option<&ViewportRender>,
) {
if let Some(render) = render {
render(ctx, ctx.get_viewport_id(), ctx.get_parent_viewport_id());
render(ctx);
return;
}
egui::CentralPanel::default().show(ctx, |ui| {

View File

@@ -433,7 +433,6 @@ impl EguiWindows {
tmp_ctx.memory_ui(ui);
});
let tmp_output_event_history = output_event_history.clone();
egui::Window::new("📤 Output Events")
.open(output_events)
.resizable(true)

View File

@@ -1,4 +1,5 @@
use crate::shader_version::ShaderVersion;
use egui::ViewportId;
pub use egui_winit;
use egui_winit::winit;
pub use egui_winit::EventResponse;
@@ -53,14 +54,17 @@ impl EguiGlow {
repaint_after,
textures_delta,
shapes,
} = self.egui_ctx.run(raw_input, run_ui);
..
} = self
.egui_ctx
.run(raw_input, ViewportId::MAIN, ViewportId::MAIN, run_ui);
self.egui_winit
.handle_platform_output(window, &self.egui_ctx, platform_output);
self.shapes = shapes;
self.textures_delta.append(textures_delta);
repaint_after
repaint_after.last().map(|(_, t)| *t).unwrap_or_default()
}
/// Paint the results of the last call to [`Self::run`].

View File

@@ -162,6 +162,6 @@ fn main() {
initial_window_size: Some(egui::Vec2::new(400.0, 220.0)),
..NativeOptions::default()
},
Box::new(|_| Box::new(App::default())),
Box::new(|_| Box::<App>::default()),
);
}