199 lines
7.3 KiB
C++
199 lines
7.3 KiB
C++
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef UI_EVENTS_EVENT_CONSTANTS_H_
|
|
#define UI_EVENTS_EVENT_CONSTANTS_H_
|
|
|
|
#include "build/build_config.h"
|
|
|
|
namespace ui {
|
|
|
|
// Event flags currently supported. It is OK to add values to the middle of
|
|
// this list and/or reorder it, but make sure you also touch the various other
|
|
// enums/constants that want to stay in sync with this. For example,
|
|
// KeyEventFlags and MouseEventFlags should not overlap EventFlags.
|
|
enum EventFlags {
|
|
EF_NONE = 0, // Used to denote no flags explicitly
|
|
|
|
// Universally applicable status bits.
|
|
EF_IS_SYNTHESIZED = 1 << 0,
|
|
|
|
// Modifier key state.
|
|
EF_SHIFT_DOWN = 1 << 1,
|
|
EF_CONTROL_DOWN = 1 << 2,
|
|
EF_ALT_DOWN = 1 << 3,
|
|
EF_COMMAND_DOWN = 1 << 4, // GUI Key (e.g. Command on OS X
|
|
// keyboards, Search on Chromebook
|
|
// keyboards, Windows on MS-oriented
|
|
// keyboards)
|
|
EF_FUNCTION_DOWN = 1 << 5, // Function key.
|
|
EF_ALTGR_DOWN = 1 << 6,
|
|
EF_MOD3_DOWN = 1 << 7,
|
|
|
|
// Other keyboard states.
|
|
EF_NUM_LOCK_ON = 1 << 8,
|
|
EF_CAPS_LOCK_ON = 1 << 9,
|
|
EF_SCROLL_LOCK_ON = 1 << 10,
|
|
|
|
// Mouse buttons.
|
|
EF_LEFT_MOUSE_BUTTON = 1 << 11,
|
|
EF_MIDDLE_MOUSE_BUTTON = 1 << 12,
|
|
EF_RIGHT_MOUSE_BUTTON = 1 << 13,
|
|
EF_BACK_MOUSE_BUTTON = 1 << 14,
|
|
EF_FORWARD_MOUSE_BUTTON = 1 << 15,
|
|
EF_MOUSE_BUTTON = EF_LEFT_MOUSE_BUTTON | EF_MIDDLE_MOUSE_BUTTON |
|
|
EF_RIGHT_MOUSE_BUTTON | EF_BACK_MOUSE_BUTTON |
|
|
EF_FORWARD_MOUSE_BUTTON,
|
|
|
|
// An artificial value used to bridge platform differences.
|
|
// Many commands on Mac as Cmd+Key are the counterparts of
|
|
// Ctrl+Key on other platforms.
|
|
#if defined(OS_APPLE)
|
|
EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN,
|
|
#else
|
|
EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN,
|
|
#endif
|
|
};
|
|
|
|
// Flags specific to key events.
|
|
// WARNING: If you add or remove values make sure traits for serializing these
|
|
// values are updated.
|
|
enum KeyEventFlags {
|
|
EF_IME_FABRICATED_KEY = 1 << 16, // Key event fabricated by the underlying
|
|
// IME without a user action.
|
|
// (Linux X11 only)
|
|
EF_IS_REPEAT = 1 << 17,
|
|
EF_FINAL = 1 << 18, // Do not remap; the event was created with
|
|
// the desired final values.
|
|
EF_IS_EXTENDED_KEY = 1 << 19, // Windows extended key (see WM_KEYDOWN doc)
|
|
EF_IS_STYLUS_BUTTON = 1 << 20, // Event was generated by a stylus button
|
|
EF_MAX_KEY_EVENT_FLAGS_VALUE = (1 << 21) - 1,
|
|
};
|
|
|
|
// Flags specific to mouse events.
|
|
enum MouseEventFlags {
|
|
EF_IS_DOUBLE_CLICK = 1 << 16,
|
|
EF_IS_TRIPLE_CLICK = 1 << 17,
|
|
EF_IS_NON_CLIENT = 1 << 18,
|
|
EF_FROM_TOUCH = 1 << 19, // Indicates this mouse event is generated
|
|
// from an unconsumed touch/gesture event.
|
|
EF_TOUCH_ACCESSIBILITY = 1 << 20, // Indicates this event was generated from
|
|
// touch accessibility mode.
|
|
EF_CURSOR_HIDE = 1 << 21, // Indicates this mouse event is generated
|
|
// because the cursor was just hidden. This
|
|
// can be used to update hover state.
|
|
EF_PRECISION_SCROLLING_DELTA = // Indicates this mouse event is from high
|
|
1 << 22, // precision touchpad and will come with a
|
|
// high precision delta.
|
|
EF_SCROLL_BY_PAGE = 1 << 23, // Indicates this mouse event is generated
|
|
// when users is requesting to scroll by
|
|
// pages.
|
|
EF_UNADJUSTED_MOUSE = 1 << 24, // Indicates this mouse event is unadjusted
|
|
// mouse events that has unadjusted movement
|
|
// delta, i.e. is from WM_INPUT on Windows.
|
|
};
|
|
|
|
// Result of dispatching an event.
|
|
enum EventResult {
|
|
ER_UNHANDLED = 0, // The event hasn't been handled. The event can be
|
|
// propagated to other handlers.
|
|
ER_HANDLED = 1 << 0, // The event has already been handled, but it can
|
|
// still be propagated to other handlers.
|
|
ER_CONSUMED = 1 << 1, // The event has been handled, and it should not be
|
|
// propagated to other handlers.
|
|
ER_DISABLE_SYNC_HANDLING =
|
|
1 << 2, // The event shouldn't be handled synchronously. This
|
|
// happens if the event is being handled
|
|
// asynchronously, or if the event is invalid and
|
|
// shouldn't be handled at all.
|
|
};
|
|
|
|
// Phase of the event dispatch.
|
|
enum EventPhase {
|
|
EP_PREDISPATCH,
|
|
EP_PRETARGET,
|
|
EP_TARGET,
|
|
EP_POSTTARGET,
|
|
EP_POSTDISPATCH
|
|
};
|
|
|
|
// Phase information used for a ScrollEvent. ScrollEventPhase is for scroll
|
|
// stream from user gesture, EventMomentumPhase is for inertia scroll stream
|
|
// after user gesture.
|
|
enum class ScrollEventPhase {
|
|
// Event has no phase information. eg. the Event is not in a scroll stream.
|
|
kNone,
|
|
|
|
// Event is the beginning of a scroll event stream.
|
|
kBegan,
|
|
|
|
// Event is a scroll event with phase information.
|
|
kUpdate,
|
|
|
|
// Event is the end of the current scroll event stream.
|
|
kEnd,
|
|
};
|
|
|
|
// Momentum phase information used for a ScrollEvent.
|
|
enum class EventMomentumPhase {
|
|
// Event is a non-momentum update to an event stream already begun.
|
|
NONE,
|
|
|
|
// Event is the beginning of an event stream that may result in momentum.
|
|
// BEGAN vs MAY_BEGIN:
|
|
// - BEGAN means we already know the inertia scroll stream must happen after
|
|
// BEGAN event. On Windows touchpad, we sent this when receive the first
|
|
// inertia scroll event or Direct Manipulation state change to INERTIA.
|
|
// - MAY_BEGIN means the inertia scroll stream may happen after MAY_BEGIN
|
|
// event. On Mac, we send this when receive releaseTouches, but we do not
|
|
// know the inertia scroll stream will happen or not at that time.
|
|
BEGAN,
|
|
|
|
// Event maybe the beginning of an event stream that may result in momentum.
|
|
// This state used on Mac.
|
|
MAY_BEGIN,
|
|
|
|
// Event is an update while in a momentum phase. A "begin" event for the
|
|
// momentum phase portion of an event stream uses this also, but the scroll
|
|
// offsets will be zero.
|
|
INERTIAL_UPDATE,
|
|
|
|
// Event marks the end of the current event stream. Note that this is also set
|
|
// for events that are not a "stream", but indicate both the start and end of
|
|
// the event (e.g. a mouse wheel tick).
|
|
END,
|
|
|
|
// EventMomentumPhase can only be BLOCKED when ScrollEventPhase is kEnd. Event
|
|
// marks the end of the current event stream, when there will be no inertia
|
|
// scrolling after the user gesture. ScrollEventPhase must simultaneously be
|
|
// kEnd because that is when it is determined if an event stream that results
|
|
// in momentum will begin or not. This phase is only used on Windows.
|
|
BLOCKED,
|
|
};
|
|
|
|
// Device ID for Touch and Key Events.
|
|
enum EventDeviceId {
|
|
ED_UNKNOWN_DEVICE = -1
|
|
};
|
|
|
|
// Pointing device type.
|
|
enum class EventPointerType : int {
|
|
kUnknown,
|
|
kMouse,
|
|
kPen,
|
|
kTouch,
|
|
kEraser,
|
|
kMaxValue = kEraser,
|
|
};
|
|
|
|
// Device type for gesture events.
|
|
enum class GestureDeviceType : int {
|
|
DEVICE_UNKNOWN = 0,
|
|
DEVICE_TOUCHPAD,
|
|
DEVICE_TOUCHSCREEN,
|
|
};
|
|
|
|
} // namespace ui
|
|
|
|
#endif // UI_EVENTS_EVENT_CONSTANTS_H_
|