aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs9
-rw-r--r--src/win32/mod.rs30
-rw-r--r--src/x11/mod.rs6
3 files changed, 23 insertions, 22 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 8b1c30e..3471d3d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -51,8 +51,11 @@ impl Window {
self.window.set_title(title)
}
+ /// Returns the position of the window relative to the top-left hand corner of the screen.
+ ///
+ /// Returns `None` if the window no longer exists.
#[inline]
- pub fn get_position(&self) -> (int, int) {
+ pub fn get_position(&self) -> Option<(int, int)> {
self.window.get_position()
}
@@ -62,12 +65,12 @@ impl Window {
}
#[inline]
- pub fn get_inner_size(&self) -> (uint, uint) {
+ pub fn get_inner_size(&self) -> Option<(uint, uint)> {
self.window.get_inner_size()
}
#[inline]
- pub fn get_outer_size(&self) -> (uint, uint) {
+ pub fn get_outer_size(&self) -> Option<(uint, uint)> {
self.window.get_outer_size()
}
diff --git a/src/win32/mod.rs b/src/win32/mod.rs
index 74b046b..9d44e02 100644
--- a/src/win32/mod.rs
+++ b/src/win32/mod.rs
@@ -94,8 +94,6 @@ impl Window {
// creating the window
let handle = unsafe {
- use libc;
-
let handle = ffi::CreateWindowExW(ex_style, class_name.as_ptr(),
title.utf16_units().collect::<Vec<u16>>().append_one(0).as_ptr() as ffi::LPCWSTR,
style | ffi::WS_VISIBLE | ffi::WS_CLIPSIBLINGS | ffi::WS_CLIPCHILDREN,
@@ -207,18 +205,18 @@ impl Window {
}
}
- pub fn get_position(&self) -> (int, int) {
- use std::{mem, os};
+ pub fn get_position(&self) -> Option<(int, int)> {
+ use std::mem;
let mut placement: ffi::WINDOWPLACEMENT = unsafe { mem::zeroed() };
placement.length = mem::size_of::<ffi::WINDOWPLACEMENT>() as ffi::UINT;
if unsafe { ffi::GetWindowPlacement(self.window, &mut placement) } == 0 {
- fail!("GetWindowPlacement failed: {}", os::error_string(os::errno() as uint));
+ return None
}
let ref rect = placement.rcNormalPosition;
- (rect.left as int, rect.top as int)
+ Some((rect.left as int, rect.top as int))
}
pub fn set_position(&self, x: uint, y: uint) {
@@ -231,32 +229,32 @@ impl Window {
}
}
- pub fn get_inner_size(&self) -> (uint, uint) {
- use std::{mem, os};
+ pub fn get_inner_size(&self) -> Option<(uint, uint)> {
+ use std::mem;
let mut rect: ffi::RECT = unsafe { mem::uninitialized() };
if unsafe { ffi::GetClientRect(self.window, &mut rect) } == 0 {
- fail!("GetClientRect failed: {}", os::error_string(os::errno() as uint));
+ return None
}
- (
+ Some((
(rect.right - rect.left) as uint,
(rect.bottom - rect.top) as uint
- )
+ ))
}
- pub fn get_outer_size(&self) -> (uint, uint) {
- use std::{mem, os};
+ pub fn get_outer_size(&self) -> Option<(uint, uint)> {
+ use std::mem;
let mut rect: ffi::RECT = unsafe { mem::uninitialized() };
if unsafe { ffi::GetWindowRect(self.window, &mut rect) } == 0 {
- fail!("GetWindowRect failed: {}", os::error_string(os::errno() as uint));
+ return None
}
- (
+ Some((
(rect.right - rect.left) as uint,
(rect.bottom - rect.top) as uint
- )
+ ))
}
pub fn set_inner_size(&self, x: uint, y: uint) {
diff --git a/src/x11/mod.rs b/src/x11/mod.rs
index cbb40d5..68a061b 100644
--- a/src/x11/mod.rs
+++ b/src/x11/mod.rs
@@ -120,7 +120,7 @@ impl Window {
}
}
- pub fn get_position(&self) -> (int, int) {
+ pub fn get_position(&self) -> Option<(int, int)> {
unimplemented!()
}
@@ -128,11 +128,11 @@ impl Window {
unimplemented!()
}
- pub fn get_inner_size(&self) -> (uint, uint) {
+ pub fn get_inner_size(&self) -> Option<(uint, uint)> {
unimplemented!()
}
- pub fn get_outer_size(&self) -> (uint, uint) {
+ pub fn get_outer_size(&self) -> Option<(uint, uint)> {
unimplemented!()
}