michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_BasicEvents_h__ michael@0: #define mozilla_BasicEvents_h__ michael@0: michael@0: #include michael@0: michael@0: #include "mozilla/dom/EventTarget.h" michael@0: #include "nsCOMPtr.h" michael@0: #include "nsIAtom.h" michael@0: #include "nsISupportsImpl.h" michael@0: #include "nsIWidget.h" michael@0: #include "nsString.h" michael@0: #include "Units.h" michael@0: michael@0: /****************************************************************************** michael@0: * Event Struct Types michael@0: * michael@0: * TODO: Move it into mozilla namespace. michael@0: ******************************************************************************/ michael@0: enum nsEventStructType michael@0: { michael@0: // BasicEvents.h michael@0: NS_EVENT, // WidgetEvent michael@0: NS_GUI_EVENT, // WidgetGUIEvent michael@0: NS_INPUT_EVENT, // WidgetInputEvent michael@0: NS_UI_EVENT, // InternalUIEvent michael@0: michael@0: // TextEvents.h michael@0: NS_KEY_EVENT, // WidgetKeyboardEvent michael@0: NS_COMPOSITION_EVENT, // WidgetCompositionEvent michael@0: NS_TEXT_EVENT, // WidgetTextEvent michael@0: NS_QUERY_CONTENT_EVENT, // WidgetQueryContentEvent michael@0: NS_SELECTION_EVENT, // WidgetSelectionEvent michael@0: NS_EDITOR_INPUT_EVENT, // InternalEditorInputEvent michael@0: michael@0: // MouseEvents.h michael@0: NS_MOUSE_EVENT, // WidgetMouseEvent michael@0: NS_DRAG_EVENT, // WidgetDragEvent michael@0: NS_MOUSE_SCROLL_EVENT, // WidgetMouseScrollEvent michael@0: NS_WHEEL_EVENT, // WidgetWheelEvent michael@0: NS_POINTER_EVENT, // PointerEvent michael@0: michael@0: // TouchEvents.h michael@0: NS_GESTURENOTIFY_EVENT, // WidgetGestureNotifyEvent michael@0: NS_SIMPLE_GESTURE_EVENT, // WidgetSimpleGestureEvent michael@0: NS_TOUCH_EVENT, // WidgetTouchEvent michael@0: michael@0: // ContentEvents.h michael@0: NS_SCROLLPORT_EVENT, // InternalScrollPortEvent michael@0: NS_SCROLLAREA_EVENT, // InternalScrollAreaEvent michael@0: NS_FORM_EVENT, // InternalFormEvent michael@0: NS_FOCUS_EVENT, // InternalFocusEvent michael@0: NS_CLIPBOARD_EVENT, // InternalClipboardEvent michael@0: NS_TRANSITION_EVENT, // InternalTransitionEvent michael@0: NS_ANIMATION_EVENT, // InternalAnimationEvent michael@0: michael@0: // MiscEvents.h michael@0: NS_COMMAND_EVENT, // WidgetCommandEvent michael@0: NS_CONTENT_COMMAND_EVENT, // WidgetContentCommandEvent michael@0: NS_PLUGIN_EVENT, // WidgetPluginEvent michael@0: michael@0: // InternalMutationEvent.h (dom/events) michael@0: NS_MUTATION_EVENT, // InternalMutationEvent michael@0: michael@0: // Follwoing struct type values are ugly. They indicate other struct type michael@0: // actually. However, they are used for distinguishing which DOM event michael@0: // should be created for the event. michael@0: NS_SVGZOOM_EVENT, // WidgetGUIEvent michael@0: NS_SMIL_TIME_EVENT // InternalUIEvent michael@0: }; michael@0: michael@0: /****************************************************************************** michael@0: * Messages michael@0: * michael@0: * TODO: Make them enum. michael@0: ******************************************************************************/ michael@0: michael@0: #define NS_EVENT_NULL 0 michael@0: michael@0: // This is a dummy event message for all event listener implementation in michael@0: // EventListenerManager. michael@0: #define NS_EVENT_ALL 1 michael@0: michael@0: #define NS_WINDOW_START 100 michael@0: michael@0: // Widget may be destroyed michael@0: #define NS_XUL_CLOSE (NS_WINDOW_START + 1) michael@0: // Key is pressed within a window michael@0: #define NS_KEY_PRESS (NS_WINDOW_START + 31) michael@0: // Key is released within a window michael@0: #define NS_KEY_UP (NS_WINDOW_START + 32) michael@0: // Key is pressed within a window michael@0: #define NS_KEY_DOWN (NS_WINDOW_START + 33) michael@0: michael@0: #define NS_RESIZE_EVENT (NS_WINDOW_START + 60) michael@0: #define NS_SCROLL_EVENT (NS_WINDOW_START + 61) michael@0: michael@0: // A plugin was clicked or otherwise focused. NS_PLUGIN_ACTIVATE should be michael@0: // used when the window is not active. NS_PLUGIN_FOCUS should be used when michael@0: // the window is active. In the latter case, the dispatcher of the event michael@0: // is expected to ensure that the plugin's widget is focused beforehand. michael@0: #define NS_PLUGIN_ACTIVATE (NS_WINDOW_START + 62) michael@0: #define NS_PLUGIN_FOCUS (NS_WINDOW_START + 63) michael@0: michael@0: #define NS_OFFLINE (NS_WINDOW_START + 64) michael@0: #define NS_ONLINE (NS_WINDOW_START + 65) michael@0: michael@0: // NS_BEFORERESIZE_EVENT used to be here (NS_WINDOW_START + 66) michael@0: michael@0: // Indicates that the user is either idle or active michael@0: #define NS_MOZ_USER_IDLE (NS_WINDOW_START + 67) michael@0: #define NS_MOZ_USER_ACTIVE (NS_WINDOW_START + 68) michael@0: michael@0: // The resolution at which a plugin should draw has changed, for michael@0: // example as the result of changing from a HiDPI mode to a non- michael@0: // HiDPI mode. michael@0: #define NS_PLUGIN_RESOLUTION_CHANGED (NS_WINDOW_START + 69) michael@0: michael@0: #define NS_MOUSE_MESSAGE_START 300 michael@0: #define NS_MOUSE_MOVE (NS_MOUSE_MESSAGE_START) michael@0: #define NS_MOUSE_BUTTON_UP (NS_MOUSE_MESSAGE_START + 1) michael@0: #define NS_MOUSE_BUTTON_DOWN (NS_MOUSE_MESSAGE_START + 2) michael@0: #define NS_MOUSE_ENTER (NS_MOUSE_MESSAGE_START + 22) michael@0: #define NS_MOUSE_EXIT (NS_MOUSE_MESSAGE_START + 23) michael@0: #define NS_MOUSE_DOUBLECLICK (NS_MOUSE_MESSAGE_START + 24) michael@0: #define NS_MOUSE_CLICK (NS_MOUSE_MESSAGE_START + 27) michael@0: #define NS_MOUSE_ACTIVATE (NS_MOUSE_MESSAGE_START + 30) michael@0: #define NS_MOUSE_ENTER_SYNTH (NS_MOUSE_MESSAGE_START + 31) michael@0: #define NS_MOUSE_EXIT_SYNTH (NS_MOUSE_MESSAGE_START + 32) michael@0: #define NS_MOUSE_MOZHITTEST (NS_MOUSE_MESSAGE_START + 33) michael@0: #define NS_MOUSEENTER (NS_MOUSE_MESSAGE_START + 34) michael@0: #define NS_MOUSELEAVE (NS_MOUSE_MESSAGE_START + 35) michael@0: michael@0: // Pointer spec events michael@0: #define NS_POINTER_EVENT_START 4400 michael@0: #define NS_POINTER_MOVE (NS_POINTER_EVENT_START) michael@0: #define NS_POINTER_UP (NS_POINTER_EVENT_START + 1) michael@0: #define NS_POINTER_DOWN (NS_POINTER_EVENT_START + 2) michael@0: #define NS_POINTER_OVER (NS_POINTER_EVENT_START + 22) michael@0: #define NS_POINTER_OUT (NS_POINTER_EVENT_START + 23) michael@0: #define NS_POINTER_ENTER (NS_POINTER_EVENT_START + 24) michael@0: #define NS_POINTER_LEAVE (NS_POINTER_EVENT_START + 25) michael@0: #define NS_POINTER_CANCEL (NS_POINTER_EVENT_START + 26) michael@0: #define NS_POINTER_GOT_CAPTURE (NS_POINTER_EVENT_START + 27) michael@0: #define NS_POINTER_LOST_CAPTURE (NS_POINTER_EVENT_START + 28) michael@0: michael@0: #define NS_CONTEXTMENU_MESSAGE_START 500 michael@0: #define NS_CONTEXTMENU (NS_CONTEXTMENU_MESSAGE_START) michael@0: michael@0: #define NS_STREAM_EVENT_START 1100 michael@0: #define NS_LOAD (NS_STREAM_EVENT_START) michael@0: #define NS_PAGE_UNLOAD (NS_STREAM_EVENT_START + 1) michael@0: #define NS_HASHCHANGE (NS_STREAM_EVENT_START + 2) michael@0: #define NS_IMAGE_ABORT (NS_STREAM_EVENT_START + 3) michael@0: #define NS_LOAD_ERROR (NS_STREAM_EVENT_START + 4) michael@0: #define NS_POPSTATE (NS_STREAM_EVENT_START + 5) michael@0: #define NS_BEFORE_PAGE_UNLOAD (NS_STREAM_EVENT_START + 6) michael@0: #define NS_PAGE_RESTORE (NS_STREAM_EVENT_START + 7) michael@0: #define NS_READYSTATECHANGE (NS_STREAM_EVENT_START + 8) michael@0: michael@0: #define NS_FORM_EVENT_START 1200 michael@0: #define NS_FORM_SUBMIT (NS_FORM_EVENT_START) michael@0: #define NS_FORM_RESET (NS_FORM_EVENT_START + 1) michael@0: #define NS_FORM_CHANGE (NS_FORM_EVENT_START + 2) michael@0: #define NS_FORM_SELECTED (NS_FORM_EVENT_START + 3) michael@0: #define NS_FORM_INVALID (NS_FORM_EVENT_START + 4) michael@0: michael@0: //Need separate focus/blur notifications for non-native widgets michael@0: #define NS_FOCUS_EVENT_START 1300 michael@0: #define NS_FOCUS_CONTENT (NS_FOCUS_EVENT_START) michael@0: #define NS_BLUR_CONTENT (NS_FOCUS_EVENT_START + 1) michael@0: michael@0: #define NS_DRAGDROP_EVENT_START 1400 michael@0: #define NS_DRAGDROP_ENTER (NS_DRAGDROP_EVENT_START) michael@0: #define NS_DRAGDROP_OVER (NS_DRAGDROP_EVENT_START + 1) michael@0: #define NS_DRAGDROP_EXIT (NS_DRAGDROP_EVENT_START + 2) michael@0: #define NS_DRAGDROP_DRAGDROP (NS_DRAGDROP_EVENT_START + 3) michael@0: #define NS_DRAGDROP_GESTURE (NS_DRAGDROP_EVENT_START + 4) michael@0: #define NS_DRAGDROP_DRAG (NS_DRAGDROP_EVENT_START + 5) michael@0: #define NS_DRAGDROP_END (NS_DRAGDROP_EVENT_START + 6) michael@0: #define NS_DRAGDROP_START (NS_DRAGDROP_EVENT_START + 7) michael@0: #define NS_DRAGDROP_DROP (NS_DRAGDROP_EVENT_START + 8) michael@0: #define NS_DRAGDROP_OVER_SYNTH (NS_DRAGDROP_EVENT_START + 1) michael@0: #define NS_DRAGDROP_EXIT_SYNTH (NS_DRAGDROP_EVENT_START + 2) michael@0: #define NS_DRAGDROP_LEAVE_SYNTH (NS_DRAGDROP_EVENT_START + 9) michael@0: michael@0: // Events for popups michael@0: #define NS_XUL_EVENT_START 1500 michael@0: #define NS_XUL_POPUP_SHOWING (NS_XUL_EVENT_START) michael@0: #define NS_XUL_POPUP_SHOWN (NS_XUL_EVENT_START+1) michael@0: #define NS_XUL_POPUP_HIDING (NS_XUL_EVENT_START+2) michael@0: #define NS_XUL_POPUP_HIDDEN (NS_XUL_EVENT_START+3) michael@0: // NS_XUL_COMMAND used to be here (NS_XUL_EVENT_START+4) michael@0: #define NS_XUL_BROADCAST (NS_XUL_EVENT_START+5) michael@0: #define NS_XUL_COMMAND_UPDATE (NS_XUL_EVENT_START+6) michael@0: //@} michael@0: michael@0: // Scroll events michael@0: #define NS_MOUSE_SCROLL_START 1600 michael@0: #define NS_MOUSE_SCROLL (NS_MOUSE_SCROLL_START) michael@0: #define NS_MOUSE_PIXEL_SCROLL (NS_MOUSE_SCROLL_START + 1) michael@0: michael@0: #define NS_SCROLLPORT_START 1700 michael@0: #define NS_SCROLLPORT_UNDERFLOW (NS_SCROLLPORT_START) michael@0: #define NS_SCROLLPORT_OVERFLOW (NS_SCROLLPORT_START+1) michael@0: michael@0: #define NS_MUTATION_START 1800 michael@0: #define NS_MUTATION_SUBTREEMODIFIED (NS_MUTATION_START) michael@0: #define NS_MUTATION_NODEINSERTED (NS_MUTATION_START+1) michael@0: #define NS_MUTATION_NODEREMOVED (NS_MUTATION_START+2) michael@0: #define NS_MUTATION_NODEREMOVEDFROMDOCUMENT (NS_MUTATION_START+3) michael@0: #define NS_MUTATION_NODEINSERTEDINTODOCUMENT (NS_MUTATION_START+4) michael@0: #define NS_MUTATION_ATTRMODIFIED (NS_MUTATION_START+5) michael@0: #define NS_MUTATION_CHARACTERDATAMODIFIED (NS_MUTATION_START+6) michael@0: #define NS_MUTATION_END (NS_MUTATION_START+6) michael@0: michael@0: #define NS_USER_DEFINED_EVENT 2000 michael@0: michael@0: // composition events michael@0: #define NS_COMPOSITION_EVENT_START 2200 michael@0: #define NS_COMPOSITION_START (NS_COMPOSITION_EVENT_START) michael@0: #define NS_COMPOSITION_END (NS_COMPOSITION_EVENT_START + 1) michael@0: #define NS_COMPOSITION_UPDATE (NS_COMPOSITION_EVENT_START + 2) michael@0: michael@0: // text events michael@0: #define NS_TEXT_START 2400 michael@0: #define NS_TEXT_TEXT (NS_TEXT_START) michael@0: michael@0: // UI events michael@0: #define NS_UI_EVENT_START 2500 michael@0: // this is not to be confused with NS_ACTIVATE! michael@0: #define NS_UI_ACTIVATE (NS_UI_EVENT_START) michael@0: #define NS_UI_FOCUSIN (NS_UI_EVENT_START + 1) michael@0: #define NS_UI_FOCUSOUT (NS_UI_EVENT_START + 2) michael@0: michael@0: // pagetransition events michael@0: #define NS_PAGETRANSITION_START 2700 michael@0: #define NS_PAGE_SHOW (NS_PAGETRANSITION_START + 1) michael@0: #define NS_PAGE_HIDE (NS_PAGETRANSITION_START + 2) michael@0: michael@0: // SVG events michael@0: #define NS_SVG_EVENT_START 2800 michael@0: #define NS_SVG_LOAD (NS_SVG_EVENT_START) michael@0: #define NS_SVG_UNLOAD (NS_SVG_EVENT_START + 1) michael@0: #define NS_SVG_ABORT (NS_SVG_EVENT_START + 2) michael@0: #define NS_SVG_ERROR (NS_SVG_EVENT_START + 3) michael@0: #define NS_SVG_RESIZE (NS_SVG_EVENT_START + 4) michael@0: #define NS_SVG_SCROLL (NS_SVG_EVENT_START + 5) michael@0: michael@0: // SVG Zoom events michael@0: #define NS_SVGZOOM_EVENT_START 2900 michael@0: #define NS_SVG_ZOOM (NS_SVGZOOM_EVENT_START) michael@0: michael@0: // XUL command events michael@0: #define NS_XULCOMMAND_EVENT_START 3000 michael@0: #define NS_XUL_COMMAND (NS_XULCOMMAND_EVENT_START) michael@0: michael@0: // Cut, copy, paste events michael@0: #define NS_CUTCOPYPASTE_EVENT_START 3100 michael@0: #define NS_COPY (NS_CUTCOPYPASTE_EVENT_START) michael@0: #define NS_CUT (NS_CUTCOPYPASTE_EVENT_START + 1) michael@0: #define NS_PASTE (NS_CUTCOPYPASTE_EVENT_START + 2) michael@0: michael@0: // Query the content information michael@0: #define NS_QUERY_CONTENT_EVENT_START 3200 michael@0: // Query for the selected text information, it return the selection offset, michael@0: // selection length and selected text. michael@0: #define NS_QUERY_SELECTED_TEXT (NS_QUERY_CONTENT_EVENT_START) michael@0: // Query for the text content of specified range, it returns actual lengh (if michael@0: // the specified range is too long) and the text of the specified range. michael@0: // Returns the entire text if requested length > actual length. michael@0: #define NS_QUERY_TEXT_CONTENT (NS_QUERY_CONTENT_EVENT_START + 1) michael@0: // Query for the caret rect of nth insertion point. The offset of the result is michael@0: // relative position from the top level widget. michael@0: #define NS_QUERY_CARET_RECT (NS_QUERY_CONTENT_EVENT_START + 3) michael@0: // Query for the bounding rect of a range of characters. This works on any michael@0: // valid character range given offset and length. Result is relative to top michael@0: // level widget coordinates michael@0: #define NS_QUERY_TEXT_RECT (NS_QUERY_CONTENT_EVENT_START + 4) michael@0: // Query for the bounding rect of the current focused frame. Result is relative michael@0: // to top level widget coordinates michael@0: #define NS_QUERY_EDITOR_RECT (NS_QUERY_CONTENT_EVENT_START + 5) michael@0: // Query for the current state of the content. The particular members of michael@0: // mReply that are set for each query content event will be valid on success. michael@0: #define NS_QUERY_CONTENT_STATE (NS_QUERY_CONTENT_EVENT_START + 6) michael@0: // Query for the selection in the form of a nsITransferable. michael@0: #define NS_QUERY_SELECTION_AS_TRANSFERABLE (NS_QUERY_CONTENT_EVENT_START + 7) michael@0: // Query for character at a point. This returns the character offset and its michael@0: // rect. The point is specified by Event::refPoint. michael@0: #define NS_QUERY_CHARACTER_AT_POINT (NS_QUERY_CONTENT_EVENT_START + 8) michael@0: // Query if the DOM element under Event::refPoint belongs to our widget michael@0: // or not. michael@0: #define NS_QUERY_DOM_WIDGET_HITTEST (NS_QUERY_CONTENT_EVENT_START + 9) michael@0: michael@0: // Video events michael@0: #define NS_MEDIA_EVENT_START 3300 michael@0: #define NS_LOADSTART (NS_MEDIA_EVENT_START) michael@0: #define NS_PROGRESS (NS_MEDIA_EVENT_START+1) michael@0: #define NS_SUSPEND (NS_MEDIA_EVENT_START+2) michael@0: #define NS_EMPTIED (NS_MEDIA_EVENT_START+3) michael@0: #define NS_STALLED (NS_MEDIA_EVENT_START+4) michael@0: #define NS_PLAY (NS_MEDIA_EVENT_START+5) michael@0: #define NS_PAUSE (NS_MEDIA_EVENT_START+6) michael@0: #define NS_LOADEDMETADATA (NS_MEDIA_EVENT_START+7) michael@0: #define NS_LOADEDDATA (NS_MEDIA_EVENT_START+8) michael@0: #define NS_WAITING (NS_MEDIA_EVENT_START+9) michael@0: #define NS_PLAYING (NS_MEDIA_EVENT_START+10) michael@0: #define NS_CANPLAY (NS_MEDIA_EVENT_START+11) michael@0: #define NS_CANPLAYTHROUGH (NS_MEDIA_EVENT_START+12) michael@0: #define NS_SEEKING (NS_MEDIA_EVENT_START+13) michael@0: #define NS_SEEKED (NS_MEDIA_EVENT_START+14) michael@0: #define NS_TIMEUPDATE (NS_MEDIA_EVENT_START+15) michael@0: #define NS_ENDED (NS_MEDIA_EVENT_START+16) michael@0: #define NS_RATECHANGE (NS_MEDIA_EVENT_START+17) michael@0: #define NS_DURATIONCHANGE (NS_MEDIA_EVENT_START+18) michael@0: #define NS_VOLUMECHANGE (NS_MEDIA_EVENT_START+19) michael@0: michael@0: // paint notification events michael@0: #define NS_NOTIFYPAINT_START 3400 michael@0: #define NS_AFTERPAINT (NS_NOTIFYPAINT_START) michael@0: michael@0: // Simple gesture events michael@0: #define NS_SIMPLE_GESTURE_EVENT_START 3500 michael@0: #define NS_SIMPLE_GESTURE_SWIPE_START (NS_SIMPLE_GESTURE_EVENT_START) michael@0: #define NS_SIMPLE_GESTURE_SWIPE_UPDATE (NS_SIMPLE_GESTURE_EVENT_START+1) michael@0: #define NS_SIMPLE_GESTURE_SWIPE_END (NS_SIMPLE_GESTURE_EVENT_START+2) michael@0: #define NS_SIMPLE_GESTURE_SWIPE (NS_SIMPLE_GESTURE_EVENT_START+3) michael@0: #define NS_SIMPLE_GESTURE_MAGNIFY_START (NS_SIMPLE_GESTURE_EVENT_START+4) michael@0: #define NS_SIMPLE_GESTURE_MAGNIFY_UPDATE (NS_SIMPLE_GESTURE_EVENT_START+5) michael@0: #define NS_SIMPLE_GESTURE_MAGNIFY (NS_SIMPLE_GESTURE_EVENT_START+6) michael@0: #define NS_SIMPLE_GESTURE_ROTATE_START (NS_SIMPLE_GESTURE_EVENT_START+7) michael@0: #define NS_SIMPLE_GESTURE_ROTATE_UPDATE (NS_SIMPLE_GESTURE_EVENT_START+8) michael@0: #define NS_SIMPLE_GESTURE_ROTATE (NS_SIMPLE_GESTURE_EVENT_START+9) michael@0: #define NS_SIMPLE_GESTURE_TAP (NS_SIMPLE_GESTURE_EVENT_START+10) michael@0: #define NS_SIMPLE_GESTURE_PRESSTAP (NS_SIMPLE_GESTURE_EVENT_START+11) michael@0: #define NS_SIMPLE_GESTURE_EDGE_STARTED (NS_SIMPLE_GESTURE_EVENT_START+12) michael@0: #define NS_SIMPLE_GESTURE_EDGE_CANCELED (NS_SIMPLE_GESTURE_EVENT_START+13) michael@0: #define NS_SIMPLE_GESTURE_EDGE_COMPLETED (NS_SIMPLE_GESTURE_EVENT_START+14) michael@0: michael@0: // These are used to send native events to plugins. michael@0: #define NS_PLUGIN_EVENT_START 3600 michael@0: #define NS_PLUGIN_INPUT_EVENT (NS_PLUGIN_EVENT_START) michael@0: #define NS_PLUGIN_FOCUS_EVENT (NS_PLUGIN_EVENT_START+1) michael@0: michael@0: // Events to manipulate selection (WidgetSelectionEvent) michael@0: #define NS_SELECTION_EVENT_START 3700 michael@0: // Clear any previous selection and set the given range as the selection michael@0: #define NS_SELECTION_SET (NS_SELECTION_EVENT_START) michael@0: michael@0: // Events of commands for the contents michael@0: #define NS_CONTENT_COMMAND_EVENT_START 3800 michael@0: #define NS_CONTENT_COMMAND_CUT (NS_CONTENT_COMMAND_EVENT_START) michael@0: #define NS_CONTENT_COMMAND_COPY (NS_CONTENT_COMMAND_EVENT_START+1) michael@0: #define NS_CONTENT_COMMAND_PASTE (NS_CONTENT_COMMAND_EVENT_START+2) michael@0: #define NS_CONTENT_COMMAND_DELETE (NS_CONTENT_COMMAND_EVENT_START+3) michael@0: #define NS_CONTENT_COMMAND_UNDO (NS_CONTENT_COMMAND_EVENT_START+4) michael@0: #define NS_CONTENT_COMMAND_REDO (NS_CONTENT_COMMAND_EVENT_START+5) michael@0: #define NS_CONTENT_COMMAND_PASTE_TRANSFERABLE (NS_CONTENT_COMMAND_EVENT_START+6) michael@0: // NS_CONTENT_COMMAND_SCROLL scrolls the nearest scrollable element to the michael@0: // currently focused content or latest DOM selection. This would normally be michael@0: // the same element scrolled by keyboard scroll commands, except that this event michael@0: // will scroll an element scrollable in either direction. I.e., if the nearest michael@0: // scrollable ancestor element can only be scrolled vertically, and horizontal michael@0: // scrolling is requested using this event, no scrolling will occur. michael@0: #define NS_CONTENT_COMMAND_SCROLL (NS_CONTENT_COMMAND_EVENT_START+7) michael@0: michael@0: // Event to gesture notification michael@0: #define NS_GESTURENOTIFY_EVENT_START 3900 michael@0: michael@0: #define NS_ORIENTATION_EVENT 4000 michael@0: michael@0: #define NS_SCROLLAREA_EVENT_START 4100 michael@0: #define NS_SCROLLEDAREACHANGED (NS_SCROLLAREA_EVENT_START) michael@0: michael@0: #define NS_TRANSITION_EVENT_START 4200 michael@0: #define NS_TRANSITION_END (NS_TRANSITION_EVENT_START) michael@0: michael@0: #define NS_ANIMATION_EVENT_START 4250 michael@0: #define NS_ANIMATION_START (NS_ANIMATION_EVENT_START) michael@0: #define NS_ANIMATION_END (NS_ANIMATION_EVENT_START + 1) michael@0: #define NS_ANIMATION_ITERATION (NS_ANIMATION_EVENT_START + 2) michael@0: michael@0: #define NS_SMIL_TIME_EVENT_START 4300 michael@0: #define NS_SMIL_BEGIN (NS_SMIL_TIME_EVENT_START) michael@0: #define NS_SMIL_END (NS_SMIL_TIME_EVENT_START + 1) michael@0: #define NS_SMIL_REPEAT (NS_SMIL_TIME_EVENT_START + 2) michael@0: michael@0: #define NS_WEBAUDIO_EVENT_START 4350 michael@0: #define NS_AUDIO_PROCESS (NS_WEBAUDIO_EVENT_START) michael@0: #define NS_AUDIO_COMPLETE (NS_WEBAUDIO_EVENT_START + 1) michael@0: michael@0: // script notification events michael@0: #define NS_NOTIFYSCRIPT_START 4500 michael@0: #define NS_BEFORE_SCRIPT_EXECUTE (NS_NOTIFYSCRIPT_START) michael@0: #define NS_AFTER_SCRIPT_EXECUTE (NS_NOTIFYSCRIPT_START+1) michael@0: michael@0: #define NS_PRINT_EVENT_START 4600 michael@0: #define NS_BEFOREPRINT (NS_PRINT_EVENT_START) michael@0: #define NS_AFTERPRINT (NS_PRINT_EVENT_START + 1) michael@0: michael@0: #define NS_MESSAGE_EVENT_START 4700 michael@0: #define NS_MESSAGE (NS_MESSAGE_EVENT_START) michael@0: michael@0: // Open and close events michael@0: #define NS_OPENCLOSE_EVENT_START 4800 michael@0: #define NS_OPEN (NS_OPENCLOSE_EVENT_START) michael@0: #define NS_CLOSE (NS_OPENCLOSE_EVENT_START+1) michael@0: michael@0: // Device motion and orientation michael@0: #define NS_DEVICE_ORIENTATION_START 4900 michael@0: #define NS_DEVICE_ORIENTATION (NS_DEVICE_ORIENTATION_START) michael@0: #define NS_DEVICE_MOTION (NS_DEVICE_ORIENTATION_START+1) michael@0: #define NS_DEVICE_PROXIMITY (NS_DEVICE_ORIENTATION_START+2) michael@0: #define NS_USER_PROXIMITY (NS_DEVICE_ORIENTATION_START+3) michael@0: #define NS_DEVICE_LIGHT (NS_DEVICE_ORIENTATION_START+4) michael@0: michael@0: #define NS_SHOW_EVENT 5000 michael@0: michael@0: // Fullscreen DOM API michael@0: #define NS_FULL_SCREEN_START 5100 michael@0: #define NS_FULLSCREENCHANGE (NS_FULL_SCREEN_START) michael@0: #define NS_FULLSCREENERROR (NS_FULL_SCREEN_START + 1) michael@0: michael@0: #define NS_TOUCH_EVENT_START 5200 michael@0: #define NS_TOUCH_START (NS_TOUCH_EVENT_START) michael@0: #define NS_TOUCH_MOVE (NS_TOUCH_EVENT_START+1) michael@0: #define NS_TOUCH_END (NS_TOUCH_EVENT_START+2) michael@0: #define NS_TOUCH_ENTER (NS_TOUCH_EVENT_START+3) michael@0: #define NS_TOUCH_LEAVE (NS_TOUCH_EVENT_START+4) michael@0: #define NS_TOUCH_CANCEL (NS_TOUCH_EVENT_START+5) michael@0: michael@0: // Pointerlock DOM API michael@0: #define NS_POINTERLOCK_START 5300 michael@0: #define NS_POINTERLOCKCHANGE (NS_POINTERLOCK_START) michael@0: #define NS_POINTERLOCKERROR (NS_POINTERLOCK_START + 1) michael@0: michael@0: #define NS_WHEEL_EVENT_START 5400 michael@0: #define NS_WHEEL_WHEEL (NS_WHEEL_EVENT_START) michael@0: #define NS_WHEEL_START (NS_WHEEL_EVENT_START + 1) michael@0: #define NS_WHEEL_STOP (NS_WHEEL_EVENT_START + 2) michael@0: michael@0: //System time is changed michael@0: #define NS_MOZ_TIME_CHANGE_EVENT 5500 michael@0: michael@0: // Network packet events. michael@0: #define NS_NETWORK_EVENT_START 5600 michael@0: #define NS_NETWORK_UPLOAD_EVENT (NS_NETWORK_EVENT_START + 1) michael@0: #define NS_NETWORK_DOWNLOAD_EVENT (NS_NETWORK_EVENT_START + 2) michael@0: michael@0: // MediaRecorder events. michael@0: #define NS_MEDIARECORDER_EVENT_START 5700 michael@0: #define NS_MEDIARECORDER_DATAAVAILABLE (NS_MEDIARECORDER_EVENT_START + 1) michael@0: #define NS_MEDIARECORDER_WARNING (NS_MEDIARECORDER_EVENT_START + 2) michael@0: #define NS_MEDIARECORDER_STOP (NS_MEDIARECORDER_EVENT_START + 3) michael@0: michael@0: // SpeakerManager events michael@0: #define NS_SPEAKERMANAGER_EVENT_START 5800 michael@0: #define NS_SPEAKERMANAGER_SPEAKERFORCEDCHANGE (NS_SPEAKERMANAGER_EVENT_START + 1) michael@0: michael@0: #ifdef MOZ_GAMEPAD michael@0: // Gamepad input events michael@0: #define NS_GAMEPAD_START 6000 michael@0: #define NS_GAMEPAD_BUTTONDOWN (NS_GAMEPAD_START) michael@0: #define NS_GAMEPAD_BUTTONUP (NS_GAMEPAD_START+1) michael@0: #define NS_GAMEPAD_AXISMOVE (NS_GAMEPAD_START+2) michael@0: #define NS_GAMEPAD_CONNECTED (NS_GAMEPAD_START+3) michael@0: #define NS_GAMEPAD_DISCONNECTED (NS_GAMEPAD_START+4) michael@0: // Keep this defined to the same value as the event above michael@0: #define NS_GAMEPAD_END (NS_GAMEPAD_START+4) michael@0: #endif michael@0: michael@0: // input and beforeinput events. michael@0: #define NS_EDITOR_EVENT_START 6100 michael@0: #define NS_EDITOR_INPUT (NS_EDITOR_EVENT_START) michael@0: michael@0: namespace mozilla { michael@0: michael@0: /****************************************************************************** michael@0: * mozilla::BaseEventFlags michael@0: * michael@0: * BaseEventFlags must be a POD struct for safe to use memcpy (including michael@0: * in ParamTraits). So don't make virtual methods, constructor, michael@0: * destructor and operators. michael@0: * This is necessary for VC which is NOT C++0x compiler. michael@0: ******************************************************************************/ michael@0: michael@0: struct BaseEventFlags michael@0: { michael@0: public: michael@0: // If mIsTrusted is true, the event is a trusted event. Otherwise, it's michael@0: // an untrusted event. michael@0: bool mIsTrusted : 1; michael@0: // If mInBubblingPhase is true, the event is in bubbling phase or target michael@0: // phase. michael@0: bool mInBubblingPhase : 1; michael@0: // If mInCapturePhase is true, the event is in capture phase or target phase. michael@0: bool mInCapturePhase : 1; michael@0: // If mInSystemGroup is true, the event is being dispatched in system group. michael@0: bool mInSystemGroup: 1; michael@0: // If mCancelable is true, the event can be consumed. I.e., calling michael@0: // dom::Event::PreventDefault() can prevent the default action. michael@0: bool mCancelable : 1; michael@0: // If mBubbles is true, the event can bubble. Otherwise, cannot be handled michael@0: // in bubbling phase. michael@0: bool mBubbles : 1; michael@0: // If mPropagationStopped is true, dom::Event::StopPropagation() or michael@0: // dom::Event::StopImmediatePropagation() has been called. michael@0: bool mPropagationStopped : 1; michael@0: // If mImmediatePropagationStopped is true, michael@0: // dom::Event::StopImmediatePropagation() has been called. michael@0: // Note that mPropagationStopped must be true when this is true. michael@0: bool mImmediatePropagationStopped : 1; michael@0: // If mDefaultPrevented is true, the event has been consumed. michael@0: // E.g., dom::Event::PreventDefault() has been called or michael@0: // the default action has been performed. michael@0: bool mDefaultPrevented : 1; michael@0: // If mDefaultPreventedByContent is true, the event has been michael@0: // consumed by content. michael@0: // Note that mDefaultPrevented must be true when this is true. michael@0: bool mDefaultPreventedByContent : 1; michael@0: // mMultipleActionsPrevented may be used when default handling don't want to michael@0: // be prevented, but only one of the event targets should handle the event. michael@0: // For example, when a