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:
@@ -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 {
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user