Introduce CSSPixel as a replacement for ViewportPx and PagePx.

This commit is contained in:
Glenn Watson 2017-02-23 14:16:29 +10:00
parent 56a99577b3
commit 30ff2f8f0d
16 changed files with 81 additions and 92 deletions

View file

@ -3252,7 +3252,7 @@ impl DocumentMethods for Document {
let y = *y as f32;
let point = &Point2D::new(x, y);
let window = window_from_node(self);
let viewport = window.window_size().unwrap().visible_viewport;
let viewport = window.window_size().unwrap().initial_viewport;
if self.browsing_context().is_none() {
return None;
@ -3285,7 +3285,7 @@ impl DocumentMethods for Document {
let y = *y as f32;
let point = &Point2D::new(x, y);
let window = window_from_node(self);
let viewport = window.window_size().unwrap().visible_viewport;
let viewport = window.window_size().unwrap().initial_viewport;
if self.browsing_context().is_none() {
return vec!();

View file

@ -18,12 +18,11 @@ use dom::document::Document;
use dom::event::Event;
use dom::eventtarget::EventTarget;
use dom::mediaquerylistevent::MediaQueryListEvent;
use euclid::scale_factor::ScaleFactor;
use js::jsapi::JSTracer;
use std::cell::Cell;
use std::rc::Rc;
use style::media_queries::{Device, MediaList, MediaType};
use style_traits::{PagePx, ToCss, ViewportPx};
use style_traits::ToCss;
pub enum MediaQueryListMatchState {
Same(bool),
@ -75,12 +74,8 @@ impl MediaQueryList {
pub fn evaluate(&self) -> bool {
if let Some(window_size) = self.document.window().window_size() {
let viewport_size = window_size.visible_viewport;
// TODO: support real ViewportPx, including zoom level
// This information seems not to be tracked currently, so we assume
// ViewportPx == PagePx
let page_to_viewport: ScaleFactor<f32, PagePx, ViewportPx> = ScaleFactor::new(1.0);
let device = Device::new(MediaType::Screen, viewport_size * page_to_viewport);
let viewport_size = window_size.initial_viewport;
let device = Device::new(MediaType::Screen, viewport_size);
self.media_query_list.evaluate(&device)
} else {
false

View file

@ -774,7 +774,7 @@ impl WindowMethods for Window {
//TODO Include Scrollbar
fn InnerHeight(&self) -> i32 {
self.window_size.get()
.and_then(|e| e.visible_viewport.height.to_i32())
.and_then(|e| e.initial_viewport.height.to_i32())
.unwrap_or(0)
}
@ -782,7 +782,7 @@ impl WindowMethods for Window {
//TODO Include Scrollbar
fn InnerWidth(&self) -> i32 {
self.window_size.get()
.and_then(|e| e.visible_viewport.width.to_i32())
.and_then(|e| e.initial_viewport.width.to_i32())
.unwrap_or(0)
}