1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -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 (commands, recreate) = changes_between_builders(builder, last_builder);
drop(glutin);
if let Some(w) = glutin_ctx.read().viewports.get(id) {
let mut w = w.write();
if let Some(window) = glutin_ctx.read().viewports.get(id) {
let mut window = window.write();
if recreate {
w.window = None;
w.gl_surface = None;
w.render = render.clone();
w.pair.parent = *id;
window.window = None;
window.gl_surface = None;
window.render = render.clone();
window.pair.parent = *id;
}
if let Some(w) = w.window.clone() {
process_viewport_commands(commands, *id, None, &w);
if let Some(w) = window.window.clone() {
process_viewport_commands(commands, *id, None, &w.read());
}
active_viewports_ids.push(*id);
false
@@ -2317,8 +2317,8 @@ 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.viewports.read().get(&parent_id) {
if let Some(w) = window.window.as_ref() {
return EventResult::RepaintNext(w.read().id());
if let Some(window) = window.window.as_ref() {
return EventResult::RepaintNext(window.read().id());
}
}
return EventResult::Wait;
@@ -2386,9 +2386,9 @@ mod wgpu_integration {
render,
..
}| {
if let Some(w) = windows.write().get_mut(id) {
w.render = render.clone();
w.parent_id = *parent;
if let Some(window) = windows.write().get_mut(id) {
window.render = render.clone();
window.parent_id = *parent;
active_viewports_ids.push(*id);
false
} else {

View File

@@ -976,10 +976,9 @@ pub fn process_viewport_commands(
commands: Vec<ViewportCommand>,
viewport_id: ViewportId,
focused: Option<ViewportId>,
window: &Arc<RwLock<winit::window::Window>>,
window: &winit::window::Window,
) {
use winit::window::ResizeDirection;
let win = window.read();
for command in commands {
match command {
@@ -988,18 +987,18 @@ pub fn process_viewport_commands(
if let Some(focus) = focused {
if focus == viewport_id {
// TODO possible return the error to `egui::Context`
let _ = win.drag_window();
let _ = window.drag_window();
}
}
}
egui::ViewportCommand::InnerSize(size) => {
let width = size.x.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) => {
// 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,
(false, true, false, false) => ResizeDirection::South,
(false, false, false, true) => ResizeDirection::West,
@@ -1010,27 +1009,27 @@ pub fn process_viewport_commands(
_ => ResizeDirection::East,
});
}
ViewportCommand::Title(title) => win.set_title(&title),
ViewportCommand::Transparent(v) => win.set_transparent(v),
ViewportCommand::Visible(v) => win.set_visible(v),
ViewportCommand::Title(title) => window.set_title(&title),
ViewportCommand::Transparent(v) => window.set_transparent(v),
ViewportCommand::Visible(v) => window.set_visible(v),
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) => {
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) => {
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) => {
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 {
close,
minimized,
maximize,
} => win.set_enabled_buttons(
} => window.set_enabled_buttons(
if close {
WindowButtons::CLOSE
} else {
@@ -1045,19 +1044,19 @@ pub fn process_viewport_commands(
WindowButtons::empty()
},
),
ViewportCommand::Minimized(v) => win.set_minimized(v),
ViewportCommand::Maximized(v) => win.set_maximized(v),
ViewportCommand::Minimized(v) => window.set_minimized(v),
ViewportCommand::Maximized(v) => window.set_maximized(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::WindowLevel(o) => win.set_window_level(match o {
ViewportCommand::Decorations(v) => window.set_decorations(v),
ViewportCommand::WindowLevel(o) => window.set_window_level(match o {
1 => WindowLevel::AlwaysOnBottom,
2 => WindowLevel::AlwaysOnTop,
_ => WindowLevel::Normal,
}),
ViewportCommand::WindowIcon(icon) => {
win.set_window_icon(icon.map(|icon| {
window.set_window_icon(icon.map(|icon| {
winit::window::Icon::from_rgba(
icon.as_raw().to_owned(),
icon.width() as u32,
@@ -1067,36 +1066,36 @@ pub fn process_viewport_commands(
}));
}
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::IMEPurpose(o) => win.set_ime_purpose(match o {
ViewportCommand::IMEAllowed(v) => window.set_ime_allowed(v),
ViewportCommand::IMEPurpose(o) => window.set_ime_purpose(match o {
1 => winit::window::ImePurpose::Password,
2 => winit::window::ImePurpose::Terminal,
_ => 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 {
winit::window::UserAttentionType::Critical
} else {
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 {
winit::window::Theme::Dark
} else {
winit::window::Theme::Light
}
})),
ViewportCommand::ContentProtected(v) => win.set_content_protected(v),
ViewportCommand::ContentProtected(v) => window.set_content_protected(v),
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}");
}
}
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,
2 => CursorGrabMode::Locked,
_ => CursorGrabMode::None,
@@ -1104,9 +1103,9 @@ pub fn process_viewport_commands(
log::error!("{err}");
}
}
ViewportCommand::CursorVisible(v) => win.set_cursor_visible(v),
ViewportCommand::CursorVisible(v) => window.set_cursor_visible(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}");
}
}
@@ -1121,7 +1120,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.read());
}
}
}