mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 22:30:03 -04:00
Added maximize_button, mimimize_button and hittest on ViewportBuilder
!!! hittest is not working because of winit !!!
This commit is contained in:
@@ -1029,7 +1029,9 @@ pub fn process_viewport_commands(
|
||||
}
|
||||
ViewportCommand::CursorVisible(v) => win.set_cursor_visible(v),
|
||||
ViewportCommand::CursorHitTest(v) => {
|
||||
win.set_cursor_hittest(v);
|
||||
if let Err(err) = win.set_cursor_hittest(v) {
|
||||
log::error!("Setting viewport CursorHitTest: {err}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1054,6 +1056,8 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
|
||||
.with_decorations(builder.decorations.map_or(false, |e| e))
|
||||
.with_resizable(builder.resizable.map_or(false, |e| e))
|
||||
.with_visible(builder.visible.map_or(false, |e| e))
|
||||
.with_maximized(builder.minimized.map_or(false, |e| e))
|
||||
.with_maximized(builder.maximized.map_or(false, |e| e))
|
||||
.with_fullscreen(
|
||||
builder
|
||||
.fullscreen
|
||||
@@ -1061,8 +1065,16 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
|
||||
.flatten(),
|
||||
)
|
||||
.with_enabled_buttons(
|
||||
WindowButtons::MAXIMIZE
|
||||
| WindowButtons::MINIMIZE
|
||||
builder
|
||||
.minimize_button
|
||||
.map(|v| v.then(|| WindowButtons::MINIMIZE))
|
||||
.flatten()
|
||||
.unwrap_or(WindowButtons::empty())
|
||||
| builder
|
||||
.maximize_button
|
||||
.map(|v| v.then(|| WindowButtons::MAXIMIZE))
|
||||
.flatten()
|
||||
.unwrap_or(WindowButtons::empty())
|
||||
| builder
|
||||
.close_button
|
||||
.map(|v| v.then(|| WindowButtons::CLOSE))
|
||||
@@ -1098,6 +1110,9 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
|
||||
));
|
||||
}
|
||||
|
||||
// TODO: implement `ViewportBuilder::hittest`
|
||||
// Is not implemented because winit in his current state will not allow to set cursor_hittest on a `WindowBuilder`
|
||||
|
||||
window_builder
|
||||
}
|
||||
|
||||
@@ -1211,6 +1226,13 @@ pub fn changes_between_builders(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(hittest) = new.hittest {
|
||||
if Some(hittest) != last.hittest {
|
||||
last.hittest = Some(hittest);
|
||||
commands.push(ViewportCommand::CursorHitTest(hittest));
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Implement compare for windows buttons
|
||||
|
||||
let mut recreate_window = false;
|
||||
@@ -1229,6 +1251,20 @@ pub fn changes_between_builders(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(minimize_button) = new.minimize_button {
|
||||
if Some(minimize_button) != last.minimize_button {
|
||||
last.minimize_button = Some(minimize_button);
|
||||
recreate_window = true;
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(maximized_button) = new.maximize_button {
|
||||
if Some(maximized_button) != last.maximize_button {
|
||||
last.maximize_button = Some(maximized_button);
|
||||
recreate_window = true;
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(title_hidden) = new.title_hidden {
|
||||
if Some(title_hidden) != last.title_hidden {
|
||||
last.title_hidden = Some(title_hidden);
|
||||
|
||||
Reference in New Issue
Block a user