|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ |
|
3 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
4 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
6 |
|
7 #include "mozilla/dom/XULCommandEvent.h" |
|
8 #include "prtime.h" |
|
9 |
|
10 namespace mozilla { |
|
11 namespace dom { |
|
12 |
|
13 XULCommandEvent::XULCommandEvent(EventTarget* aOwner, |
|
14 nsPresContext* aPresContext, |
|
15 WidgetInputEvent* aEvent) |
|
16 : UIEvent(aOwner, aPresContext, |
|
17 aEvent ? aEvent : new WidgetInputEvent(false, 0, nullptr)) |
|
18 { |
|
19 if (aEvent) { |
|
20 mEventIsInternal = false; |
|
21 } |
|
22 else { |
|
23 mEventIsInternal = true; |
|
24 mEvent->time = PR_Now(); |
|
25 } |
|
26 } |
|
27 |
|
28 NS_IMPL_ADDREF_INHERITED(XULCommandEvent, UIEvent) |
|
29 NS_IMPL_RELEASE_INHERITED(XULCommandEvent, UIEvent) |
|
30 |
|
31 NS_IMPL_CYCLE_COLLECTION_INHERITED(XULCommandEvent, UIEvent, |
|
32 mSourceEvent) |
|
33 |
|
34 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(XULCommandEvent) |
|
35 NS_INTERFACE_MAP_ENTRY(nsIDOMXULCommandEvent) |
|
36 NS_INTERFACE_MAP_END_INHERITING(UIEvent) |
|
37 |
|
38 bool |
|
39 XULCommandEvent::AltKey() |
|
40 { |
|
41 return mEvent->AsInputEvent()->IsAlt(); |
|
42 } |
|
43 |
|
44 NS_IMETHODIMP |
|
45 XULCommandEvent::GetAltKey(bool* aIsDown) |
|
46 { |
|
47 NS_ENSURE_ARG_POINTER(aIsDown); |
|
48 *aIsDown = AltKey(); |
|
49 return NS_OK; |
|
50 } |
|
51 |
|
52 bool |
|
53 XULCommandEvent::CtrlKey() |
|
54 { |
|
55 return mEvent->AsInputEvent()->IsControl(); |
|
56 } |
|
57 |
|
58 NS_IMETHODIMP |
|
59 XULCommandEvent::GetCtrlKey(bool* aIsDown) |
|
60 { |
|
61 NS_ENSURE_ARG_POINTER(aIsDown); |
|
62 *aIsDown = CtrlKey(); |
|
63 return NS_OK; |
|
64 } |
|
65 |
|
66 bool |
|
67 XULCommandEvent::ShiftKey() |
|
68 { |
|
69 return mEvent->AsInputEvent()->IsShift(); |
|
70 } |
|
71 |
|
72 NS_IMETHODIMP |
|
73 XULCommandEvent::GetShiftKey(bool* aIsDown) |
|
74 { |
|
75 NS_ENSURE_ARG_POINTER(aIsDown); |
|
76 *aIsDown = ShiftKey(); |
|
77 return NS_OK; |
|
78 } |
|
79 |
|
80 bool |
|
81 XULCommandEvent::MetaKey() |
|
82 { |
|
83 return mEvent->AsInputEvent()->IsMeta(); |
|
84 } |
|
85 |
|
86 NS_IMETHODIMP |
|
87 XULCommandEvent::GetMetaKey(bool* aIsDown) |
|
88 { |
|
89 NS_ENSURE_ARG_POINTER(aIsDown); |
|
90 *aIsDown = MetaKey(); |
|
91 return NS_OK; |
|
92 } |
|
93 |
|
94 NS_IMETHODIMP |
|
95 XULCommandEvent::GetSourceEvent(nsIDOMEvent** aSourceEvent) |
|
96 { |
|
97 NS_ENSURE_ARG_POINTER(aSourceEvent); |
|
98 nsCOMPtr<nsIDOMEvent> event = GetSourceEvent(); |
|
99 event.forget(aSourceEvent); |
|
100 return NS_OK; |
|
101 } |
|
102 |
|
103 NS_IMETHODIMP |
|
104 XULCommandEvent::InitCommandEvent(const nsAString& aType, |
|
105 bool aCanBubble, |
|
106 bool aCancelable, |
|
107 nsIDOMWindow* aView, |
|
108 int32_t aDetail, |
|
109 bool aCtrlKey, |
|
110 bool aAltKey, |
|
111 bool aShiftKey, |
|
112 bool aMetaKey, |
|
113 nsIDOMEvent* aSourceEvent) |
|
114 { |
|
115 nsresult rv = UIEvent::InitUIEvent(aType, aCanBubble, aCancelable, |
|
116 aView, aDetail); |
|
117 NS_ENSURE_SUCCESS(rv, rv); |
|
118 |
|
119 mEvent->AsInputEvent()->InitBasicModifiers(aCtrlKey, aAltKey, |
|
120 aShiftKey, aMetaKey); |
|
121 mSourceEvent = aSourceEvent; |
|
122 |
|
123 return NS_OK; |
|
124 } |
|
125 |
|
126 } // namespace dom |
|
127 } // namespace mozilla |
|
128 |
|
129 using namespace mozilla; |
|
130 using namespace mozilla::dom; |
|
131 |
|
132 nsresult |
|
133 NS_NewDOMXULCommandEvent(nsIDOMEvent** aInstancePtrResult, |
|
134 EventTarget* aOwner, |
|
135 nsPresContext* aPresContext, |
|
136 WidgetInputEvent* aEvent) |
|
137 { |
|
138 XULCommandEvent* it = new XULCommandEvent(aOwner, aPresContext, aEvent); |
|
139 NS_ADDREF(it); |
|
140 *aInstancePtrResult = static_cast<Event*>(it); |
|
141 return NS_OK; |
|
142 } |