style: Move cursor property out of mako

This commit is contained in:
Igor Gutorov 2018-01-15 16:21:44 +02:00
parent 671b69c0b7
commit 4ee9eb8563
17 changed files with 413 additions and 360 deletions

View file

@ -33,7 +33,7 @@ use std::os::raw::{c_char, c_void};
use std::ptr;
use std::rc::Rc;
use servo_url::ServoUrl;
use style_traits::cursor::Cursor;
use style_traits::cursor::CursorKind;
use style_traits::DevicePixel;
#[cfg(target_os="linux")]
extern crate x11;
@ -104,69 +104,68 @@ impl Window {
vec![WindowEvent::Idle]
}
fn cursor_type_for_cursor(&self, cursor: Cursor) -> cef_cursor_type_t {
fn cursor_type_for_cursor(&self, cursor: CursorKind) -> cef_cursor_type_t {
match cursor {
Cursor::None => return cef_cursor_type_t::CT_NONE,
Cursor::ContextMenu => return cef_cursor_type_t::CT_CONTEXTMENU,
Cursor::Grabbing => return cef_cursor_type_t::CT_GRABBING,
Cursor::Crosshair => return cef_cursor_type_t::CT_CROSS,
Cursor::Copy => return cef_cursor_type_t::CT_COPY,
Cursor::Alias => return cef_cursor_type_t::CT_ALIAS,
Cursor::Text => return cef_cursor_type_t::CT_IBEAM,
Cursor::Grab | Cursor::AllScroll =>
return cef_cursor_type_t::CT_GRAB,
Cursor::NoDrop => return cef_cursor_type_t::CT_NODROP,
Cursor::NotAllowed => return cef_cursor_type_t::CT_NOTALLOWED,
Cursor::Pointer => return cef_cursor_type_t::CT_POINTER,
Cursor::SResize => return cef_cursor_type_t::CT_SOUTHRESIZE,
Cursor::WResize => return cef_cursor_type_t::CT_WESTRESIZE,
Cursor::EwResize => return cef_cursor_type_t::CT_EASTWESTRESIZE,
Cursor::ColResize => return cef_cursor_type_t::CT_COLUMNRESIZE,
Cursor::EResize => return cef_cursor_type_t::CT_EASTRESIZE,
Cursor::NResize => return cef_cursor_type_t::CT_NORTHRESIZE,
Cursor::NsResize => return cef_cursor_type_t::CT_NORTHSOUTHRESIZE,
Cursor::RowResize => return cef_cursor_type_t::CT_ROWRESIZE,
Cursor::VerticalText => return cef_cursor_type_t::CT_VERTICALTEXT,
_ => return cef_cursor_type_t::CT_POINTER,
CursorKind::None => cef_cursor_type_t::CT_NONE,
CursorKind::ContextMenu => cef_cursor_type_t::CT_CONTEXTMENU,
CursorKind::Grabbing => cef_cursor_type_t::CT_GRABBING,
CursorKind::Crosshair => cef_cursor_type_t::CT_CROSS,
CursorKind::Copy => cef_cursor_type_t::CT_COPY,
CursorKind::Alias => cef_cursor_type_t::CT_ALIAS,
CursorKind::Text => cef_cursor_type_t::CT_IBEAM,
CursorKind::Grab | CursorKind::AllScroll => cef_cursor_type_t::CT_GRAB,
CursorKind::NoDrop => cef_cursor_type_t::CT_NODROP,
CursorKind::NotAllowed => cef_cursor_type_t::CT_NOTALLOWED,
CursorKind::Pointer => cef_cursor_type_t::CT_POINTER,
CursorKind::SResize => cef_cursor_type_t::CT_SOUTHRESIZE,
CursorKind::WResize => cef_cursor_type_t::CT_WESTRESIZE,
CursorKind::EwResize => cef_cursor_type_t::CT_EASTWESTRESIZE,
CursorKind::ColResize => cef_cursor_type_t::CT_COLUMNRESIZE,
CursorKind::EResize => cef_cursor_type_t::CT_EASTRESIZE,
CursorKind::NResize => cef_cursor_type_t::CT_NORTHRESIZE,
CursorKind::NsResize => cef_cursor_type_t::CT_NORTHSOUTHRESIZE,
CursorKind::RowResize => cef_cursor_type_t::CT_ROWRESIZE,
CursorKind::VerticalText => cef_cursor_type_t::CT_VERTICALTEXT,
_ => cef_cursor_type_t::CT_POINTER,
}
}
/// Returns the Cocoa cursor for a CSS cursor. These match Firefox, except where Firefox
/// bundles custom resources (which we don't yet do).
#[cfg(target_os="macos")]
fn cursor_handle_for_cursor(&self, cursor: Cursor) -> cef_cursor_handle_t {
fn cursor_handle_for_cursor(&self, cursor: CursorKind) -> cef_cursor_handle_t {
use cocoa::base::class;
unsafe {
match cursor {
Cursor::None => return 0 as cef_cursor_handle_t,
Cursor::ContextMenu => msg_send![class("NSCursor"), contextualMenuCursor],
Cursor::Grabbing => msg_send![class("NSCursor"), closedHandCursor],
Cursor::Crosshair => msg_send![class("NSCursor"), crosshairCursor],
Cursor::Copy => msg_send![class("NSCursor"), dragCopyCursor],
Cursor::Alias => msg_send![class("NSCursor"), dragLinkCursor],
Cursor::Text => msg_send![class("NSCursor"), IBeamCursor],
Cursor::Grab | Cursor::AllScroll =>
CursorKind::None => return 0 as cef_cursor_handle_t,
CursorKind::ContextMenu => msg_send![class("NSCursor"), contextualMenuCursor],
CursorKind::Grabbing => msg_send![class("NSCursor"), closedHandCursor],
CursorKind::Crosshair => msg_send![class("NSCursor"), crosshairCursor],
CursorKind::Copy => msg_send![class("NSCursor"), dragCopyCursor],
CursorKind::Alias => msg_send![class("NSCursor"), dragLinkCursor],
CursorKind::Text => msg_send![class("NSCursor"), IBeamCursor],
CursorKind::Grab | CursorKind::AllScroll =>
msg_send![class("NSCursor"), openHandCursor],
Cursor::NoDrop | Cursor::NotAllowed =>
CursorKind::NoDrop | CursorKind::NotAllowed =>
msg_send![class("NSCursor"), operationNotAllowedCursor],
Cursor::Pointer => msg_send![class("NSCursor"), pointingHandCursor],
Cursor::SResize => msg_send![class("NSCursor"), resizeDownCursor],
Cursor::WResize => msg_send![class("NSCursor"), resizeLeftCursor],
Cursor::EwResize | Cursor::ColResize =>
CursorKind::Pointer => msg_send![class("NSCursor"), pointingHandCursor],
CursorKind::SResize => msg_send![class("NSCursor"), resizeDownCursor],
CursorKind::WResize => msg_send![class("NSCursor"), resizeLeftCursor],
CursorKind::EwResize | CursorKind::ColResize =>
msg_send![class("NSCursor"), resizeLeftRightCursor],
Cursor::EResize => msg_send![class("NSCursor"), resizeRightCursor],
Cursor::NResize => msg_send![class("NSCursor"), resizeUpCursor],
Cursor::NsResize | Cursor::RowResize =>
CursorKind::EResize => msg_send![class("NSCursor"), resizeRightCursor],
CursorKind::NResize => msg_send![class("NSCursor"), resizeUpCursor],
CursorKind::NsResize | CursorKind::RowResize =>
msg_send![class("NSCursor"), resizeUpDownCursor],
Cursor::VerticalText => msg_send![class("NSCursor"), IBeamCursorForVerticalLayout],
CursorKind::VerticalText => msg_send![class("NSCursor"), IBeamCursorForVerticalLayout],
_ => msg_send![class("NSCursor"), arrowCursor],
}
}
}
#[cfg(not(target_os="macos"))]
fn cursor_handle_for_cursor(&self, _: Cursor) -> cef_cursor_handle_t {
fn cursor_handle_for_cursor(&self, _: CursorKind) -> cef_cursor_handle_t {
0
}
@ -488,7 +487,7 @@ impl WindowMethods for Window {
// TODO(negge)
}
fn set_cursor(&self, cursor: Cursor) {
fn set_cursor(&self, cursor: CursorKind) {
use types::{CefCursorInfo,cef_point_t,cef_size_t};
let browser = self.cef_browser.borrow();
if let Some(ref browser) = *browser {

View file

@ -42,7 +42,7 @@ use std::rc::Rc;
use std::thread;
use std::time;
use style_traits::DevicePixel;
use style_traits::cursor::Cursor;
use style_traits::cursor::CursorKind;
#[cfg(target_os = "windows")]
use user32;
use webrender_api::{DeviceUintRect, DeviceUintSize, ScrollLocation};
@ -1190,47 +1190,48 @@ impl WindowMethods for Window {
}
/// Has no effect on Android.
fn set_cursor(&self, c: Cursor) {
fn set_cursor(&self, cursor: CursorKind) {
match self.kind {
WindowKind::Window(ref window) => {
use glutin::MouseCursor;
let glutin_cursor = match c {
Cursor::None => MouseCursor::NoneCursor,
Cursor::Default => MouseCursor::Default,
Cursor::Pointer => MouseCursor::Hand,
Cursor::ContextMenu => MouseCursor::ContextMenu,
Cursor::Help => MouseCursor::Help,
Cursor::Progress => MouseCursor::Progress,
Cursor::Wait => MouseCursor::Wait,
Cursor::Cell => MouseCursor::Cell,
Cursor::Crosshair => MouseCursor::Crosshair,
Cursor::Text => MouseCursor::Text,
Cursor::VerticalText => MouseCursor::VerticalText,
Cursor::Alias => MouseCursor::Alias,
Cursor::Copy => MouseCursor::Copy,
Cursor::Move => MouseCursor::Move,
Cursor::NoDrop => MouseCursor::NoDrop,
Cursor::NotAllowed => MouseCursor::NotAllowed,
Cursor::Grab => MouseCursor::Grab,
Cursor::Grabbing => MouseCursor::Grabbing,
Cursor::EResize => MouseCursor::EResize,
Cursor::NResize => MouseCursor::NResize,
Cursor::NeResize => MouseCursor::NeResize,
Cursor::NwResize => MouseCursor::NwResize,
Cursor::SResize => MouseCursor::SResize,
Cursor::SeResize => MouseCursor::SeResize,
Cursor::SwResize => MouseCursor::SwResize,
Cursor::WResize => MouseCursor::WResize,
Cursor::EwResize => MouseCursor::EwResize,
Cursor::NsResize => MouseCursor::NsResize,
Cursor::NeswResize => MouseCursor::NeswResize,
Cursor::NwseResize => MouseCursor::NwseResize,
Cursor::ColResize => MouseCursor::ColResize,
Cursor::RowResize => MouseCursor::RowResize,
Cursor::AllScroll => MouseCursor::AllScroll,
Cursor::ZoomIn => MouseCursor::ZoomIn,
Cursor::ZoomOut => MouseCursor::ZoomOut,
let glutin_cursor = match cursor {
CursorKind::Auto => MouseCursor::Default,
CursorKind::None => MouseCursor::NoneCursor,
CursorKind::Default => MouseCursor::Default,
CursorKind::Pointer => MouseCursor::Hand,
CursorKind::ContextMenu => MouseCursor::ContextMenu,
CursorKind::Help => MouseCursor::Help,
CursorKind::Progress => MouseCursor::Progress,
CursorKind::Wait => MouseCursor::Wait,
CursorKind::Cell => MouseCursor::Cell,
CursorKind::Crosshair => MouseCursor::Crosshair,
CursorKind::Text => MouseCursor::Text,
CursorKind::VerticalText => MouseCursor::VerticalText,
CursorKind::Alias => MouseCursor::Alias,
CursorKind::Copy => MouseCursor::Copy,
CursorKind::Move => MouseCursor::Move,
CursorKind::NoDrop => MouseCursor::NoDrop,
CursorKind::NotAllowed => MouseCursor::NotAllowed,
CursorKind::Grab => MouseCursor::Grab,
CursorKind::Grabbing => MouseCursor::Grabbing,
CursorKind::EResize => MouseCursor::EResize,
CursorKind::NResize => MouseCursor::NResize,
CursorKind::NeResize => MouseCursor::NeResize,
CursorKind::NwResize => MouseCursor::NwResize,
CursorKind::SResize => MouseCursor::SResize,
CursorKind::SeResize => MouseCursor::SeResize,
CursorKind::SwResize => MouseCursor::SwResize,
CursorKind::WResize => MouseCursor::WResize,
CursorKind::EwResize => MouseCursor::EwResize,
CursorKind::NsResize => MouseCursor::NsResize,
CursorKind::NeswResize => MouseCursor::NeswResize,
CursorKind::NwseResize => MouseCursor::NwseResize,
CursorKind::ColResize => MouseCursor::ColResize,
CursorKind::RowResize => MouseCursor::RowResize,
CursorKind::AllScroll => MouseCursor::AllScroll,
CursorKind::ZoomIn => MouseCursor::ZoomIn,
CursorKind::ZoomOut => MouseCursor::ZoomOut,
};
window.set_cursor(glutin_cursor);
}