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

Fix some warnings

This commit is contained in:
Konkitoman
2023-08-09 19:15:35 +03:00
parent 86ef11c521
commit a88a5cdf83
11 changed files with 118 additions and 143 deletions

View File

@@ -284,7 +284,7 @@ pub fn run_simple_native(
if ctx.get_viewport_id() == ViewportId::MAIN {
(self.update_fun)(ctx, frame);
} else if let Some(render_function) = render {
render_function(ctx)
render_function(ctx);
}
}
}

View File

@@ -9,7 +9,7 @@ use raw_window_handle::{HasRawDisplayHandle as _, HasRawWindowHandle as _};
#[cfg(feature = "accesskit")]
use egui::accesskit;
use egui::{Context, NumExt as _, ViewportBuilder, ViewportId, ViewportRender};
use egui::{NumExt as _, ViewportBuilder, ViewportId, ViewportRender};
#[cfg(feature = "accesskit")]
use egui_winit::accesskit_winit;
use egui_winit::{native_pixels_per_point, EventResponse, WindowSettings};

View File

@@ -234,8 +234,7 @@ fn run_and_return(
window_id,
windows_next_repaint_times
.get(&window_id)
.map(|last| (*last).min(repaint_time))
.unwrap_or(repaint_time),
.map_or(repaint_time, |last| (*last).min(repaint_time)),
);
}
EventResult::Exit => {
@@ -248,7 +247,7 @@ fn run_and_return(
}
let mut next_repaint_time = Option::<Instant>::None;
for (window_id, repaint_time) in windows_next_repaint_times.clone().iter() {
for (window_id, repaint_time) in &windows_next_repaint_times.clone() {
if *repaint_time <= Instant::now() {
if let Some(window) = winit_app.window(*window_id) {
window.read().request_redraw();
@@ -259,11 +258,8 @@ fn run_and_return(
control_flow.set_wait();
}
} else {
next_repaint_time = Some(
next_repaint_time
.map(|last| last.min(*repaint_time))
.unwrap_or(*repaint_time),
);
next_repaint_time =
Some(next_repaint_time.map_or(*repaint_time, |last| last.min(*repaint_time)));
}
}
@@ -372,8 +368,7 @@ fn run_and_exit(event_loop: EventLoop<UserEvent>, mut winit_app: impl WinitApp +
window_id,
windows_next_repaint_times
.get(&window_id)
.map(|last| (*last).min(repaint_time))
.unwrap_or(repaint_time),
.map_or(repaint_time, |last| (*last).min(repaint_time)),
);
}
EventResult::Exit => {
@@ -386,7 +381,7 @@ fn run_and_exit(event_loop: EventLoop<UserEvent>, mut winit_app: impl WinitApp +
}
let mut next_repaint_time = Option::<Instant>::None;
for (window_id, repaint_time) in windows_next_repaint_times.clone().iter() {
for (window_id, repaint_time) in &windows_next_repaint_times.clone() {
if *repaint_time <= Instant::now() {
if let Some(window) = winit_app.window(*window_id) {
log::trace!("request_redraw");
@@ -395,11 +390,8 @@ fn run_and_exit(event_loop: EventLoop<UserEvent>, mut winit_app: impl WinitApp +
}
control_flow.set_poll();
} else {
next_repaint_time = Some(
next_repaint_time
.map(|last| last.min(*repaint_time))
.unwrap_or(*repaint_time),
);
next_repaint_time =
Some(next_repaint_time.map_or(*repaint_time, |last| last.min(*repaint_time)));
}
}
@@ -428,7 +420,6 @@ mod glow_integration {
prelude::{GlDisplay, NotCurrentGlContextSurfaceAccessor, PossiblyCurrentGlContext},
surface::GlSurface,
};
use winit::{dpi::PhysicalSize, window::ResizeDirection};
use super::*;
@@ -642,7 +633,7 @@ mod glow_integration {
/// we presently assume that we will
#[allow(unsafe_code)]
fn on_resume(&mut self, event_loop: &EventLoopWindowTarget<UserEvent>) -> Result<()> {
for (_, win) in self.windows.iter_mut() {
for win in self.windows.values_mut() {
let mut win = win.write();
if win.gl_surface.is_some() {
continue;
@@ -727,7 +718,7 @@ mod glow_integration {
/// only applies for android. but we basically drop surface + window and make context not current
fn on_suspend(&mut self) -> Result<()> {
log::debug!("received suspend event. dropping window and surface");
for (_, window) in self.windows.iter_mut() {
for window in self.windows.values() {
let mut window = window.write();
window.gl_surface.take();
window.window.take();
@@ -744,7 +735,7 @@ mod glow_integration {
fn window(&self, viewport_id: ViewportId) -> Arc<RwLock<Window>> {
self.windows
.get(&viewport_id)
.map(|w| w.clone())
.cloned()
.expect("winit window doesn't exist")
}
@@ -757,7 +748,7 @@ mod glow_integration {
let height = std::num::NonZeroU32::new(physical_size.height.at_least(1)).unwrap();
if let Some(window) = self.windows.get(&viewport_id) {
let mut window = window.write();
let window = window.read();
if let Some(gl_surface) = &window.gl_surface {
self.current_gl_context = Some(
self.current_gl_context
@@ -859,7 +850,7 @@ mod glow_integration {
.unwrap_or(&self.app_name),
);
let (mut gl_window, gl) = Self::create_glutin_windowed_context(
let (gl_window, gl) = Self::create_glutin_windowed_context(
event_loop,
storage.as_deref(),
&self.app_name,
@@ -1068,7 +1059,7 @@ mod glow_integration {
break 'try_render;
}
}
Self::process_viewport_builders(glutin.clone(), output.viewports);
Self::process_viewport_builders(&glutin, output.viewports);
egui_winit::process_viewport_commands(
output.viewport_commands,
*focused.read(),
@@ -1099,7 +1090,7 @@ mod glow_integration {
}
fn process_viewport_builders(
glutin_ctx: Arc<RwLock<GlutinWindowContext>>,
glutin_ctx: &Arc<RwLock<GlutinWindowContext>>,
mut viewports: Vec<(
ViewportId,
ViewportId,
@@ -1210,11 +1201,11 @@ mod glow_integration {
self.running
.read()
.as_ref()
.and_then(|r| r.glutin_ctx.read().window_maps.get(id).cloned())
.and_then(|r| r.glutin_ctx.read().window_maps.get(id).copied())
}
fn save_and_destroy(&mut self) {
if let Some(mut running) = self.running.write().take() {
if let Some(running) = self.running.write().take() {
running.integration.write().save(
running.app.write().as_mut(),
&running
@@ -1242,8 +1233,6 @@ mod glow_integration {
puffin::GlobalProfiler::lock().new_frame();
crate::profile_scope!("frame");
let running = self.running.clone();
let integration = self.running.read().as_ref().unwrap().integration.clone();
let app = self.running.read().as_ref().unwrap().app.clone();
let glutin_ctx = self.running.read().as_ref().unwrap().glutin_ctx.clone();
@@ -1255,17 +1244,16 @@ mod glow_integration {
let win = glutin_ctx.read().windows.get(&viewport_id).unwrap().clone();
if win.read().render.is_none() && viewport_id != ViewportId::MAIN {
if let Some(win) = glutin_ctx.read().windows.get(&win.read().parent_id) {
win.read()
.window
.as_ref()
.map(|w| w.read().request_redraw());
if let Some(w) = win.read().window.as_ref() {
w.read().request_redraw();
}
}
return vec![];
}
}
let mut window_map = HashMap::default();
for (id, window) in glutin_ctx.read().windows.iter() {
for (id, window) in &glutin_ctx.read().windows {
if let Some(win) = &window.read().window {
window_map.insert(*id, win.read().id());
}
@@ -1276,7 +1264,7 @@ mod glow_integration {
repaint_after,
textures_delta,
shapes,
mut viewports,
viewports,
viewport_commands,
};
@@ -1418,7 +1406,7 @@ mod glow_integration {
} else {
repaint_after
.into_iter()
.flat_map(|(id, time)| {
.filter_map(|(id, time)| {
if time.is_zero() {
window_map.get(&id).map(|id| EventResult::RepaintNext(*id))
} else if let Some(repaint_after_instant) =
@@ -1453,7 +1441,7 @@ mod glow_integration {
}
}
Self::process_viewport_builders(glutin_ctx.clone(), viewports);
Self::process_viewport_builders(&glutin_ctx, viewports);
egui_winit::process_viewport_commands(
viewport_commands,
@@ -1556,7 +1544,7 @@ mod glow_integration {
.write()
.window_maps
.get(window_id)
.cloned()
.copied()
})
.flatten();
}
@@ -1589,7 +1577,7 @@ mod glow_integration {
.write()
.windows
.iter()
.flat_map(|(_, window)| {
.filter_map(|(_, window)| {
if let Some(win) = window.read().window.as_ref() {
let win = win.read();
if win.id() == *window_id {
@@ -1601,7 +1589,7 @@ mod glow_integration {
None
}
})
.flat_map(|id| {
.filter_map(|id| {
if id == ViewportId::MAIN {
Some(())
} else {
@@ -1621,7 +1609,7 @@ mod glow_integration {
let event_response = 'res: {
let glutin_ctx = running.glutin_ctx.read();
if let Some(viewport_id) =
glutin_ctx.window_maps.get(window_id).cloned()
glutin_ctx.window_maps.get(window_id).copied()
{
if let Some(viewport) =
glutin_ctx.windows.get(&viewport_id).cloned()
@@ -1665,14 +1653,14 @@ mod glow_integration {
)) => {
if let Some(running) = self.running.read().as_ref() {
let glutin_ctx = running.glutin_ctx.read();
if let Some(viewport_id) = glutin_ctx.window_maps.get(window_id).cloned() {
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(),
)
);
}
}
// As a form of user input, accessibility actions should
@@ -1828,13 +1816,14 @@ mod wgpu_integration {
for (id, (window, state, _, _, builder)) in running.windows.write().iter_mut() {
if window.is_none() {
if let Ok(new_window) = create_winit_window_builder(&builder).build(event_loop)
{
if let Ok(new_window) = create_winit_window_builder(builder).build(event_loop) {
running.windows_id.insert(new_window.id(), *id);
pollster::block_on(
if let Err(err) = pollster::block_on(
running.painter.write().set_window(*id, Some(&new_window)),
);
) {
log::error!("on set_window: viewport_id {id} {err}");
}
*window = Some(Arc::new(RwLock::new(new_window)));
*state.write() = Some(egui_winit::State::new(event_loop));
}
@@ -1844,10 +1833,10 @@ mod wgpu_integration {
fn set_window(&mut self, id: ViewportId) -> std::result::Result<(), egui_wgpu::WgpuError> {
if let Some(running) = &mut self.running {
if let Some((window, _, _, _, _)) = running.windows.read().get(&id) {
window.as_ref().map(|w| {
pollster::block_on(running.painter.write().set_window(id, Some(&w.read())))
});
if let Some((Some(window), _, _, _, _)) = running.windows.read().get(&id) {
return pollster::block_on(
running.painter.write().set_window(id, Some(&window.read())),
);
}
}
Ok(())
@@ -1994,9 +1983,11 @@ mod wgpu_integration {
},
);
pollster::block_on(
if let Err(err) = pollster::block_on(
_painter.write().set_window(viewport_id, Some(&win)),
);
){
log::error!("when rendering viewport_id: {viewport_id}, set_window Error {err}");
}
let clipped_primitives = egui_ctx.tessellate(output.shapes);
_painter.write().paint_and_update_textures(
@@ -2024,12 +2015,12 @@ mod wgpu_integration {
let mut viewports = output.viewports;
let mut active_viewports_ids = vec![ViewportId::MAIN];
viewports.retain_mut(|(id, parent, builder, render)| {
viewports.retain_mut(|(id, parent, _builder, render)| {
if let Some(w) = _windows.write().get_mut(id) {
w.2 = render.clone();
w.3 = *parent;
active_viewports_ids.push(*id);
return false;
false
} else {
true
}
@@ -2075,10 +2066,8 @@ mod wgpu_integration {
}
fn is_focused(&self, window_id: winit::window::WindowId) -> bool {
if let Some(focus) = self.is_focused.read().clone() {
self.get_window_id(&window_id)
.map(|i| i == focus)
.unwrap_or(false)
if let Some(focus) = *self.is_focused.read() {
self.get_window_id(&window_id).map_or(false, |i| i == focus)
} else {
false
}
@@ -2119,7 +2108,7 @@ mod wgpu_integration {
running
.integration
.write()
.save(running.app.as_mut(), &*window.read());
.save(running.app.as_mut(), &window.read());
}
#[cfg(feature = "glow")]
@@ -2159,7 +2148,9 @@ mod wgpu_integration {
// This is used to not render a viewport if is sync
if viewport_id != ViewportId::MAIN && render.is_none() {
if let Some(window) = running.windows.read().get(&parent_viewport_id) {
window.0.as_ref().map(|w| w.read().request_redraw());
if let Some(w) = window.0.as_ref() {
w.read().request_redraw();
}
}
return vec![];
}
@@ -2179,7 +2170,7 @@ mod wgpu_integration {
viewport_commands,
} = integration.write().update(
app.as_mut(),
&*window.read(),
&window.read(),
state.write().as_mut().unwrap(),
render.clone(),
viewport_id,
@@ -2217,12 +2208,12 @@ mod wgpu_integration {
let mut active_viewports_ids = vec![ViewportId::MAIN];
viewports.retain_mut(|(id, parent, builder, render)| {
viewports.retain_mut(|(id, parent, _builder, render)| {
if let Some(w) = windows.write().get_mut(id) {
w.2 = render.clone();
w.3 = *parent;
active_viewports_ids.push(*id);
return false;
false
} else {
true
}
@@ -2308,7 +2299,7 @@ mod wgpu_integration {
winit::event::Event::Resumed => {
if let Some(running) = &self.running {
if running.windows.read().get(&ViewportId::MAIN).is_none() {
let window = Self::create_window(
let _ = Self::create_window(
event_loop,
running.integration.read().frame.storage(),
&self.app_name,
@@ -2382,7 +2373,7 @@ mod wgpu_integration {
// See: https://github.com/rust-windowing/winit/issues/208
// This solves an issue where the app would panic when minimizing on Windows.
if let Some(viewport_id) =
running.windows_id.get(window_id).cloned()
running.windows_id.get(window_id).copied()
{
if physical_size.width > 0 && physical_size.height > 0 {
running.painter.write().on_window_resized(
@@ -2398,7 +2389,7 @@ mod wgpu_integration {
..
} => {
if let Some(viewport_id) =
running.windows_id.get(window_id).cloned()
running.windows_id.get(window_id).copied()
{
repaint_asap = true;
running.painter.write().on_window_resized(
@@ -2488,7 +2479,7 @@ mod wgpu_integration {
fn get_window_id(&self, id: &winit::window::WindowId) -> Option<ViewportId> {
self.running
.as_ref()
.and_then(|r| r.windows_id.get(id).cloned())
.and_then(|r| r.windows_id.get(id).copied())
}
}
@@ -2542,7 +2533,7 @@ fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::Wind
.with_fullscreen(
builder
.fullscreen
.then(|| winit::window::Fullscreen::Borderless(None)),
.then_some(winit::window::Fullscreen::Borderless(None)),
)
.with_enabled_buttons(
WindowButtons::MAXIMIZE
@@ -2580,7 +2571,7 @@ fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::Wind
rgba: icon.2,
width: icon.0,
height: icon.1,
}))
}));
}
window_builder

View File

@@ -920,7 +920,8 @@ pub fn process_viewport_commands(
// if this is not checked on x11 the input will be permanently taken until the app is killed!
if let Some(focus) = focused {
if focus == viewport_id {
win.drag_window();
// TODO possibile return the error to `egui::Context`
let _ = win.drag_window();
}
}
}
@@ -930,10 +931,10 @@ pub fn process_viewport_commands(
win.set_inner_size(PhysicalSize::new(width, height));
}
egui::ViewportCommand::Resize(top, bottom, right, left) => {
win.drag_resize_window(match (top, bottom, right, left) {
// TODO posibile return the error to `egui::Context`
let _ = win.drag_resize_window(match (top, bottom, right, left) {
(true, false, false, false) => ResizeDirection::North,
(false, true, false, false) => ResizeDirection::South,
(false, false, true, false) => ResizeDirection::East,
(false, false, false, true) => ResizeDirection::West,
(true, false, true, false) => ResizeDirection::NorthEast,
(false, true, true, false) => ResizeDirection::SouthEast,

View File

@@ -296,7 +296,7 @@ impl<'open> Window<'open> {
#[inline]
pub fn show_async(self, ctx: &Context, add_contents: impl Fn(&mut Ui) + Send + Sync + 'static) {
self.show_dyn_async(ctx, Box::new(add_contents))
self.show_dyn_async(ctx, Box::new(add_contents));
}
fn show_dyn<'a, R>(
@@ -447,12 +447,9 @@ impl<'open> Window<'open> {
area_id.with("frame_resize"),
last_frame_outer_rect,
)
.and_then(|window_interaction| {
.map(|window_interaction| {
// Calculate roughly how much larger the window size is compared to the inner rect
let pointer_pos = ctx.input(|i| i.pointer.interact_pos())?;
let mut rect = window_interaction.start_rect; // prevent drift
window_interaction.set_cursor(ctx);
if window_interaction.is_resize() {
ctx.viewport_command(
@@ -464,12 +461,11 @@ impl<'open> Window<'open> {
window_interaction.left,
),
);
} else {
if ctx.input(|i| i.pointer.primary_pressed()) {}
} else if ctx.input(|i| i.pointer.primary_pressed()) {
}
ctx.memory_mut(|mem| mem.areas.move_to_top(area_layer_id));
Some(window_interaction)
window_interaction
})
} else {
None
@@ -488,8 +484,6 @@ impl<'open> Window<'open> {
let mut frame = frame.begin(&mut area_content_ui);
let title_bar = if with_title_bar {
let mut tmp_embedded = is_embedded;
let title_bar = show_title_bar(
&mut frame.content_ui,
title,
@@ -499,11 +493,6 @@ impl<'open> Window<'open> {
area_id,
);
if tmp_embedded != is_embedded {
area_content_ui.data_mut(|data| {
data.insert_persisted(area_id.with("_embedded"), tmp_embedded)
});
}
resize.min_size.x = resize.min_size.x.at_least(title_bar.rect.width()); // Prevent making window smaller than title bar width
Some(title_bar)
} else {
@@ -526,7 +515,7 @@ impl<'open> Window<'open> {
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size()
size = content_response.rect.size();
}
let outer_rect = frame.end(&mut area_content_ui).rect;
@@ -605,12 +594,11 @@ impl<'open> Window<'open> {
ctx.request_repaint_viewport(ctx.get_parent_viewport_id());
}
return Some(InnerResponse {
Some(InnerResponse {
inner: content_inner,
response: full_response,
});
})
});
return None;
}
}
let frame = frame.unwrap_or_else(|| Frame::window(&ctx.style()));
@@ -680,8 +668,6 @@ impl<'open> Window<'open> {
let mut frame = frame.begin(&mut area_content_ui);
let title_bar = if with_title_bar {
let mut tmp_embedded = is_embedded;
let title_bar = show_title_bar(
&mut frame.content_ui,
title,
@@ -713,7 +699,7 @@ impl<'open> Window<'open> {
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size()
size = content_response.rect.size();
}
let outer_rect = frame.end(&mut area_content_ui).rect;
@@ -771,7 +757,7 @@ impl<'open> Window<'open> {
Some(inner_response)
}
fn show_dyn_async<'a>(self, ctx: &Context, add_contents: Box<dyn Fn(&mut Ui) + Send + Sync>) {
fn show_dyn_async(self, ctx: &Context, add_contents: Box<dyn Fn(&mut Ui) + Send + Sync>) {
let Window {
title,
mut open,
@@ -915,12 +901,9 @@ impl<'open> Window<'open> {
area_id.with("frame_resize"),
last_frame_outer_rect,
)
.and_then(|window_interaction| {
.map(|window_interaction| {
// Calculate roughly how much larger the window size is compared to the inner rect
let pointer_pos = ctx.input(|i| i.pointer.interact_pos())?;
let mut rect = window_interaction.start_rect; // prevent drift
window_interaction.set_cursor(ctx);
if window_interaction.is_resize() {
ctx.viewport_command(
@@ -932,12 +915,11 @@ impl<'open> Window<'open> {
window_interaction.left,
),
);
} else {
if ctx.input(|i| i.pointer.primary_pressed()) {}
} else if ctx.input(|i| i.pointer.primary_pressed()) {
}
ctx.memory_mut(|mem| mem.areas.move_to_top(area_layer_id));
Some(window_interaction)
window_interaction
})
} else {
None
@@ -950,7 +932,7 @@ impl<'open> Window<'open> {
let mut size = Vec2::new(1.0, 1.0);
let content_inner = {
let _content_inner = {
// BEGIN FRAME --------------------------------
let frame_stroke = frame.stroke;
let mut frame = frame.begin(&mut area_content_ui);
@@ -979,15 +961,15 @@ impl<'open> Window<'open> {
}
if scroll.has_any_bar() {
scroll.show(ui, |ui| add_contents(ui)).inner
scroll.show(ui, |ui| add_contents(ui));
} else {
add_contents(ui)
add_contents(ui);
}
})
});
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size()
size = content_response.rect.size();
}
let outer_rect = frame.end(&mut area_content_ui).rect;
@@ -1159,15 +1141,15 @@ impl<'open> Window<'open> {
}
if scroll.has_any_bar() {
scroll.show(ui, |ui| add_contents(ui)).inner
scroll.show(ui, |ui| add_contents(ui));
} else {
add_contents(ui)
add_contents(ui);
}
})
});
})
.map_or((None, None), |ir| (Some(ir.inner), Some(ir.response)));
if let Some(content_response) = &content_response {
size = content_response.rect.size()
size = content_response.rect.size();
}
let outer_rect = frame.end(&mut area_content_ui).rect;
@@ -1218,7 +1200,7 @@ impl<'open> Window<'open> {
let full_response = area.end(ctx, area_content_ui);
ctx.data_mut(|data| data.insert_temp(area_id.with("size"), size));
let inner_response = InnerResponse {
let _inner_response = InnerResponse {
inner: content_inner,
response: full_response,
};

View File

@@ -105,7 +105,7 @@ impl Repaint {
< self
.repaint_after
.get(&viewport_id)
.cloned()
.copied()
.unwrap_or(std::time::Duration::MAX)
{
self.repaint_after.insert(viewport_id, after);
@@ -130,14 +130,14 @@ impl Repaint {
fn end_frame(
&mut self,
viewport_id: ViewportId,
viewports: Vec<ViewportId>,
viewports: &[ViewportId],
) -> Vec<(ViewportId, std::time::Duration)> {
// if repaint_requests is greater than zero. just set the duration to zero for immediate
// repaint. if there's no repaint requests, then we can use the actual repaint_after instead.
let repaint_after = if self
.repaint_requests
.get(&viewport_id)
.cloned()
.copied()
.unwrap_or(0)
> 0
{
@@ -149,7 +149,7 @@ impl Repaint {
} else {
self.repaint_after
.get(&viewport_id)
.cloned()
.copied()
.unwrap_or(std::time::Duration::MAX)
};
self.repaint_after.insert(viewport_id, repaint_after);
@@ -385,14 +385,14 @@ impl ContextImpl {
//
// In the case of this viewport is the main viewport will be `ViewportId::MAIN`
pub(crate) fn get_viewport_id(&self) -> ViewportId {
self.frame_stack.last().cloned().unwrap_or_default().0
self.frame_stack.last().copied().unwrap_or_default().0
}
// Return the `ViewportId` of his parent
//
// In the case of this viewport is the main viewport will be `ViewportId::MAIN`
pub(crate) fn get_parent_viewport_id(&self) -> ViewportId {
self.frame_stack.last().cloned().unwrap_or_default().1
self.frame_stack.last().copied().unwrap_or_default().1
}
}
@@ -471,7 +471,7 @@ impl Default for Context {
s.write(|ctx| {
ctx.render_sync = Some(Arc::new(Box::new(
move |_builder, _viewport_id, _parent_viewport_id, render| render(&clone),
)))
)));
});
s
@@ -1133,7 +1133,7 @@ impl Context {
}
pub fn request_repaint_viewport(&self, id: ViewportId) {
self.write(|ctx| ctx.repaint.request_repaint(id))
self.write(|ctx| ctx.repaint.request_repaint(id));
}
/// Request repaint after at most the specified duration elapses.
@@ -1169,12 +1169,12 @@ impl Context {
// Maybe we can check if duration is ZERO, and call self.request_repaint()?
self.write(|ctx| {
ctx.repaint
.request_repaint_after(duration, ctx.get_viewport_id())
.request_repaint_after(duration, ctx.get_viewport_id());
});
}
pub fn request_repaint_viewport_after(&self, duration: std::time::Duration, id: ViewportId) {
self.write(|ctx| ctx.repaint.request_repaint_after(duration, id))
self.write(|ctx| ctx.repaint.request_repaint_after(duration, id));
}
/// For integrations: this callback will be called when an egui user calls [`Self::request_repaint`].
@@ -1473,14 +1473,14 @@ impl Context {
});
let repaint_after =
self.write(|ctx| ctx.repaint.end_frame(ctx.get_viewport_id(), viewports));
self.write(|ctx| ctx.repaint.end_frame(ctx.get_viewport_id(), &viewports));
let shapes = self.drain_paint_lists();
// This is used for,
// If there are no viewport that contains the current viewpor that viewport needs to be destroyed!
let avalibile_viewports = self.read(|ctx| {
let mut avalibile_viewports = vec![ViewportId::MAIN];
for (_, (_, id, _, _, _)) in ctx.viewports.iter() {
for (_, id, _, _, _) in ctx.viewports.values() {
avalibile_viewports.push(*id);
}
avalibile_viewports
@@ -1499,7 +1499,7 @@ impl Context {
viewports.push((*id, *parent, builder.clone(), render.clone()));
(out || viewport_id != *parent) && avalibile_viewports.contains(parent)
})
});
});
// This is used to resume the last frame!
@@ -1514,7 +1514,7 @@ impl Context {
ctx.layer_rects_prev_viewports.remove(&viewport_id).unwrap();
ctx.layer_rects_this_frame =
ctx.layer_rects_this_viewports.remove(&viewport_id).unwrap();
ctx.memory.resume_frame(viewport_id)
ctx.memory.resume_frame(viewport_id);
});
}
FullOutput {
@@ -2184,11 +2184,11 @@ impl Context {
}
pub fn set_desktop(&self, value: bool) {
self.write(|ctx| ctx.is_desktop = value)
self.write(|ctx| ctx.is_desktop = value);
}
pub fn viewport_command(&self, id: ViewportId, command: ViewportCommand) {
self.write(|ctx| ctx.viewport_commands.push((id, command)))
self.write(|ctx| ctx.viewport_commands.push((id, command)));
}
pub fn create_viewport(

View File

@@ -306,7 +306,7 @@ pub enum Event {
WindowEvent(WindowEvent),
}
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum WindowEvent {
CloseRequested,

View File

@@ -159,7 +159,7 @@ impl ViewportBuilder {
}
}
#[derive(Clone, PartialEq)]
#[derive(Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum ViewportCommand {
Drag,

View File

@@ -19,6 +19,7 @@ pub mod syntax_highlighting;
pub use color_test::ColorTest;
pub use demo::DemoWindows;
#[cfg(test)]
use egui::ViewportId;
// ----------------------------------------------------------------------------

View File

@@ -58,7 +58,7 @@ impl eframe::App for MyApp {
});
});
if self.allowed_to_close {
frame.close()
frame.close();
}
}
}

View File

@@ -68,7 +68,7 @@ fn main() {
ui.label(format!("Value: {value}"));
}
egui::CollapsingHeader::new("Show Test1").show(ui, |ui| {
egui::CollapsingHeader::new("Show Test1").show(ui, |_ui| {
egui::Window::new("Test1")
.default_embedded(false)
.show(ctx, |ui| {
@@ -86,7 +86,7 @@ fn main() {
data.insert_persisted(
Id::new("Test1").with("_embedded"),
embedded,
)
);
});
}
if to_repair {
@@ -103,12 +103,12 @@ fn main() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::ViewportCommand::Drag,
)
);
} else {
ctx.memory_mut(|mem| {
mem.set_dragged_id(
egui::Id::new("Test1").with("frame_resize"),
)
);
});
}
}
@@ -120,7 +120,7 @@ fn main() {
);
});
});
egui::CollapsingHeader::new("Async Test2").show(ui, |ui| {
egui::CollapsingHeader::new("Async Test2").show(ui, |_ui| {
egui::Window::new("Test2").show_async(ctx, move |ui| {
ui.label(format!("Frame: {}", ui.ctx().frame_nr()));
@@ -138,16 +138,16 @@ fn main() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::ViewportCommand::Drag,
)
);
} else {
ctx.memory_mut(|mem| {
mem.set_dragged_id(egui::Id::new("Test2").with("frame_resize"))
mem.set_dragged_id(egui::Id::new("Test2").with("frame_resize"));
});
}
}
});
});
egui::CollapsingHeader::new("Async Test3").show(ui, |ui| {
egui::CollapsingHeader::new("Async Test3").show(ui, |_ui| {
egui::Window::new("Test3").show_async(ctx, move |ui| {
ui.label(format!("Frame: {}", ui.ctx().frame_nr()));
let ctx = ui.ctx().clone();
@@ -161,10 +161,10 @@ fn main() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::ViewportCommand::Drag,
)
);
} else {
ctx.memory_mut(|mem| {
mem.set_dragged_id(egui::Id::new("Test3").with("frame_resize"))
mem.set_dragged_id(egui::Id::new("Test3").with("frame_resize"));
});
}
}