diff --git a/crates/egui-winit/src/lib.rs b/crates/egui-winit/src/lib.rs index 112606476e8..7ffef11c2b9 100644 --- a/crates/egui-winit/src/lib.rs +++ b/crates/egui-winit/src/lib.rs @@ -1498,6 +1498,7 @@ pub fn create_winit_window_builder( // Windows: drag_and_drop: _drag_and_drop, + taskbar: _taskbar, // wayland: app_id: _app_id, @@ -1575,9 +1576,14 @@ pub fn create_winit_window_builder( } #[cfg(target_os = "windows")] - if let Some(enable) = _drag_and_drop { + { use winit::platform::windows::WindowBuilderExtWindows as _; - window_builder = window_builder.with_drag_and_drop(enable); + if let Some(enable) = _drag_and_drop { + window_builder = window_builder.with_drag_and_drop(enable); + } + if let Some(show) = _taskbar { + window_builder = window_builder.with_skip_taskbar(!show); + } } #[cfg(target_os = "macos")] diff --git a/crates/egui/src/viewport.rs b/crates/egui/src/viewport.rs index 785579373f6..4e88eab4b39 100644 --- a/crates/egui/src/viewport.rs +++ b/crates/egui/src/viewport.rs @@ -283,7 +283,6 @@ pub struct ViewportBuilder { pub icon: Option>, pub active: Option, pub visible: Option, - pub drag_and_drop: Option, // macOS: pub fullsize_content_view: Option, @@ -291,6 +290,10 @@ pub struct ViewportBuilder { pub titlebar_buttons_shown: Option, pub titlebar_shown: Option, + // windows: + pub drag_and_drop: Option, + pub taskbar: Option, + pub close_button: Option, pub minimize_button: Option, pub maximize_button: Option, @@ -442,6 +445,13 @@ impl ViewportBuilder { self } + /// windows: Whether show or hide the window icon in the taskbar. + #[inline] + pub fn with_taskbar(mut self, show: bool) -> Self { + self.taskbar = Some(show); + self + } + /// Requests the window to be of specific dimensions. /// /// If this is not set, some platform-specific dimensions will be used. @@ -602,6 +612,7 @@ impl ViewportBuilder { maximize_button: new_maximize_button, window_level: new_window_level, mouse_passthrough: new_mouse_passthrough, + taskbar: new_taskbar, } = new_vp_builder; let mut commands = Vec::new(); @@ -758,6 +769,11 @@ impl ViewportBuilder { recreate_window = true; } + if new_taskbar.is_some() && self.taskbar != new_taskbar { + self.taskbar = new_taskbar; + recreate_window = true; + } + if new_fullsize_content_view.is_some() && self.fullsize_content_view != new_fullsize_content_view {