/* -*- Mode: C++; 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/. */ #ifndef nsGUIEvent_h__ #define nsGUIEvent_h__ #include "mozilla/MathAlgorithms.h" #include "nsCOMArray.h" #include "nsPoint.h" #include "nsRect.h" #include "nsRegion.h" #include "nsEvent.h" #include "nsStringGlue.h" #include "nsCOMPtr.h" #include "nsIAtom.h" #include "nsIDOMKeyEvent.h" #include "nsIDOMMouseEvent.h" #include "nsIDOMWheelEvent.h" #include "nsIDOMDataTransfer.h" #include "nsIDOMEventTarget.h" #include "nsIDOMTouchEvent.h" #include "nsWeakPtr.h" #include "nsIWidget.h" #include "nsTArray.h" #include "nsTraceRefcnt.h" #include "nsITransferable.h" #include "nsIVariant.h" #include "nsStyleConsts.h" #include "nsAutoPtr.h" namespace mozilla { namespace dom { class PBrowserParent; class PBrowserChild; } namespace plugins { class PPluginInstanceChild; } } class nsRenderingContext; class nsIMenuItem; class nsIContent; class nsIURI; class nsHashKey; /** * Event Struct Types */ enum nsEventStructType { // Generic events NS_EVENT, // nsEvent NS_GUI_EVENT, // nsGUIEvent NS_INPUT_EVENT, // nsInputEvent // Mouse related events NS_MOUSE_EVENT, // nsMouseEvent NS_MOUSE_SCROLL_EVENT, // nsMouseScrollEvent NS_DRAG_EVENT, // nsDragEvent NS_WHEEL_EVENT, // widget::WheelEvent // Touchpad related events NS_GESTURENOTIFY_EVENT, // nsGestureNotifyEvent NS_SIMPLE_GESTURE_EVENT, // nsSimpleGestureEvent NS_TOUCH_EVENT, // nsTouchEvent // Key or IME events NS_KEY_EVENT, // nsKeyEvent NS_COMPOSITION_EVENT, // nsCompositionEvent NS_TEXT_EVENT, // nsTextEvent // IME related events NS_QUERY_CONTENT_EVENT, // nsQueryContentEvent NS_SELECTION_EVENT, // nsSelectionEvent // Scroll related events NS_SCROLLBAR_EVENT, // nsScrollbarEvent NS_SCROLLPORT_EVENT, // nsScrollPortEvent NS_SCROLLAREA_EVENT, // nsScrollAreaEvent // DOM events NS_UI_EVENT, // nsUIEvent NS_SCRIPT_ERROR_EVENT, // nsScriptErrorEvent NS_MUTATION_EVENT, // nsMutationEvent NS_FORM_EVENT, // nsFormEvent NS_FOCUS_EVENT, // nsFocusEvent NS_CLIPBOARD_EVENT, // nsClipboardEvent // SVG events NS_SVGZOOM_EVENT, // nsGUIEvent NS_SMIL_TIME_EVENT, // nsUIEvent // CSS events NS_TRANSITION_EVENT, // nsTransitionEvent NS_ANIMATION_EVENT, // nsAnimationEvent // Command events NS_COMMAND_EVENT, // nsCommandEvent NS_CONTENT_COMMAND_EVENT, // nsContentCommandEvent // Plugin event NS_PLUGIN_EVENT // nsPluginEvent }; #define NS_EVENT_TYPE_NULL 0 #define NS_EVENT_TYPE_ALL 1 // Not a real event type /** * GUI MESSAGES */ //@{ #define NS_EVENT_NULL 0 #define NS_WINDOW_START 100 // Widget may be destroyed #define NS_XUL_CLOSE (NS_WINDOW_START + 1) // Key is pressed within a window #define NS_KEY_PRESS (NS_WINDOW_START + 31) // Key is released within a window #define NS_KEY_UP (NS_WINDOW_START + 32) // Key is pressed within a window #define NS_KEY_DOWN (NS_WINDOW_START + 33) #define NS_RESIZE_EVENT (NS_WINDOW_START + 60) #define NS_SCROLL_EVENT (NS_WINDOW_START + 61) // A plugin was clicked or otherwise focused. NS_PLUGIN_ACTIVATE should be // used when the window is not active. NS_PLUGIN_FOCUS should be used when // the window is active. In the latter case, the dispatcher of the event // is expected to ensure that the plugin's widget is focused beforehand. #define NS_PLUGIN_ACTIVATE (NS_WINDOW_START + 62) #define NS_PLUGIN_FOCUS (NS_WINDOW_START + 63) #define NS_OFFLINE (NS_WINDOW_START + 64) #define NS_ONLINE (NS_WINDOW_START + 65) // Indicates a resize will occur #define NS_BEFORERESIZE_EVENT (NS_WINDOW_START + 66) // Indicates that the user is either idle or active #define NS_MOZ_USER_IDLE (NS_WINDOW_START + 67) #define NS_MOZ_USER_ACTIVE (NS_WINDOW_START + 68) // The resolution at which a plugin should draw has changed, for // example as the result of changing from a HiDPI mode to a non- // HiDPI mode. #define NS_PLUGIN_RESOLUTION_CHANGED (NS_WINDOW_START + 69) #define NS_MOUSE_MESSAGE_START 300 #define NS_MOUSE_MOVE (NS_MOUSE_MESSAGE_START) #define NS_MOUSE_BUTTON_UP (NS_MOUSE_MESSAGE_START + 1) #define NS_MOUSE_BUTTON_DOWN (NS_MOUSE_MESSAGE_START + 2) #define NS_MOUSE_ENTER (NS_MOUSE_MESSAGE_START + 22) #define NS_MOUSE_EXIT (NS_MOUSE_MESSAGE_START + 23) #define NS_MOUSE_DOUBLECLICK (NS_MOUSE_MESSAGE_START + 24) #define NS_MOUSE_CLICK (NS_MOUSE_MESSAGE_START + 27) #define NS_MOUSE_ACTIVATE (NS_MOUSE_MESSAGE_START + 30) #define NS_MOUSE_ENTER_SYNTH (NS_MOUSE_MESSAGE_START + 31) #define NS_MOUSE_EXIT_SYNTH (NS_MOUSE_MESSAGE_START + 32) #define NS_MOUSE_MOZHITTEST (NS_MOUSE_MESSAGE_START + 33) #define NS_MOUSEENTER (NS_MOUSE_MESSAGE_START + 34) #define NS_MOUSELEAVE (NS_MOUSE_MESSAGE_START + 35) #define NS_CONTEXTMENU_MESSAGE_START 500 #define NS_CONTEXTMENU (NS_CONTEXTMENU_MESSAGE_START) #define NS_STREAM_EVENT_START 1100 #define NS_LOAD (NS_STREAM_EVENT_START) #define NS_PAGE_UNLOAD (NS_STREAM_EVENT_START + 1) #define NS_HASHCHANGE (NS_STREAM_EVENT_START + 2) #define NS_IMAGE_ABORT (NS_STREAM_EVENT_START + 3) #define NS_LOAD_ERROR (NS_STREAM_EVENT_START + 4) #define NS_POPSTATE (NS_STREAM_EVENT_START + 5) #define NS_BEFORE_PAGE_UNLOAD (NS_STREAM_EVENT_START + 6) #define NS_PAGE_RESTORE (NS_STREAM_EVENT_START + 7) #define NS_READYSTATECHANGE (NS_STREAM_EVENT_START + 8) #define NS_FORM_EVENT_START 1200 #define NS_FORM_SUBMIT (NS_FORM_EVENT_START) #define NS_FORM_RESET (NS_FORM_EVENT_START + 1) #define NS_FORM_CHANGE (NS_FORM_EVENT_START + 2) #define NS_FORM_SELECTED (NS_FORM_EVENT_START + 3) #define NS_FORM_INPUT (NS_FORM_EVENT_START + 4) #define NS_FORM_INVALID (NS_FORM_EVENT_START + 5) //Need separate focus/blur notifications for non-native widgets #define NS_FOCUS_EVENT_START 1300 #define NS_FOCUS_CONTENT (NS_FOCUS_EVENT_START) #define NS_BLUR_CONTENT (NS_FOCUS_EVENT_START + 1) #define NS_DRAGDROP_EVENT_START 1400 #define NS_DRAGDROP_ENTER (NS_DRAGDROP_EVENT_START) #define NS_DRAGDROP_OVER (NS_DRAGDROP_EVENT_START + 1) #define NS_DRAGDROP_EXIT (NS_DRAGDROP_EVENT_START + 2) #define NS_DRAGDROP_DRAGDROP (NS_DRAGDROP_EVENT_START + 3) #define NS_DRAGDROP_GESTURE (NS_DRAGDROP_EVENT_START + 4) #define NS_DRAGDROP_DRAG (NS_DRAGDROP_EVENT_START + 5) #define NS_DRAGDROP_END (NS_DRAGDROP_EVENT_START + 6) #define NS_DRAGDROP_START (NS_DRAGDROP_EVENT_START + 7) #define NS_DRAGDROP_DROP (NS_DRAGDROP_EVENT_START + 8) #define NS_DRAGDROP_OVER_SYNTH (NS_DRAGDROP_EVENT_START + 1) #define NS_DRAGDROP_EXIT_SYNTH (NS_DRAGDROP_EVENT_START + 2) #define NS_DRAGDROP_LEAVE_SYNTH (NS_DRAGDROP_EVENT_START + 9) // Events for popups #define NS_XUL_EVENT_START 1500 #define NS_XUL_POPUP_SHOWING (NS_XUL_EVENT_START) #define NS_XUL_POPUP_SHOWN (NS_XUL_EVENT_START+1) #define NS_XUL_POPUP_HIDING (NS_XUL_EVENT_START+2) #define NS_XUL_POPUP_HIDDEN (NS_XUL_EVENT_START+3) // NS_XUL_COMMAND used to be here (NS_XUL_EVENT_START+4) #define NS_XUL_BROADCAST (NS_XUL_EVENT_START+5) #define NS_XUL_COMMAND_UPDATE (NS_XUL_EVENT_START+6) //@} // Scroll events #define NS_MOUSE_SCROLL_START 1600 #define NS_MOUSE_SCROLL (NS_MOUSE_SCROLL_START) #define NS_MOUSE_PIXEL_SCROLL (NS_MOUSE_SCROLL_START + 1) #define NS_SCROLLPORT_START 1700 #define NS_SCROLLPORT_UNDERFLOW (NS_SCROLLPORT_START) #define NS_SCROLLPORT_OVERFLOW (NS_SCROLLPORT_START+1) // Mutation events defined elsewhere starting at 1800 #define NS_USER_DEFINED_EVENT 2000 // composition events #define NS_COMPOSITION_EVENT_START 2200 #define NS_COMPOSITION_START (NS_COMPOSITION_EVENT_START) #define NS_COMPOSITION_END (NS_COMPOSITION_EVENT_START + 1) #define NS_COMPOSITION_UPDATE (NS_COMPOSITION_EVENT_START + 2) // text events #define NS_TEXT_START 2400 #define NS_TEXT_TEXT (NS_TEXT_START) // UI events #define NS_UI_EVENT_START 2500 // this is not to be confused with NS_ACTIVATE! #define NS_UI_ACTIVATE (NS_UI_EVENT_START) #define NS_UI_FOCUSIN (NS_UI_EVENT_START + 1) #define NS_UI_FOCUSOUT (NS_UI_EVENT_START + 2) // pagetransition events #define NS_PAGETRANSITION_START 2700 #define NS_PAGE_SHOW (NS_PAGETRANSITION_START + 1) #define NS_PAGE_HIDE (NS_PAGETRANSITION_START + 2) // SVG events #define NS_SVG_EVENT_START 2800 #define NS_SVG_LOAD (NS_SVG_EVENT_START) #define NS_SVG_UNLOAD (NS_SVG_EVENT_START + 1) #define NS_SVG_ABORT (NS_SVG_EVENT_START + 2) #define NS_SVG_ERROR (NS_SVG_EVENT_START + 3) #define NS_SVG_RESIZE (NS_SVG_EVENT_START + 4) #define NS_SVG_SCROLL (NS_SVG_EVENT_START + 5) // SVG Zoom events #define NS_SVGZOOM_EVENT_START 2900 #define NS_SVG_ZOOM (NS_SVGZOOM_EVENT_START) // XUL command events #define NS_XULCOMMAND_EVENT_START 3000 #define NS_XUL_COMMAND (NS_XULCOMMAND_EVENT_START) // Cut, copy, paste events #define NS_CUTCOPYPASTE_EVENT_START 3100 #define NS_COPY (NS_CUTCOPYPASTE_EVENT_START) #define NS_CUT (NS_CUTCOPYPASTE_EVENT_START + 1) #define NS_PASTE (NS_CUTCOPYPASTE_EVENT_START + 2) // Query the content information #define NS_QUERY_CONTENT_EVENT_START 3200 // Query for the selected text information, it return the selection offset, // selection length and selected text. #define NS_QUERY_SELECTED_TEXT (NS_QUERY_CONTENT_EVENT_START) // Query for the text content of specified range, it returns actual lengh (if // the specified range is too long) and the text of the specified range. // Returns the entire text if requested length > actual length. #define NS_QUERY_TEXT_CONTENT (NS_QUERY_CONTENT_EVENT_START + 1) // Query for the caret rect of nth insertion point. The offset of the result is // relative position from the top level widget. #define NS_QUERY_CARET_RECT (NS_QUERY_CONTENT_EVENT_START + 3) // Query for the bounding rect of a range of characters. This works on any // valid character range given offset and length. Result is relative to top // level widget coordinates #define NS_QUERY_TEXT_RECT (NS_QUERY_CONTENT_EVENT_START + 4) // Query for the bounding rect of the current focused frame. Result is relative // to top level widget coordinates #define NS_QUERY_EDITOR_RECT (NS_QUERY_CONTENT_EVENT_START + 5) // Query for the current state of the content. The particular members of // mReply that are set for each query content event will be valid on success. #define NS_QUERY_CONTENT_STATE (NS_QUERY_CONTENT_EVENT_START + 6) // Query for the selection in the form of a nsITransferable. #define NS_QUERY_SELECTION_AS_TRANSFERABLE (NS_QUERY_CONTENT_EVENT_START + 7) // Query for character at a point. This returns the character offset and its // rect. The point is specified by nsEvent::refPoint. #define NS_QUERY_CHARACTER_AT_POINT (NS_QUERY_CONTENT_EVENT_START + 8) // Query if the DOM element under nsEvent::refPoint belongs to our widget // or not. #define NS_QUERY_DOM_WIDGET_HITTEST (NS_QUERY_CONTENT_EVENT_START + 9) // Video events #define NS_MEDIA_EVENT_START 3300 #define NS_LOADSTART (NS_MEDIA_EVENT_START) #define NS_PROGRESS (NS_MEDIA_EVENT_START+1) #define NS_SUSPEND (NS_MEDIA_EVENT_START+2) #define NS_EMPTIED (NS_MEDIA_EVENT_START+3) #define NS_STALLED (NS_MEDIA_EVENT_START+4) #define NS_PLAY (NS_MEDIA_EVENT_START+5) #define NS_PAUSE (NS_MEDIA_EVENT_START+6) #define NS_LOADEDMETADATA (NS_MEDIA_EVENT_START+7) #define NS_LOADEDDATA (NS_MEDIA_EVENT_START+8) #define NS_WAITING (NS_MEDIA_EVENT_START+9) #define NS_PLAYING (NS_MEDIA_EVENT_START+10) #define NS_CANPLAY (NS_MEDIA_EVENT_START+11) #define NS_CANPLAYTHROUGH (NS_MEDIA_EVENT_START+12) #define NS_SEEKING (NS_MEDIA_EVENT_START+13) #define NS_SEEKED (NS_MEDIA_EVENT_START+14) #define NS_TIMEUPDATE (NS_MEDIA_EVENT_START+15) #define NS_ENDED (NS_MEDIA_EVENT_START+16) #define NS_RATECHANGE (NS_MEDIA_EVENT_START+17) #define NS_DURATIONCHANGE (NS_MEDIA_EVENT_START+18) #define NS_VOLUMECHANGE (NS_MEDIA_EVENT_START+19) #define NS_MOZAUDIOAVAILABLE (NS_MEDIA_EVENT_START+20) // paint notification events #define NS_NOTIFYPAINT_START 3400 #define NS_AFTERPAINT (NS_NOTIFYPAINT_START) // Simple gesture events #define NS_SIMPLE_GESTURE_EVENT_START 3500 #define NS_SIMPLE_GESTURE_SWIPE (NS_SIMPLE_GESTURE_EVENT_START) #define NS_SIMPLE_GESTURE_MAGNIFY_START (NS_SIMPLE_GESTURE_EVENT_START+1) #define NS_SIMPLE_GESTURE_MAGNIFY_UPDATE (NS_SIMPLE_GESTURE_EVENT_START+2) #define NS_SIMPLE_GESTURE_MAGNIFY (NS_SIMPLE_GESTURE_EVENT_START+3) #define NS_SIMPLE_GESTURE_ROTATE_START (NS_SIMPLE_GESTURE_EVENT_START+4) #define NS_SIMPLE_GESTURE_ROTATE_UPDATE (NS_SIMPLE_GESTURE_EVENT_START+5) #define NS_SIMPLE_GESTURE_ROTATE (NS_SIMPLE_GESTURE_EVENT_START+6) #define NS_SIMPLE_GESTURE_TAP (NS_SIMPLE_GESTURE_EVENT_START+7) #define NS_SIMPLE_GESTURE_PRESSTAP (NS_SIMPLE_GESTURE_EVENT_START+8) #define NS_SIMPLE_GESTURE_EDGEUI (NS_SIMPLE_GESTURE_EVENT_START+9) // These are used to send native events to plugins. #define NS_PLUGIN_EVENT_START 3600 #define NS_PLUGIN_INPUT_EVENT (NS_PLUGIN_EVENT_START) #define NS_PLUGIN_FOCUS_EVENT (NS_PLUGIN_EVENT_START+1) // Events to manipulate selection (nsSelectionEvent) #define NS_SELECTION_EVENT_START 3700 // Clear any previous selection and set the given range as the selection #define NS_SELECTION_SET (NS_SELECTION_EVENT_START) // Events of commands for the contents #define NS_CONTENT_COMMAND_EVENT_START 3800 #define NS_CONTENT_COMMAND_CUT (NS_CONTENT_COMMAND_EVENT_START) #define NS_CONTENT_COMMAND_COPY (NS_CONTENT_COMMAND_EVENT_START+1) #define NS_CONTENT_COMMAND_PASTE (NS_CONTENT_COMMAND_EVENT_START+2) #define NS_CONTENT_COMMAND_DELETE (NS_CONTENT_COMMAND_EVENT_START+3) #define NS_CONTENT_COMMAND_UNDO (NS_CONTENT_COMMAND_EVENT_START+4) #define NS_CONTENT_COMMAND_REDO (NS_CONTENT_COMMAND_EVENT_START+5) #define NS_CONTENT_COMMAND_PASTE_TRANSFERABLE (NS_CONTENT_COMMAND_EVENT_START+6) // NS_CONTENT_COMMAND_SCROLL scrolls the nearest scrollable element to the // currently focused content or latest DOM selection. This would normally be // the same element scrolled by keyboard scroll commands, except that this event // will scroll an element scrollable in either direction. I.e., if the nearest // scrollable ancestor element can only be scrolled vertically, and horizontal // scrolling is requested using this event, no scrolling will occur. #define NS_CONTENT_COMMAND_SCROLL (NS_CONTENT_COMMAND_EVENT_START+7) // Event to gesture notification #define NS_GESTURENOTIFY_EVENT_START 3900 #define NS_ORIENTATION_EVENT 4000 #define NS_SCROLLAREA_EVENT_START 4100 #define NS_SCROLLEDAREACHANGED (NS_SCROLLAREA_EVENT_START) #define NS_TRANSITION_EVENT_START 4200 #define NS_TRANSITION_END (NS_TRANSITION_EVENT_START) #define NS_ANIMATION_EVENT_START 4250 #define NS_ANIMATION_START (NS_ANIMATION_EVENT_START) #define NS_ANIMATION_END (NS_ANIMATION_EVENT_START + 1) #define NS_ANIMATION_ITERATION (NS_ANIMATION_EVENT_START + 2) #define NS_SMIL_TIME_EVENT_START 4300 #define NS_SMIL_BEGIN (NS_SMIL_TIME_EVENT_START) #define NS_SMIL_END (NS_SMIL_TIME_EVENT_START + 1) #define NS_SMIL_REPEAT (NS_SMIL_TIME_EVENT_START + 2) // script notification events #define NS_NOTIFYSCRIPT_START 4500 #define NS_BEFORE_SCRIPT_EXECUTE (NS_NOTIFYSCRIPT_START) #define NS_AFTER_SCRIPT_EXECUTE (NS_NOTIFYSCRIPT_START+1) #define NS_PRINT_EVENT_START 4600 #define NS_BEFOREPRINT (NS_PRINT_EVENT_START) #define NS_AFTERPRINT (NS_PRINT_EVENT_START + 1) #define NS_MESSAGE_EVENT_START 4700 #define NS_MESSAGE (NS_MESSAGE_EVENT_START) // Open and close events #define NS_OPENCLOSE_EVENT_START 4800 #define NS_OPEN (NS_OPENCLOSE_EVENT_START) #define NS_CLOSE (NS_OPENCLOSE_EVENT_START+1) // Device motion and orientation #define NS_DEVICE_ORIENTATION_START 4900 #define NS_DEVICE_ORIENTATION (NS_DEVICE_ORIENTATION_START) #define NS_DEVICE_MOTION (NS_DEVICE_ORIENTATION_START+1) #define NS_DEVICE_PROXIMITY (NS_DEVICE_ORIENTATION_START+2) #define NS_USER_PROXIMITY (NS_DEVICE_ORIENTATION_START+3) #define NS_DEVICE_LIGHT (NS_DEVICE_ORIENTATION_START+4) #define NS_SHOW_EVENT 5000 // Fullscreen DOM API #define NS_FULL_SCREEN_START 5100 #define NS_FULLSCREENCHANGE (NS_FULL_SCREEN_START) #define NS_FULLSCREENERROR (NS_FULL_SCREEN_START + 1) #define NS_TOUCH_EVENT_START 5200 #define NS_TOUCH_START (NS_TOUCH_EVENT_START) #define NS_TOUCH_MOVE (NS_TOUCH_EVENT_START+1) #define NS_TOUCH_END (NS_TOUCH_EVENT_START+2) #define NS_TOUCH_ENTER (NS_TOUCH_EVENT_START+3) #define NS_TOUCH_LEAVE (NS_TOUCH_EVENT_START+4) #define NS_TOUCH_CANCEL (NS_TOUCH_EVENT_START+5) // Pointerlock DOM API #define NS_POINTERLOCK_START 5300 #define NS_POINTERLOCKCHANGE (NS_POINTERLOCK_START) #define NS_POINTERLOCKERROR (NS_POINTERLOCK_START + 1) #define NS_WHEEL_EVENT_START 5400 #define NS_WHEEL_WHEEL (NS_WHEEL_EVENT_START) //System time is changed #define NS_MOZ_TIME_CHANGE_EVENT 5500 // Network packet events. #define NS_NETWORK_EVENT_START 5600 #define NS_NETWORK_UPLOAD_EVENT (NS_NETWORK_EVENT_START + 1) #define NS_NETWORK_DOWNLOAD_EVENT (NS_NETWORK_EVENT_START + 2) /** * Return status for event processors, nsEventStatus, is defined in * nsEvent.h. */ /** * different types of (top-level) window z-level positioning */ enum nsWindowZ { nsWindowZTop = 0, // on top nsWindowZBottom, // on bottom nsWindowZRelative // just below some specified widget }; namespace mozilla { namespace widget { // BaseEventFlags must be a POD struct for safe to use memcpy (including // in ParamTraits). So don't make virtual methods, constructor, // destructor and operators. // This is necessary for VC which is NOT C++0x compiler. struct BaseEventFlags { public: // If mIsTrusted is true, the event is a trusted event. Otherwise, it's // an untrusted event. bool mIsTrusted : 1; // If mInBubblingPhase is true, the event is in bubbling phase or target // phase. bool mInBubblingPhase : 1; // If mInCapturePhase is true, the event is in capture phase or target phase. bool mInCapturePhase : 1; // If mInSystemGroup is true, the event is being dispatched in system group. bool mInSystemGroup: 1; // If mCancelable is true, the event can be consumed. I.e., calling // nsDOMEvent::PreventDefault() can prevent the default action. bool mCancelable : 1; // If mBubbles is true, the event can bubble. Otherwise, cannot be handled // in bubbling phase. bool mBubbles : 1; // If mPropagationStopped is true, nsDOMEvent::StopPropagation() or // nsDOMEvent::StopImmediatePropagation() has been called. bool mPropagationStopped : 1; // If mImmediatePropagationStopped is true, // nsDOMEvent::StopImmediatePropagation() has been called. // Note that mPropagationStopped must be true when this is true. bool mImmediatePropagationStopped : 1; // If mDefaultPrevented is true, the event has been consumed. // E.g., nsDOMEvent::PreventDefault() has been called or // the default action has been performed. bool mDefaultPrevented : 1; // If mDefaultPreventedByContent is true, the event has been // consumed by content. // Note that mDefaultPrevented must be true when this is true. bool mDefaultPreventedByContent : 1; // mMultipleActionsPrevented may be used when default handling don't want to // be prevented, but only one of the event targets should handle the event. // For example, when a