maximized/fullscreen as noops for other platforms

This commit is contained in:
Pedro Côrte-Real 2017-08-28 01:43:34 +01:00
parent eff04394c9
commit b35c4a5ee5
6 changed files with 44 additions and 10 deletions

View file

@ -24,7 +24,7 @@ pub struct Window {
event_rx: Receiver<android_glue::Event>, event_rx: Receiver<android_glue::Event>,
} }
#[derive(Clone)] #[derive(Clone, PartialEq)]
pub struct MonitorId; pub struct MonitorId;
mod ffi; mod ffi;
@ -261,6 +261,10 @@ impl Window {
unimplemented!(); unimplemented!();
} }
#[inline]
pub fn set_maximized(&self, maximized: bool) {
}
#[inline] #[inline]
pub fn set_fullscreen_windowed(&self, fullscreen: bool) { pub fn set_fullscreen_windowed(&self, fullscreen: bool) {
} }

View file

@ -94,7 +94,7 @@ use self::ffi::{
static mut jmpbuf: [c_int;27] = [0;27]; static mut jmpbuf: [c_int;27] = [0;27];
#[derive(Clone)] #[derive(Clone, PartialEq)]
pub struct MonitorId; pub struct MonitorId;
pub struct Window { pub struct Window {
@ -449,6 +449,13 @@ impl Window {
WindowProxy WindowProxy
} }
#[inline]
pub fn set_maximized(&self, maximized: bool) {
}
#[inline]
pub fn set_fullscreen_windowed(&self, fullscreen: bool) {
}
} }
impl WindowProxy { impl WindowProxy {

View file

@ -2,7 +2,7 @@ use core_graphics::display;
use std::collections::VecDeque; use std::collections::VecDeque;
use native_monitor::NativeMonitorId; use native_monitor::NativeMonitorId;
#[derive(Clone)] #[derive(Clone, PartialEq)]
pub struct MonitorId(u32); pub struct MonitorId(u32);
pub fn get_available_monitors() -> VecDeque<MonitorId> { pub fn get_available_monitors() -> VecDeque<MonitorId> {

View file

@ -383,7 +383,7 @@ impl Window {
fn create_window(attrs: &WindowAttributes) -> Option<IdRef> { fn create_window(attrs: &WindowAttributes) -> Option<IdRef> {
unsafe { unsafe {
let screen = match attrs.monitor { let screen = match attrs.fullscreen.get_monitor() {
Some(ref monitor_id) => { Some(ref monitor_id) => {
let native_id = match monitor_id.get_native_identifier() { let native_id = match monitor_id.get_native_identifier() {
NativeMonitorId::Numeric(num) => num, NativeMonitorId::Numeric(num) => num,
@ -637,6 +637,14 @@ impl Window {
Ok(()) Ok(())
} }
#[inline]
pub fn set_maximized(&self, maximized: bool) {
}
#[inline]
pub fn set_fullscreen_windowed(&self, fullscreen: bool) {
}
} }
// Convert the `cocoa::base::id` associated with a window to a usize to use as a unique identifier // Convert the `cocoa::base::id` associated with a window to a usize to use as a unique identifier

View file

@ -34,6 +34,12 @@ pub struct MonitorId {
dimensions: (u32, u32), dimensions: (u32, u32),
} }
impl PartialEq for MonitorId {
fn eq(&self, other: &MonitorId) -> bool {
self.monitor_name == other.monitor_name
}
}
struct DeviceEnumerator { struct DeviceEnumerator {
parent_device: *const winapi::WCHAR, parent_device: *const winapi::WCHAR,
current_index: u32, current_index: u32,

View file

@ -276,6 +276,14 @@ impl Window {
pub fn id(&self) -> WindowId { pub fn id(&self) -> WindowId {
WindowId(self.window.0) WindowId(self.window.0)
} }
#[inline]
pub fn set_maximized(&self, maximized: bool) {
}
#[inline]
pub fn set_fullscreen_windowed(&self, fullscreen: bool) {
}
} }
impl Drop for Window { impl Drop for Window {
@ -319,13 +327,14 @@ unsafe fn init(window: WindowAttributes, pl_attribs: PlatformSpecificWindowBuild
// switching to fullscreen if necessary // switching to fullscreen if necessary
// this means adjusting the window's position so that it overlaps the right monitor, // this means adjusting the window's position so that it overlaps the right monitor,
// and change the monitor's resolution if necessary // and change the monitor's resolution if necessary
if window.monitor.is_some() { if let Some(ref monitor) = window.fullscreen.get_monitor() {
let monitor = window.monitor.as_ref().unwrap();
try!(switch_to_fullscreen(&mut rect, monitor)); try!(switch_to_fullscreen(&mut rect, monitor));
} }
let fullscreen = window.fullscreen.get_monitor().is_some();
// computing the style and extended style of the window // computing the style and extended style of the window
let (ex_style, style) = if window.monitor.is_some() || !window.decorations { let (ex_style, style) = if fullscreen || !window.decorations {
(winapi::WS_EX_APPWINDOW, (winapi::WS_EX_APPWINDOW,
//winapi::WS_POPUP is incompatible with winapi::WS_CHILD //winapi::WS_POPUP is incompatible with winapi::WS_CHILD
if pl_attribs.parent.is_some() { if pl_attribs.parent.is_some() {
@ -345,13 +354,13 @@ unsafe fn init(window: WindowAttributes, pl_attribs: PlatformSpecificWindowBuild
// creating the real window this time, by using the functions in `extra_functions` // creating the real window this time, by using the functions in `extra_functions`
let real_window = { let real_window = {
let (width, height) = if window.monitor.is_some() || window.dimensions.is_some() { let (width, height) = if fullscreen || window.dimensions.is_some() {
(Some(rect.right - rect.left), Some(rect.bottom - rect.top)) (Some(rect.right - rect.left), Some(rect.bottom - rect.top))
} else { } else {
(None, None) (None, None)
}; };
let (x, y) = if window.monitor.is_some() { let (x, y) = if fullscreen {
(Some(rect.left), Some(rect.top)) (Some(rect.left), Some(rect.top))
} else { } else {
(None, None) (None, None)
@ -425,7 +434,7 @@ unsafe fn init(window: WindowAttributes, pl_attribs: PlatformSpecificWindowBuild
} }
// calling SetForegroundWindow if fullscreen // calling SetForegroundWindow if fullscreen
if window.monitor.is_some() { if fullscreen {
user32::SetForegroundWindow(real_window.0); user32::SetForegroundWindow(real_window.0);
} }