Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Unified Diff: sky/specs/ui.md

Issue 699323002: Specs: UI events, first draft (covers just pointer events for now) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/specs/ui.md
diff --git a/sky/specs/ui.md b/sky/specs/ui.md
new file mode 100644
index 0000000000000000000000000000000000000000..72a17d331a4a55e3d4dfce8ad4f9b4de3637347c
--- /dev/null
+++ b/sky/specs/ui.md
@@ -0,0 +1,98 @@
+UI Events
+=========
+
+Pointer events
+--------------
+
+Each touch or pointer is tracked individually.
+
+New touches and pointers can appear and disappear over time.
+
+When a new one enters the system, a 'pointer-added' event is fired at
+the application's document.
+
+When it is removed, a 'pointer-removed' event is fired at the
+application's document.
+
+When one switches from "up" to "down", the position of the tap is hit
+tested and a 'pointer-down' event is fired at the target element under
+the cursor, if any, or the document otherwise.
+
+When one moves, if it is "up" then a 'pointer-moved' event is fired at
+the application's document, otherwise if it is "down" then the event
+is fired at the element or document that was selected for the
+'pointer-down' event.
+
+When one switches from "down" to "up", a 'pointer-up' event is fired
+at the element or document that was selected for the 'pointer-down'
+event.
+
+
+These events all bubble and their data is an object with the following
+fields:
+
+ pointer: an integer assigned to this touch or pointer when it
+ enters the system, never reused, increasing monotonically
+ every time a new value is assigned, starting from 1 (if
+ the system gets a new tap every microsecond, this will
+ cause a problem after 285 years)
+
+ x: x-position relative to the top-left corner of the display,
+ in global layout coordinates
+
+ y: x-position relative to the top-left corner of the display,
+ in global layout coordinates
+
+ buttons: a bitfield of the buttons pressed, where 1 is the primary
+ button, 2 is the secondary, and subsequent numbers refer
+ to any other buttons
+
+TODO(ianh): add other fields for touches (radius/pressure, angle)
+
+TODO(ianh): should we use a different way to express buttons? e.g.
+create a new touch for the secondary button when it goes down,
+removing the touch when it goes back up?
+
+TODO(ianh): find a way to avoid the trap everyone always falls into of
+treating all the buttons as equivalent to a touch (e.g. right-clicking
+a button shouldn't trigger the button). For example, maybe we should
+remove 'buttons' and use different event names for the up/down state
+changes of non-primary buttons of pointers, like 'pointer-down-2' for
+the secondary button, 'pointer-down-3' for the middle mouse button,
+and so on.
+
+
+Wheel events
+------------
+
+When a wheel input device is turned, a 'wheel' event that bubbles is
+fired at the application's document, with the following fields:
+
+ wheel: an integer assigned to this wheel by the system. The same
+ wheel on the same system must always be given the same ID.
+ The primary wheel (e.g. the vertical wheel on a mouse)
+ must be given ID 1.
+
+ delta: an floating point number representing the fraction of the
+ wheel that was turned, with positive numbers representing
+ a downward movement on vertical wheels, rightward movement
+ on horizontal wheels, and a clockwise movement on wheels
+ with a user-facing side.
+
+Additionally, if the wheel is associated with a pointer (e.g. a mouse
+wheel), the following fields must be present also:
+
+ pointer: the integer assigned to the pointer in its 'pointer-add'
+ event (see above).
+
+ x: x-position relative to the top-left corner of the display,
+ in global layout coordinates
+
+ y: x-position relative to the top-left corner of the display,
+ in global layout coordinates
+
+
+Text input events
+-----------------
+
+TODO(ianh): keyboard events
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698