|
@@ -717,6 +717,9 @@ impl WindowBuilder for WindowBuilderWrapper {
|
|
|
.inner_size(config.width, config.height)
|
|
|
.visible(config.visible)
|
|
|
.resizable(config.resizable)
|
|
|
+ .maximizable(config.maximizable)
|
|
|
+ .minimizable(config.minimizable)
|
|
|
+ .closable(config.closable)
|
|
|
.fullscreen(config.fullscreen)
|
|
|
.decorations(config.decorations)
|
|
|
.maximized(config.maximized)
|
|
@@ -815,6 +818,21 @@ impl WindowBuilder for WindowBuilderWrapper {
|
|
|
self
|
|
|
}
|
|
|
|
|
|
+ fn maximizable(mut self, maximizable: bool) -> Self {
|
|
|
+ self.inner = self.inner.with_maximizable(maximizable);
|
|
|
+ self
|
|
|
+ }
|
|
|
+
|
|
|
+ fn minimizable(mut self, minimizable: bool) -> Self {
|
|
|
+ self.inner = self.inner.with_minimizable(minimizable);
|
|
|
+ self
|
|
|
+ }
|
|
|
+
|
|
|
+ fn closable(mut self, closable: bool) -> Self {
|
|
|
+ self.inner = self.inner.with_closable(closable);
|
|
|
+ self
|
|
|
+ }
|
|
|
+
|
|
|
fn title<S: Into<String>>(mut self, title: S) -> Self {
|
|
|
self.inner = self.inner.with_title(title.into());
|
|
|
self
|
|
@@ -1056,6 +1074,9 @@ pub enum WindowMessage {
|
|
|
IsMaximized(Sender<bool>),
|
|
|
IsDecorated(Sender<bool>),
|
|
|
IsResizable(Sender<bool>),
|
|
|
+ IsMaximizable(Sender<bool>),
|
|
|
+ IsMinimizable(Sender<bool>),
|
|
|
+ IsClosable(Sender<bool>),
|
|
|
IsVisible(Sender<bool>),
|
|
|
Title(Sender<String>),
|
|
|
IsMenuVisible(Sender<bool>),
|
|
@@ -1076,6 +1097,9 @@ pub enum WindowMessage {
|
|
|
Center,
|
|
|
RequestUserAttention(Option<UserAttentionTypeWrapper>),
|
|
|
SetResizable(bool),
|
|
|
+ SetMaximizable(bool),
|
|
|
+ SetMinimizable(bool),
|
|
|
+ SetClosable(bool),
|
|
|
SetTitle(String),
|
|
|
Maximize,
|
|
|
Unmaximize,
|
|
@@ -1294,6 +1318,21 @@ impl<T: UserEvent> Dispatch<T> for WryDispatcher<T> {
|
|
|
window_getter!(self, WindowMessage::IsResizable)
|
|
|
}
|
|
|
|
|
|
+ /// Gets the current native window's maximize button state
|
|
|
+ fn is_maximizable(&self) -> Result<bool> {
|
|
|
+ window_getter!(self, WindowMessage::IsMaximizable)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// Gets the current native window's minimize button state
|
|
|
+ fn is_minimizable(&self) -> Result<bool> {
|
|
|
+ window_getter!(self, WindowMessage::IsMinimizable)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// Gets the current native window's close button state
|
|
|
+ fn is_closable(&self) -> Result<bool> {
|
|
|
+ window_getter!(self, WindowMessage::IsClosable)
|
|
|
+ }
|
|
|
+
|
|
|
fn is_visible(&self) -> Result<bool> {
|
|
|
window_getter!(self, WindowMessage::IsVisible)
|
|
|
}
|
|
@@ -1385,6 +1424,27 @@ impl<T: UserEvent> Dispatch<T> for WryDispatcher<T> {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+ fn set_maximizable(&self, maximizable: bool) -> Result<()> {
|
|
|
+ send_user_message(
|
|
|
+ &self.context,
|
|
|
+ Message::Window(self.window_id, WindowMessage::SetMaximizable(maximizable)),
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ fn set_minimizable(&self, minimizable: bool) -> Result<()> {
|
|
|
+ send_user_message(
|
|
|
+ &self.context,
|
|
|
+ Message::Window(self.window_id, WindowMessage::SetMinimizable(minimizable)),
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ fn set_closable(&self, closable: bool) -> Result<()> {
|
|
|
+ send_user_message(
|
|
|
+ &self.context,
|
|
|
+ Message::Window(self.window_id, WindowMessage::SetClosable(closable)),
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
fn set_title<S: Into<String>>(&self, title: S) -> Result<()> {
|
|
|
send_user_message(
|
|
|
&self.context,
|
|
@@ -2409,6 +2469,9 @@ fn handle_user_message<T: UserEvent>(
|
|
|
WindowMessage::IsMaximized(tx) => tx.send(window.is_maximized()).unwrap(),
|
|
|
WindowMessage::IsDecorated(tx) => tx.send(window.is_decorated()).unwrap(),
|
|
|
WindowMessage::IsResizable(tx) => tx.send(window.is_resizable()).unwrap(),
|
|
|
+ WindowMessage::IsMaximizable(tx) => tx.send(window.is_maximizable()).unwrap(),
|
|
|
+ WindowMessage::IsMinimizable(tx) => tx.send(window.is_minimizable()).unwrap(),
|
|
|
+ WindowMessage::IsClosable(tx) => tx.send(window.is_closable()).unwrap(),
|
|
|
WindowMessage::IsVisible(tx) => tx.send(window.is_visible()).unwrap(),
|
|
|
WindowMessage::Title(tx) => tx.send(window.title()).unwrap(),
|
|
|
WindowMessage::IsMenuVisible(tx) => tx.send(window.is_menu_visible()).unwrap(),
|
|
@@ -2441,6 +2504,9 @@ fn handle_user_message<T: UserEvent>(
|
|
|
window.request_user_attention(request_type.map(|r| r.0));
|
|
|
}
|
|
|
WindowMessage::SetResizable(resizable) => window.set_resizable(resizable),
|
|
|
+ WindowMessage::SetMaximizable(maximizable) => window.set_maximizable(maximizable),
|
|
|
+ WindowMessage::SetMinimizable(minimizable) => window.set_minimizable(minimizable),
|
|
|
+ WindowMessage::SetClosable(closable) => window.set_closable(closable),
|
|
|
WindowMessage::SetTitle(title) => window.set_title(&title),
|
|
|
WindowMessage::Maximize => window.set_maximized(true),
|
|
|
WindowMessage::Unmaximize => window.set_maximized(false),
|