commit
3d640632f1
4 changed files with 36 additions and 2 deletions
|
|
@ -58,6 +58,7 @@ where
|
|||
&application.title(),
|
||||
application.mode(),
|
||||
event_loop.primary_monitor(),
|
||||
settings.id,
|
||||
)
|
||||
.with_menu(Some(conversion::menu(&application.menu())));
|
||||
|
||||
|
|
|
|||
|
|
@ -4,12 +4,18 @@ use crate::window;
|
|||
/// The settings of an application.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Settings<Flags> {
|
||||
/// The identifier of the application.
|
||||
///
|
||||
/// If provided, this identifier may be used to identify the application or
|
||||
/// communicate with it through the windowing system.
|
||||
pub id: Option<String>,
|
||||
|
||||
/// The window settings.
|
||||
///
|
||||
/// They will be ignored on the Web.
|
||||
pub window: window::Settings,
|
||||
|
||||
/// The data needed to initialize an [`Application`].
|
||||
/// The data needed to initialize the [`Application`].
|
||||
///
|
||||
/// [`Application`]: crate::Application
|
||||
pub flags: Flags,
|
||||
|
|
@ -58,6 +64,7 @@ impl<Flags> Settings<Flags> {
|
|||
|
||||
Self {
|
||||
flags,
|
||||
id: default_settings.id,
|
||||
window: default_settings.window,
|
||||
default_font: default_settings.default_font,
|
||||
default_text_size: default_settings.default_text_size,
|
||||
|
|
@ -74,8 +81,9 @@ where
|
|||
{
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
flags: Default::default(),
|
||||
id: None,
|
||||
window: Default::default(),
|
||||
flags: Default::default(),
|
||||
default_font: Default::default(),
|
||||
default_text_size: 20,
|
||||
text_multithreading: false,
|
||||
|
|
@ -89,6 +97,7 @@ where
|
|||
impl<Flags> From<Settings<Flags>> for iced_winit::Settings<Flags> {
|
||||
fn from(settings: Settings<Flags>) -> iced_winit::Settings<Flags> {
|
||||
iced_winit::Settings {
|
||||
id: settings.id,
|
||||
window: settings.window.into(),
|
||||
flags: settings.flags,
|
||||
exit_on_close_request: settings.exit_on_close_request,
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@ where
|
|||
&application.title(),
|
||||
application.mode(),
|
||||
event_loop.primary_monitor(),
|
||||
settings.id,
|
||||
)
|
||||
.with_menu(Some(conversion::menu(&application.menu())))
|
||||
.build(&event_loop)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,12 @@ use winit::window::WindowBuilder;
|
|||
/// The settings of an application.
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Settings<Flags> {
|
||||
/// The identifier of the application.
|
||||
///
|
||||
/// If provided, this identifier may be used to identify the application or
|
||||
/// communicate with it through the windowing system.
|
||||
pub id: Option<String>,
|
||||
|
||||
/// The [`Window`] settings
|
||||
pub window: Window,
|
||||
|
||||
|
|
@ -70,6 +76,7 @@ impl Window {
|
|||
title: &str,
|
||||
mode: Mode,
|
||||
primary_monitor: Option<MonitorHandle>,
|
||||
_id: Option<String>,
|
||||
) -> WindowBuilder {
|
||||
let mut window_builder = WindowBuilder::new();
|
||||
|
||||
|
|
@ -103,6 +110,21 @@ impl Window {
|
|||
.with_max_inner_size(winit::dpi::LogicalSize { width, height });
|
||||
}
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "linux",
|
||||
target_os = "dragonfly",
|
||||
target_os = "freebsd",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd"
|
||||
))]
|
||||
{
|
||||
use ::winit::platform::unix::WindowBuilderExtUnix;
|
||||
|
||||
if let Some(id) = _id {
|
||||
window_builder = window_builder.with_app_id(id);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
use winit::platform::windows::WindowBuilderExtWindows;
|
||||
|
|
@ -110,6 +132,7 @@ impl Window {
|
|||
if let Some(parent) = self.platform_specific.parent {
|
||||
window_builder = window_builder.with_parent_window(parent);
|
||||
}
|
||||
|
||||
window_builder = window_builder
|
||||
.with_drag_and_drop(self.platform_specific.drag_and_drop);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue