check method existence for hidpi_factor(), handle platforms other than macos

This commit is contained in:
Mike Blumenkrantz 2015-05-18 15:56:48 -04:00
parent 1aed319684
commit 789a4973f7

View file

@ -232,23 +232,35 @@ impl WindowMethods for Window {
} }
fn hidpi_factor(&self) -> ScaleFactor<ScreenPx,DevicePixel,f32> { fn hidpi_factor(&self) -> ScaleFactor<ScreenPx,DevicePixel,f32> {
if cfg!(target_os="macos") {
let browser = self.cef_browser.borrow(); let browser = self.cef_browser.borrow();
match *browser { match *browser {
None => ScaleFactor::new(1.0), None => ScaleFactor::new(1.0),
Some(ref browser) => { Some(ref browser) => {
let mut view_rect = cef_rect_t::zero(); let mut view_rect = cef_rect_t::zero();
if check_ptr_exist!(browser.get_host().get_client(), get_render_handler) &&
check_ptr_exist!(browser.get_host().get_client().get_render_handler(), get_view_rect) {
browser.get_host() browser.get_host()
.get_client() .get_client()
.get_render_handler() .get_render_handler()
.get_view_rect((*browser).clone(), &mut view_rect); .get_view_rect((*browser).clone(), &mut view_rect);
}
let mut backing_rect = cef_rect_t::zero(); let mut backing_rect = cef_rect_t::zero();
if check_ptr_exist!(browser.get_host().get_client(), get_render_handler) &&
check_ptr_exist!(browser.get_host().get_client().get_render_handler(), get_backing_rect) {
browser.get_host() browser.get_host()
.get_client() .get_client()
.get_render_handler() .get_render_handler()
.get_backing_rect((*browser).clone(), &mut backing_rect); .get_backing_rect((*browser).clone(), &mut backing_rect);
}
ScaleFactor::new(backing_rect.width as f32 / view_rect.width as f32) ScaleFactor::new(backing_rect.width as f32 / view_rect.width as f32)
} }
} }
} else {
// FIXME(zmike)
// need to figure out a method for actually getting the scale factor instead of this nonsense
ScaleFactor::new(1.0 as f32)
}
} }
#[cfg(target_os="macos")] #[cfg(target_os="macos")]