1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/events/XULCommandEvent.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,142 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim:set ts=2 sw=2 sts=2 et cindent: */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#include "mozilla/dom/XULCommandEvent.h" 1.11 +#include "prtime.h" 1.12 + 1.13 +namespace mozilla { 1.14 +namespace dom { 1.15 + 1.16 +XULCommandEvent::XULCommandEvent(EventTarget* aOwner, 1.17 + nsPresContext* aPresContext, 1.18 + WidgetInputEvent* aEvent) 1.19 + : UIEvent(aOwner, aPresContext, 1.20 + aEvent ? aEvent : new WidgetInputEvent(false, 0, nullptr)) 1.21 +{ 1.22 + if (aEvent) { 1.23 + mEventIsInternal = false; 1.24 + } 1.25 + else { 1.26 + mEventIsInternal = true; 1.27 + mEvent->time = PR_Now(); 1.28 + } 1.29 +} 1.30 + 1.31 +NS_IMPL_ADDREF_INHERITED(XULCommandEvent, UIEvent) 1.32 +NS_IMPL_RELEASE_INHERITED(XULCommandEvent, UIEvent) 1.33 + 1.34 +NS_IMPL_CYCLE_COLLECTION_INHERITED(XULCommandEvent, UIEvent, 1.35 + mSourceEvent) 1.36 + 1.37 +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(XULCommandEvent) 1.38 + NS_INTERFACE_MAP_ENTRY(nsIDOMXULCommandEvent) 1.39 +NS_INTERFACE_MAP_END_INHERITING(UIEvent) 1.40 + 1.41 +bool 1.42 +XULCommandEvent::AltKey() 1.43 +{ 1.44 + return mEvent->AsInputEvent()->IsAlt(); 1.45 +} 1.46 + 1.47 +NS_IMETHODIMP 1.48 +XULCommandEvent::GetAltKey(bool* aIsDown) 1.49 +{ 1.50 + NS_ENSURE_ARG_POINTER(aIsDown); 1.51 + *aIsDown = AltKey(); 1.52 + return NS_OK; 1.53 +} 1.54 + 1.55 +bool 1.56 +XULCommandEvent::CtrlKey() 1.57 +{ 1.58 + return mEvent->AsInputEvent()->IsControl(); 1.59 +} 1.60 + 1.61 +NS_IMETHODIMP 1.62 +XULCommandEvent::GetCtrlKey(bool* aIsDown) 1.63 +{ 1.64 + NS_ENSURE_ARG_POINTER(aIsDown); 1.65 + *aIsDown = CtrlKey(); 1.66 + return NS_OK; 1.67 +} 1.68 + 1.69 +bool 1.70 +XULCommandEvent::ShiftKey() 1.71 +{ 1.72 + return mEvent->AsInputEvent()->IsShift(); 1.73 +} 1.74 + 1.75 +NS_IMETHODIMP 1.76 +XULCommandEvent::GetShiftKey(bool* aIsDown) 1.77 +{ 1.78 + NS_ENSURE_ARG_POINTER(aIsDown); 1.79 + *aIsDown = ShiftKey(); 1.80 + return NS_OK; 1.81 +} 1.82 + 1.83 +bool 1.84 +XULCommandEvent::MetaKey() 1.85 +{ 1.86 + return mEvent->AsInputEvent()->IsMeta(); 1.87 +} 1.88 + 1.89 +NS_IMETHODIMP 1.90 +XULCommandEvent::GetMetaKey(bool* aIsDown) 1.91 +{ 1.92 + NS_ENSURE_ARG_POINTER(aIsDown); 1.93 + *aIsDown = MetaKey(); 1.94 + return NS_OK; 1.95 +} 1.96 + 1.97 +NS_IMETHODIMP 1.98 +XULCommandEvent::GetSourceEvent(nsIDOMEvent** aSourceEvent) 1.99 +{ 1.100 + NS_ENSURE_ARG_POINTER(aSourceEvent); 1.101 + nsCOMPtr<nsIDOMEvent> event = GetSourceEvent(); 1.102 + event.forget(aSourceEvent); 1.103 + return NS_OK; 1.104 +} 1.105 + 1.106 +NS_IMETHODIMP 1.107 +XULCommandEvent::InitCommandEvent(const nsAString& aType, 1.108 + bool aCanBubble, 1.109 + bool aCancelable, 1.110 + nsIDOMWindow* aView, 1.111 + int32_t aDetail, 1.112 + bool aCtrlKey, 1.113 + bool aAltKey, 1.114 + bool aShiftKey, 1.115 + bool aMetaKey, 1.116 + nsIDOMEvent* aSourceEvent) 1.117 +{ 1.118 + nsresult rv = UIEvent::InitUIEvent(aType, aCanBubble, aCancelable, 1.119 + aView, aDetail); 1.120 + NS_ENSURE_SUCCESS(rv, rv); 1.121 + 1.122 + mEvent->AsInputEvent()->InitBasicModifiers(aCtrlKey, aAltKey, 1.123 + aShiftKey, aMetaKey); 1.124 + mSourceEvent = aSourceEvent; 1.125 + 1.126 + return NS_OK; 1.127 +} 1.128 + 1.129 +} // namespace dom 1.130 +} // namespace mozilla 1.131 + 1.132 +using namespace mozilla; 1.133 +using namespace mozilla::dom; 1.134 + 1.135 +nsresult 1.136 +NS_NewDOMXULCommandEvent(nsIDOMEvent** aInstancePtrResult, 1.137 + EventTarget* aOwner, 1.138 + nsPresContext* aPresContext, 1.139 + WidgetInputEvent* aEvent) 1.140 +{ 1.141 + XULCommandEvent* it = new XULCommandEvent(aOwner, aPresContext, aEvent); 1.142 + NS_ADDREF(it); 1.143 + *aInstancePtrResult = static_cast<Event*>(it); 1.144 + return NS_OK; 1.145 +}