summaryrefslogtreecommitdiffstats
path: root/dom/webidl/MouseEvent.webidl
blob: 6053e6cec225260d7f76ed3f242c618cbc640631 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * For more information on this interface please see
 * http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html
 * https://drafts.csswg.org/cssom-view/#extensions-to-the-mouseevent-interface
 *
 * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
 * liability, trademark and document use rules apply.
 */

interface nsIScreen;

[Exposed=Window]
interface MouseEvent : UIEvent {
  constructor(DOMString typeArg,
              optional MouseEventInit mouseEventInitDict = {});

  [NeedsCallerType]
  readonly attribute long           screenX;
  [NeedsCallerType]
  readonly attribute long           screenY;

  [ChromeOnly]
  readonly attribute nsIScreen?     screen;

  readonly attribute long           pageX;
  readonly attribute long           pageY;
  readonly attribute long           clientX;
  readonly attribute long           clientY;
  [BinaryName="clientX"]
  readonly attribute long           x;
  [BinaryName="clientY"]
  readonly attribute long           y;
  readonly attribute long           offsetX;
  readonly attribute long           offsetY;
  readonly attribute boolean        ctrlKey;
  readonly attribute boolean        shiftKey;
  readonly attribute boolean        altKey;
  readonly attribute boolean        metaKey;
  readonly attribute short          button;
  readonly attribute unsigned short buttons;
  readonly attribute EventTarget?   relatedTarget;
  [Pref="dom.mouse_event.region.enabled"]
  readonly attribute DOMString?     region;

  // Pointer Lock
  readonly attribute long           movementX;
  readonly attribute long           movementY;

  // Deprecated in DOM Level 3:
undefined initMouseEvent(DOMString typeArg,
                         optional boolean canBubbleArg = false,
                         optional boolean cancelableArg = false,
                         optional Window? viewArg = null,
                         optional long detailArg = 0,
                         optional long screenXArg = 0,
                         optional long screenYArg = 0,
                         optional long clientXArg = 0,
                         optional long clientYArg = 0,
                         optional boolean ctrlKeyArg = false,
                         optional boolean altKeyArg = false,
                         optional boolean shiftKeyArg = false,
                         optional boolean metaKeyArg = false,
                         optional short buttonArg = 0,
                         optional EventTarget? relatedTargetArg = null);
  // Introduced in DOM Level 3:
  boolean                           getModifierState(DOMString keyArg);
};

// Suggested initMouseEvent replacement initializer:
dictionary MouseEventInit : EventModifierInit {
  // Attributes for MouseEvent:
  long           screenX       = 0;
  long           screenY       = 0;
  long           clientX       = 0;
  long           clientY       = 0;
  short          button        = 0;
  // Note: "buttons" was not previously initializable through initMouseEvent!
  unsigned short buttons       = 0;
  EventTarget?   relatedTarget = null;

  // Pointer Lock
  long           movementX = 0;
  long           movementY = 0;
};

// Mozilla extensions
partial interface MouseEvent
{
  // Finger or touch pressure event value
  // ranges between 0.0 and 1.0
  [Deprecated="MouseEvent_MozPressure"]
  readonly attribute float mozPressure;

  const unsigned short    MOZ_SOURCE_UNKNOWN    = 0;
  const unsigned short    MOZ_SOURCE_MOUSE      = 1;
  const unsigned short    MOZ_SOURCE_PEN        = 2;
  const unsigned short    MOZ_SOURCE_ERASER     = 3;
  const unsigned short    MOZ_SOURCE_CURSOR     = 4;
  const unsigned short    MOZ_SOURCE_TOUCH      = 5;
  const unsigned short    MOZ_SOURCE_KEYBOARD   = 6;

  readonly attribute unsigned short mozInputSource;

  undefined initNSMouseEvent(DOMString typeArg,
                             optional boolean canBubbleArg = false,
                             optional boolean cancelableArg = false,
                             optional Window? viewArg = null,
                             optional long detailArg = 0,
                             optional long screenXArg = 0,
                             optional long screenYArg = 0,
                             optional long clientXArg = 0,
                             optional long clientYArg = 0,
                             optional boolean ctrlKeyArg = false,
                             optional boolean altKeyArg = false,
                             optional boolean shiftKeyArg = false,
                             optional boolean metaKeyArg = false,
                             optional short buttonArg = 0,
                             optional EventTarget? relatedTargetArg = null,
                             optional float pressure = 0,
                             optional unsigned short inputSourceArg = 0);

  /**
   * preventClickEvent() prevents the following "click", "auxclick" and
   * "dblclick" events of "mousedown" and "mouseup" events.
   */
  [ChromeOnly]
  undefined preventClickEvent();

  /**
   * Returns true if the following "click", "auxclick" and "dblclick"
   * events of "mousedown" and "mouseup" events are prevented.
   */
  [ChromeOnly]
  boolean clickEventPrevented();
};