blob: 5d391551c297a696e7860a1846c578f8d2829c60 [file] [log] [blame]
/**
* Copyright (c) 2022, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.os;
/**
* Input configurations flags used to determine the behavior of input windows.
* @hide
*/
@Backing(type="int")
enum InputConfig {
/**
* The default InputConfig value with no flags set.
*/
DEFAULT = 0,
/**
* Does not construct an input channel for this window. The channel will therefore
* be incapable of receiving input.
*/
NO_INPUT_CHANNEL = 1 << 0,
/**
* Indicates that this input window is not visible, and thus will not be considered as
* an input target and will not obscure other windows.
*/
NOT_VISIBLE = 1 << 1,
/**
* Indicates that this input window cannot be a focus target, and this will not
* receive any input events that can only be directed for the focused window, such
* as key events.
*/
NOT_FOCUSABLE = 1 << 2,
/**
* Indicates that this input window cannot receive any events directed at a
* specific location on the screen, such as touchscreen, mouse, and stylus events.
* The window will not be considered as a touch target, but can still obscure other
* windows.
*/
NOT_TOUCHABLE = 1 << 3,
/**
* Indicates that this window will not accept a touch event that is split between
* more than one window. When set:
* - If this window receives a DOWN event with the first pointer, all successive
* pointers that go down, regardless of their location on the screen, will be
* directed to this window;
* - If the DOWN event lands outside the touchable bounds of this window, no
* successive pointers that go down, regardless of their location on the screen,
* will be directed to this window.
*/
PREVENT_SPLITTING = 1 << 4,
/**
* Indicates that this window shows the wallpaper behind it, so all touch events
* that it receives should also be sent to the wallpaper.
*/
DUPLICATE_TOUCH_TO_WALLPAPER = 1 << 5,
/** Indicates that this the wallpaper's input window. */
IS_WALLPAPER = 1 << 6,
/**
* Indicates that input events should not be dispatched to this window. When set,
* input events directed towards this window will simply be dropped, and will not
* be dispatched to windows behind it.
*/
PAUSE_DISPATCHING = 1 << 7,
/**
* This flag is set when the window is of a trusted type that is allowed to silently
* overlay other windows for the purpose of implementing the secure views feature.
* Trusted overlays, such as IME windows, can partly obscure other windows without causing
* motion events to be delivered to them with AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED.
*/
TRUSTED_OVERLAY = 1 << 8,
/**
* Indicates that this window wants to listen for when there is a touch DOWN event
* that occurs outside its touchable bounds. When such an event occurs, this window
* will receive a MotionEvent with ACTION_OUTSIDE.
*/
WATCH_OUTSIDE_TOUCH = 1 << 9,
/**
* When set, this flag allows touches to leave the current window whenever the finger
* moves above another window. When this happens, the window that touch has just left
* (the current window) will receive ACTION_CANCEL, and the window that touch has entered
* will receive ACTION_DOWN, and the remainder of the touch gesture will only go to the
* new window. Without this flag, the entire gesture is sent to the current window, even
* if the touch leaves the window's bounds.
*/
SLIPPERY = 1 << 10,
/**
* When this window has focus, does not call user activity for all input events so
* the application will have to do it itself.
*/
DISABLE_USER_ACTIVITY = 1 << 11,
/**
* Internal flag used to indicate that input should be dropped on this window.
*/
DROP_INPUT = 1 << 12,
/**
* Internal flag used to indicate that input should be dropped on this window if this window
* is obscured.
*/
DROP_INPUT_IF_OBSCURED = 1 << 13,
/**
* An input spy window. This window will receive all pointer events within its touchable
* area, but will not stop events from being sent to other windows below it in z-order.
* An input event will be dispatched to all spy windows above the top non-spy window at the
* event's coordinates.
*/
SPY = 1 << 14,
/**
* When used with {@link #NOT_TOUCHABLE}, this window will continue to receive events from
* a stylus device within its touchable region. All other pointer events, such as from a
* mouse or touchscreen, will be dispatched to the windows behind it.
*
* This configuration has no effect when the config {@link #NOT_TOUCHABLE} is not set.
*
* It is not valid to set this configuration if {@link #TRUSTED_OVERLAY} is not set.
*/
INTERCEPTS_STYLUS = 1 << 15,
/**
* The window is a clone of another window. This may be treated differently since there's
* likely a duplicate window with the same client token, but different bounds.
*/
CLONE = 1 << 16,
/**
* If the stylus is currently down *anywhere* on the screen, new touches will not be delivered
* to the window with this flag. This helps prevent unexpected clicks on some system windows,
* like StatusBar and TaskBar.
*/
GLOBAL_STYLUS_BLOCKS_TOUCH = 1 << 17,
}