1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 13:50:04 -04:00

Simplify function signature

This commit is contained in:
Emil Ernerfeldt
2023-11-01 18:27:02 +01:00
parent abc70ccf9c
commit f6c5e71870
2 changed files with 43 additions and 44 deletions

View File

@@ -1237,16 +1237,16 @@ mod glow_integration {
let last_builder = glutin.builders.entry(*id).or_insert(builder.clone()); let last_builder = glutin.builders.entry(*id).or_insert(builder.clone());
let (commands, recreate) = changes_between_builders(builder, last_builder); let (commands, recreate) = changes_between_builders(builder, last_builder);
drop(glutin); drop(glutin);
if let Some(w) = glutin_ctx.read().viewports.get(id) { if let Some(window) = glutin_ctx.read().viewports.get(id) {
let mut w = w.write(); let mut window = window.write();
if recreate { if recreate {
w.window = None; window.window = None;
w.gl_surface = None; window.gl_surface = None;
w.render = render.clone(); window.render = render.clone();
w.pair.parent = *id; window.pair.parent = *id;
} }
if let Some(w) = w.window.clone() { if let Some(w) = window.window.clone() {
process_viewport_commands(commands, *id, None, &w); process_viewport_commands(commands, *id, None, &w.read());
} }
active_viewports_ids.push(*id); active_viewports_ids.push(*id);
false false
@@ -2317,8 +2317,8 @@ mod wgpu_integration {
// This is used to not render a viewport if is sync // This is used to not render a viewport if is sync
if viewport_id != ViewportId::MAIN && render.is_none() { if viewport_id != ViewportId::MAIN && render.is_none() {
if let Some(window) = running.viewports.read().get(&parent_id) { if let Some(window) = running.viewports.read().get(&parent_id) {
if let Some(w) = window.window.as_ref() { if let Some(window) = window.window.as_ref() {
return EventResult::RepaintNext(w.read().id()); return EventResult::RepaintNext(window.read().id());
} }
} }
return EventResult::Wait; return EventResult::Wait;
@@ -2386,9 +2386,9 @@ mod wgpu_integration {
render, render,
.. ..
}| { }| {
if let Some(w) = windows.write().get_mut(id) { if let Some(window) = windows.write().get_mut(id) {
w.render = render.clone(); window.render = render.clone();
w.parent_id = *parent; window.parent_id = *parent;
active_viewports_ids.push(*id); active_viewports_ids.push(*id);
false false
} else { } else {

View File

@@ -976,10 +976,9 @@ pub fn process_viewport_commands(
commands: Vec<ViewportCommand>, commands: Vec<ViewportCommand>,
viewport_id: ViewportId, viewport_id: ViewportId,
focused: Option<ViewportId>, focused: Option<ViewportId>,
window: &Arc<RwLock<winit::window::Window>>, window: &winit::window::Window,
) { ) {
use winit::window::ResizeDirection; use winit::window::ResizeDirection;
let win = window.read();
for command in commands { for command in commands {
match command { match command {
@@ -988,18 +987,18 @@ pub fn process_viewport_commands(
if let Some(focus) = focused { if let Some(focus) = focused {
if focus == viewport_id { if focus == viewport_id {
// TODO possible return the error to `egui::Context` // TODO possible return the error to `egui::Context`
let _ = win.drag_window(); let _ = window.drag_window();
} }
} }
} }
egui::ViewportCommand::InnerSize(size) => { egui::ViewportCommand::InnerSize(size) => {
let width = size.x.max(1.0); let width = size.x.max(1.0);
let height = size.y.max(1.0); let height = size.y.max(1.0);
win.set_inner_size(LogicalSize::new(width, height)); window.set_inner_size(LogicalSize::new(width, height));
} }
egui::ViewportCommand::Resize(top, bottom, right, left) => { egui::ViewportCommand::Resize(top, bottom, right, left) => {
// TODO posibile return the error to `egui::Context` // TODO posibile return the error to `egui::Context`
let _ = win.drag_resize_window(match (top, bottom, right, left) { let _ = window.drag_resize_window(match (top, bottom, right, left) {
(true, false, false, false) => ResizeDirection::North, (true, false, false, false) => ResizeDirection::North,
(false, true, false, false) => ResizeDirection::South, (false, true, false, false) => ResizeDirection::South,
(false, false, false, true) => ResizeDirection::West, (false, false, false, true) => ResizeDirection::West,
@@ -1010,27 +1009,27 @@ pub fn process_viewport_commands(
_ => ResizeDirection::East, _ => ResizeDirection::East,
}); });
} }
ViewportCommand::Title(title) => win.set_title(&title), ViewportCommand::Title(title) => window.set_title(&title),
ViewportCommand::Transparent(v) => win.set_transparent(v), ViewportCommand::Transparent(v) => window.set_transparent(v),
ViewportCommand::Visible(v) => win.set_visible(v), ViewportCommand::Visible(v) => window.set_visible(v),
ViewportCommand::OuterPosition(pos) => { ViewportCommand::OuterPosition(pos) => {
win.set_outer_position(LogicalPosition::new(pos.x, pos.y)); window.set_outer_position(LogicalPosition::new(pos.x, pos.y));
} }
ViewportCommand::MinInnerSize(s) => { ViewportCommand::MinInnerSize(s) => {
win.set_min_inner_size(s.map(|s| LogicalSize::new(s.x, s.y))); window.set_min_inner_size(s.map(|s| LogicalSize::new(s.x, s.y)));
} }
ViewportCommand::MaxInnerSize(s) => { ViewportCommand::MaxInnerSize(s) => {
win.set_max_inner_size(s.map(|s| LogicalSize::new(s.x, s.y))); window.set_max_inner_size(s.map(|s| LogicalSize::new(s.x, s.y)));
} }
ViewportCommand::ResizeIncrements(s) => { ViewportCommand::ResizeIncrements(s) => {
win.set_resize_increments(s.map(|s| LogicalSize::new(s.x, s.y))); window.set_resize_increments(s.map(|s| LogicalSize::new(s.x, s.y)));
} }
ViewportCommand::Resizable(v) => win.set_resizable(v), ViewportCommand::Resizable(v) => window.set_resizable(v),
ViewportCommand::EnableButtons { ViewportCommand::EnableButtons {
close, close,
minimized, minimized,
maximize, maximize,
} => win.set_enabled_buttons( } => window.set_enabled_buttons(
if close { if close {
WindowButtons::CLOSE WindowButtons::CLOSE
} else { } else {
@@ -1045,19 +1044,19 @@ pub fn process_viewport_commands(
WindowButtons::empty() WindowButtons::empty()
}, },
), ),
ViewportCommand::Minimized(v) => win.set_minimized(v), ViewportCommand::Minimized(v) => window.set_minimized(v),
ViewportCommand::Maximized(v) => win.set_maximized(v), ViewportCommand::Maximized(v) => window.set_maximized(v),
ViewportCommand::Fullscreen(v) => { ViewportCommand::Fullscreen(v) => {
win.set_fullscreen(v.then_some(winit::window::Fullscreen::Borderless(None))); window.set_fullscreen(v.then_some(winit::window::Fullscreen::Borderless(None)));
} }
ViewportCommand::Decorations(v) => win.set_decorations(v), ViewportCommand::Decorations(v) => window.set_decorations(v),
ViewportCommand::WindowLevel(o) => win.set_window_level(match o { ViewportCommand::WindowLevel(o) => window.set_window_level(match o {
1 => WindowLevel::AlwaysOnBottom, 1 => WindowLevel::AlwaysOnBottom,
2 => WindowLevel::AlwaysOnTop, 2 => WindowLevel::AlwaysOnTop,
_ => WindowLevel::Normal, _ => WindowLevel::Normal,
}), }),
ViewportCommand::WindowIcon(icon) => { ViewportCommand::WindowIcon(icon) => {
win.set_window_icon(icon.map(|icon| { window.set_window_icon(icon.map(|icon| {
winit::window::Icon::from_rgba( winit::window::Icon::from_rgba(
icon.as_raw().to_owned(), icon.as_raw().to_owned(),
icon.width() as u32, icon.width() as u32,
@@ -1067,36 +1066,36 @@ pub fn process_viewport_commands(
})); }));
} }
ViewportCommand::IMEPosition(pos) => { ViewportCommand::IMEPosition(pos) => {
win.set_ime_position(LogicalPosition::new(pos.x, pos.y)); window.set_ime_position(LogicalPosition::new(pos.x, pos.y));
} }
ViewportCommand::IMEAllowed(v) => win.set_ime_allowed(v), ViewportCommand::IMEAllowed(v) => window.set_ime_allowed(v),
ViewportCommand::IMEPurpose(o) => win.set_ime_purpose(match o { ViewportCommand::IMEPurpose(o) => window.set_ime_purpose(match o {
1 => winit::window::ImePurpose::Password, 1 => winit::window::ImePurpose::Password,
2 => winit::window::ImePurpose::Terminal, 2 => winit::window::ImePurpose::Terminal,
_ => winit::window::ImePurpose::Normal, _ => winit::window::ImePurpose::Normal,
}), }),
ViewportCommand::RequestUserAttention(o) => win.request_user_attention(o.map(|o| { ViewportCommand::RequestUserAttention(o) => window.request_user_attention(o.map(|o| {
if o == 1 { if o == 1 {
winit::window::UserAttentionType::Critical winit::window::UserAttentionType::Critical
} else { } else {
winit::window::UserAttentionType::Informational winit::window::UserAttentionType::Informational
} }
})), })),
ViewportCommand::SetTheme(o) => win.set_theme(o.map(|o| { ViewportCommand::SetTheme(o) => window.set_theme(o.map(|o| {
if o == 1 { if o == 1 {
winit::window::Theme::Dark winit::window::Theme::Dark
} else { } else {
winit::window::Theme::Light winit::window::Theme::Light
} }
})), })),
ViewportCommand::ContentProtected(v) => win.set_content_protected(v), ViewportCommand::ContentProtected(v) => window.set_content_protected(v),
ViewportCommand::CursorPosition(pos) => { ViewportCommand::CursorPosition(pos) => {
if let Err(err) = win.set_cursor_position(LogicalPosition::new(pos.x, pos.y)) { if let Err(err) = window.set_cursor_position(LogicalPosition::new(pos.x, pos.y)) {
log::error!("{err}"); log::error!("{err}");
} }
} }
ViewportCommand::CursorGrab(o) => { ViewportCommand::CursorGrab(o) => {
if let Err(err) = win.set_cursor_grab(match o { if let Err(err) = window.set_cursor_grab(match o {
1 => CursorGrabMode::Confined, 1 => CursorGrabMode::Confined,
2 => CursorGrabMode::Locked, 2 => CursorGrabMode::Locked,
_ => CursorGrabMode::None, _ => CursorGrabMode::None,
@@ -1104,9 +1103,9 @@ pub fn process_viewport_commands(
log::error!("{err}"); log::error!("{err}");
} }
} }
ViewportCommand::CursorVisible(v) => win.set_cursor_visible(v), ViewportCommand::CursorVisible(v) => window.set_cursor_visible(v),
ViewportCommand::CursorHitTest(v) => { ViewportCommand::CursorHitTest(v) => {
if let Err(err) = win.set_cursor_hittest(v) { if let Err(err) = window.set_cursor_hittest(v) {
log::error!("Setting viewport CursorHitTest: {err}"); log::error!("Setting viewport CursorHitTest: {err}");
} }
} }
@@ -1121,7 +1120,7 @@ pub fn process_viewports_commands(
) { ) {
for (viewport_id, command) in commands { for (viewport_id, command) in commands {
if let Some(window) = get_window(viewport_id) { 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.read());
} }
} }
} }