Renamed some cursor types to their CSS names and added a way to handle custom cursors properly.

This commit is contained in:
Heilig Benedek 2016-01-31 17:00:14 +01:00
parent 61e0219e91
commit 066c189249
4 changed files with 53 additions and 45 deletions

View file

@ -1043,7 +1043,16 @@ void WebContents::EndFrameSubscription() {
}
void WebContents::OnCursorChange(const content::WebCursor& cursor) {
Emit("cursor-changed", CursorTypeToString(cursor));
content::WebCursor::CursorInfo* info = new content::WebCursor::CursorInfo();
cursor.GetCursorInfo(info);
if (cursor.IsCustom()) {
Emit("cursor-changed", CursorTypeToString(info),
gfx::Image::CreateFrom1xBitmap(info->custom_image),
info->image_scale_factor);
} else {
Emit("cursor-changed", CursorTypeToString(info));
}
}
void WebContents::SetSize(const SetSizeParams& params) {

View file

@ -9,42 +9,37 @@ using Cursor = blink::WebCursorInfo::Type;
namespace atom {
std::string CursorTypeToString(const content::WebCursor& cursor) {
content::WebCursor::CursorInfo* info = new content::WebCursor::CursorInfo();
cursor.GetCursorInfo(info);
std::string CursorTypeToString(const content::WebCursor::CursorInfo* info) {
switch (info->type) {
case Cursor::TypePointer: return "pointer";
case Cursor::TypeCross: return "cross";
case Cursor::TypeHand: return "hand";
case Cursor::TypeIBeam: return "i-beam";
case Cursor::TypePointer: return "default";
case Cursor::TypeCross: return "crosshair";
case Cursor::TypeHand: return "pointer";
case Cursor::TypeIBeam: return "text";
case Cursor::TypeWait: return "wait";
case Cursor::TypeHelp: return "help";
case Cursor::TypeEastResize: return "east-resize";
case Cursor::TypeNorthResize: return "north-resize";
case Cursor::TypeNorthEastResize: return "north-east-resize";
case Cursor::TypeNorthWestResize: return "north-west-resize";
case Cursor::TypeSouthResize: return "south-resize";
case Cursor::TypeSouthEastResize: return "south-east-resize";
case Cursor::TypeSouthWestResize: return "south-west-resize";
case Cursor::TypeWestResize: return "west-resize";
case Cursor::TypeNorthSouthResize: return "north-south-resize";
case Cursor::TypeEastWestResize: return "east-west-resize";
case Cursor::TypeNorthEastSouthWestResize:
return "north-east-south-west-resize";
case Cursor::TypeNorthWestSouthEastResize:
return "north-west-south-east-resize";
case Cursor::TypeColumnResize: return "column-resize";
case Cursor::TypeEastResize: return "e-resize";
case Cursor::TypeNorthResize: return "n-resize";
case Cursor::TypeNorthEastResize: return "ne-resize";
case Cursor::TypeNorthWestResize: return "nw-resize";
case Cursor::TypeSouthResize: return "s-resize";
case Cursor::TypeSouthEastResize: return "se-resize";
case Cursor::TypeSouthWestResize: return "sw-resize";
case Cursor::TypeWestResize: return "w-resize";
case Cursor::TypeNorthSouthResize: return "ns-resize";
case Cursor::TypeEastWestResize: return "ew-resize";
case Cursor::TypeNorthEastSouthWestResize: return "nesw-resize";
case Cursor::TypeNorthWestSouthEastResize: return "nwse-resize";
case Cursor::TypeColumnResize: return "col-resize";
case Cursor::TypeRowResize: return "row-resize";
case Cursor::TypeMiddlePanning: return "middle-panning";
case Cursor::TypeEastPanning: return "east-panning";
case Cursor::TypeNorthPanning: return "north-panning";
case Cursor::TypeNorthEastPanning: return "north-east-panning";
case Cursor::TypeNorthWestPanning: return "north-west-panning";
case Cursor::TypeSouthPanning: return "south-panning";
case Cursor::TypeSouthEastPanning: return "south-east-panning";
case Cursor::TypeSouthWestPanning: return "south-west-panning";
case Cursor::TypeWestPanning: return "west-panning";
case Cursor::TypeMiddlePanning: return "m-panning";
case Cursor::TypeEastPanning: return "e-panning";
case Cursor::TypeNorthPanning: return "n-panning";
case Cursor::TypeNorthEastPanning: return "ne-panning";
case Cursor::TypeNorthWestPanning: return "nw-panning";
case Cursor::TypeSouthPanning: return "s-panning";
case Cursor::TypeSouthEastPanning: return "se-panning";
case Cursor::TypeSouthWestPanning: return "sw-panning";
case Cursor::TypeWestPanning: return "w-panning";
case Cursor::TypeMove: return "move";
case Cursor::TypeVerticalText: return "vertical-text";
case Cursor::TypeCell: return "cell";
@ -60,7 +55,7 @@ std::string CursorTypeToString(const content::WebCursor& cursor) {
case Cursor::TypeGrab: return "grab";
case Cursor::TypeGrabbing: return "grabbing";
case Cursor::TypeCustom: return "custom";
default: return "pointer";
default: return "default";
}
}

View file

@ -29,7 +29,7 @@
namespace atom {
// Returns the cursor's type as a string.
std::string CursorTypeToString(const content::WebCursor& cursor);
std::string CursorTypeToString(const content::WebCursor::CursorInfo* info);
} // namespace atom

View file

@ -287,17 +287,21 @@ Returns:
* `event` Event
* `type` String
* `image` NativeImage
* `scale` Float
Emitted when the cursor's type changes. The `type` parameter can be `pointer`,
`cross`, `hand`, `i-beam`, `wait`, `help`, `east-resize`, `north-resize`,
`north-east-resize`, `north-west-resize`, `south-resize`, `south-east-resize`,
`south-west-resize`, `west-resize`, `north-south-resize`, `east-west-resize`,
`north-east-south-west-resize`, `north-west-south-east-resize`, `column-resize`,
`row-resize`, `middle-panning`, `east-panning`, `north-panning`,
`north-east-panning`, `north-west-panning`, `south-panning`,
`south-east-panning`, `south-west-panning`, `west-panning`, `move`,
`vertical-text`, `cell`, `context-menu`, `alias`, `progress`, `nodrop`, `copy`,
`none`, `not-allowed`, `zoom-in`, `zoom-out`, `grab`, `grabbing`, `custom`.
Emitted when the cursor's type changes. The `type` parameter can be `default`,
`crosshair`, `pointer`, `text`, `wait`, `help`, `e-resize`, `n-resize`,
`ne-resize`, `nw-resize`, `s-resize`, `se-resize`, `sw-resize`, `w-resize`,
`ns-resize`, `ew-resize`, `nesw-resize`, `nwse-resize`, `col-resize`,
`row-resize`, `m-panning`, `e-panning`, `n-panning`, `ne-panning`, `nw-panning`,
`s-panning`, `se-panning`, `sw-panning`, `w-panning`, `move`, `vertical-text`,
`cell`, `context-menu`, `alias`, `progress`, `nodrop`, `copy`, `none`,
`not-allowed`, `zoom-in`, `zoom-out`, `grab`, `grabbing`, `custom`.
If the `type` parameter is `custom`, the `image` parameter will hold the custom
cursor image in a `NativeImage`, and the `scale` will hold scaling information
for the image.
## Instance Methods