Add MouseWheelMode, make SDL wheel events consistent, add MouseButton, rename Cursor back to MouseCursor (resolve #1124)

This commit is contained in:
Joshua Granick
2018-07-20 16:13:18 -07:00
parent 4139574542
commit 40316b7890
8 changed files with 65 additions and 63 deletions

View File

@@ -13,16 +13,17 @@ import flash.events.TouchEvent;
import flash.geom.Matrix;
import flash.system.Capabilities;
import flash.ui.Mouse;
import flash.ui.MouseCursor;
import flash.ui.MouseCursor in FlashMouseCursor;
import flash.Lib;
import lime.app.Application;
import lime.graphics.Image;
import lime.graphics.RenderContext;
import lime.graphics.RenderContextAttributes;
import lime.math.Rectangle;
import lime.ui.Cursor;
import lime.ui.KeyCode;
import lime.ui.KeyModifier;
import lime.ui.MouseButton;
import lime.ui.MouseCursor;
import lime.ui.Touch;
import lime.system.Display;
import lime.system.DisplayMode;
@@ -305,11 +306,11 @@ class FlashWindow {
private function handleMouseEvent (event:MouseEvent):Void {
var button = switch (event.type) {
var button:MouseButton = switch (event.type) {
case "middleMouseDown", "middleMouseUp": 1;
case "rightMouseDown", "rightMouseUp": 2;
default: 0;
case "middleMouseDown", "middleMouseUp": MIDDLE;
case "rightMouseDown", "rightMouseUp": RIGHT;
default: LEFT;
}
@@ -343,7 +344,7 @@ class FlashWindow {
case "mouseWheel":
parent.onMouseWheel.dispatch (0, event.delta);
parent.onMouseWheel.dispatch (0, event.delta, LINES);
default:
@@ -385,7 +386,7 @@ class FlashWindow {
if (event.isPrimaryTouchPoint) {
parent.onMouseDown.dispatch (x, y, 0);
parent.onMouseDown.dispatch (x, y, LEFT);
}
@@ -522,7 +523,7 @@ class FlashWindow {
}
public function setCursor (value:Cursor):Cursor {
public function setCursor (value:MouseCursor):MouseCursor {
if (cursor != value) {
@@ -540,18 +541,18 @@ class FlashWindow {
Mouse.cursor = switch (value) {
case ARROW: MouseCursor.ARROW;
case CROSSHAIR: MouseCursor.ARROW;
case MOVE: MouseCursor.HAND;
case POINTER: MouseCursor.BUTTON;
case RESIZE_NESW: MouseCursor.HAND;
case RESIZE_NS: MouseCursor.HAND;
case RESIZE_NWSE: MouseCursor.HAND;
case RESIZE_WE: MouseCursor.HAND;
case TEXT: MouseCursor.IBEAM;
case WAIT: MouseCursor.ARROW;
case WAIT_ARROW: MouseCursor.ARROW;
default: MouseCursor.AUTO;
case ARROW: FlashMouseCursor.ARROW;
case CROSSHAIR: FlashMouseCursor.ARROW;
case MOVE: FlashMouseCursor.HAND;
case POINTER: FlashMouseCursor.BUTTON;
case RESIZE_NESW: FlashMouseCursor.HAND;
case RESIZE_NS: FlashMouseCursor.HAND;
case RESIZE_NWSE: FlashMouseCursor.HAND;
case RESIZE_WE: FlashMouseCursor.HAND;
case TEXT: FlashMouseCursor.IBEAM;
case WAIT: FlashMouseCursor.ARROW;
case WAIT_ARROW: FlashMouseCursor.ARROW;
default: FlashMouseCursor.AUTO;
}

View File

@@ -27,9 +27,9 @@ import lime.system.Display;
import lime.system.DisplayMode;
import lime.system.System;
import lime.system.Clipboard;
import lime.ui.Cursor;
import lime.ui.Gamepad;
import lime.ui.Joystick;
import lime.ui.MouseCursor;
import lime.ui.Touch;
import lime.ui.Window;
@@ -61,7 +61,7 @@ class HTML5Window {
private var cacheElementWidth:Float;
private var cacheMouseX:Float;
private var cacheMouseY:Float;
private var cursor:Cursor;
private var cursor:MouseCursor;
private var cursorHidden:Bool;
private var currentTouches = new Map<Int, Touch> ();
private var isFullscreen:Bool;
@@ -375,7 +375,7 @@ class HTML5Window {
}
public function getCursor ():Cursor {
public function getCursor ():MouseCursor {
return cursor;
@@ -713,7 +713,16 @@ class HTML5Window {
} else {
parent.onMouseWheel.dispatch (untyped event.deltaX, -untyped event.deltaY);
var deltaMode = switch (untyped event.deltaMode) {
case 0: PIXELS;
case 1: LINES;
case 2: PAGES;
default: UNKNOWN;
}
parent.onMouseWheel.dispatch (untyped event.deltaX, -untyped event.deltaY, deltaMode);
if (parent.onMouseWheel.canceled) {
@@ -1023,7 +1032,7 @@ class HTML5Window {
}
public function setCursor (value:Cursor):Cursor {
public function setCursor (value:MouseCursor):MouseCursor {
if (cursor != value) {

View File

@@ -400,7 +400,7 @@ class NativeApplication {
case MOUSE_WHEEL:
window.onMouseWheel.dispatch (mouseEventInfo.x, mouseEventInfo.y);
window.onMouseWheel.dispatch (mouseEventInfo.x, mouseEventInfo.y, UNKNOWN);
default:

View File

@@ -20,7 +20,7 @@ import lime.system.Display;
import lime.system.DisplayMode;
import lime.system.JNI;
import lime.system.System;
import lime.ui.Cursor;
import lime.ui.MouseCursor;
import lime.ui.Window;
import lime.utils.UInt8Array;
@@ -47,7 +47,7 @@ class NativeWindow {
public var handle:Dynamic;
private var closing:Bool;
private var cursor:Cursor;
private var cursor:MouseCursor;
private var displayMode:DisplayMode;
private var frameRate:Float;
private var mouseLock:Bool;
@@ -273,7 +273,7 @@ class NativeWindow {
}
public function getCursor ():Cursor {
public function getCursor ():MouseCursor {
return cursor;
@@ -528,7 +528,7 @@ class NativeWindow {
}
public function setCursor (value:Cursor):Cursor {
public function setCursor (value:MouseCursor):MouseCursor {
if (cursor != value) {
@@ -540,7 +540,7 @@ class NativeWindow {
} else {
var type:CursorType = switch (value) {
var type:MouseCursorType = switch (value) {
case ARROW: ARROW;
case CROSSHAIR: CROSSHAIR;
@@ -766,7 +766,7 @@ class NativeWindow {
}
@:enum private abstract CursorType(Int) from Int to Int {
@:enum private abstract MouseCursorType(Int) from Int to Int {
var HIDDEN = 0;
var ARROW = 1;

View File

@@ -10,6 +10,8 @@ import lime.ui.Joystick;
import lime.ui.JoystickHatPosition;
import lime.ui.KeyCode;
import lime.ui.KeyModifier;
import lime.ui.MouseButton;
import lime.ui.MouseWheelMode;
import lime.ui.Touch;
import lime.ui.Window;
import lime.ui.WindowAttributes;
@@ -292,7 +294,7 @@ class Application extends Module {
@param y The current y coordinate of the mouse
@param button The ID of the mouse button that was pressed
**/
public function onMouseDown (x:Float, y:Float, button:Int):Void { }
public function onMouseDown (x:Float, y:Float, button:MouseButton):Void { }
/**
@@ -319,7 +321,7 @@ class Application extends Module {
@param y The current y coordinate of the mouse
@param button The ID of the button that was released
**/
public function onMouseUp (x:Float, y:Float, button:Int):Void { }
public function onMouseUp (x:Float, y:Float, button:MouseButton):Void { }
/**
@@ -327,7 +329,7 @@ class Application extends Module {
@param deltaX The amount of horizontal scrolling (if applicable)
@param deltaY The amount of vertical scrolling (if applicable)
**/
public function onMouseWheel (deltaX:Float, deltaY:Float):Void { }
public function onMouseWheel (deltaX:Float, deltaY:Float, deltaMode:MouseWheelMode):Void { }
/**

View File

@@ -1,20 +0,0 @@
package lime.ui;
enum Cursor {
ARROW;
CROSSHAIR;
DEFAULT;
MOVE;
POINTER;
RESIZE_NESW;
RESIZE_NS;
RESIZE_NWSE;
RESIZE_WE;
TEXT;
WAIT;
WAIT_ARROW;
CUSTOM;
}

View File

@@ -38,7 +38,7 @@ class Window {
public var application (default, null):Application;
public var borderless (get, set):Bool;
public var context (default, null):RenderContext;
public var cursor (get, set):Cursor;
public var cursor (get, set):MouseCursor;
public var display (get, null):Display;
public var displayMode (get, set):DisplayMode;
@@ -75,11 +75,11 @@ class Window {
public var onLeave (default, null) = new Event<Void->Void> ();
public var onMaximize (default, null) = new Event<Void->Void> ();
public var onMinimize (default, null) = new Event<Void->Void> ();
public var onMouseDown (default, null) = new Event<Float->Float->Int->Void> ();
public var onMouseDown (default, null) = new Event<Float->Float->MouseButton->Void> ();
public var onMouseMove (default, null) = new Event<Float->Float->Void> ();
public var onMouseMoveRelative (default, null) = new Event<Float->Float->Void> ();
public var onMouseUp (default, null) = new Event<Float->Float->Int->Void> ();
public var onMouseWheel (default, null) = new Event<Float->Float->Void> ();
public var onMouseWheel (default, null) = new Event<Float->Float->MouseWheelMode->Void> ();
public var onMove (default, null) = new Event<Float->Float->Void> ();
public var onRender (default, null) = new Event<RenderContext->Void> ();
public var onRenderContextLost (default, null) = new Event<Void->Void> ();
@@ -459,14 +459,14 @@ class Window {
@:noCompletion private function get_cursor ():Cursor {
@:noCompletion private function get_cursor ():MouseCursor {
return __backend.getCursor ();
}
@:noCompletion private function set_cursor (value:Cursor):Cursor {
@:noCompletion private function set_cursor (value:MouseCursor):MouseCursor {
return __backend.setCursor (value);