Unverified Commit d4b4eeed authored by Tong Mu's avatar Tong Mu Committed by GitHub

Add all system cursors (framework) (#60931)

parent d1c4bdb1
......@@ -400,7 +400,7 @@ class SystemMouseCursor extends MouseCursor {
///
/// [SystemMouseCursors] is a superset of the system cursors of every platform
/// that Flutter supports, therefore some of these objects might map to the same
/// result, or fallback to the basic arrow. This mapping is defined by the
/// result, or fallback to the [basic] arrow. This mapping is defined by the
/// Flutter engine.
///
/// The cursor names are chosen to reflect the cursors' use cases instead of
......@@ -416,45 +416,428 @@ class SystemMouseCursors {
/// Any cursor other than [none] or [uncontrolled] unhides the cursor.
static const SystemMouseCursor none = SystemMouseCursor._(kind: 'none');
//// STATUS ////
/// The platform-dependent basic cursor.
///
/// Typically the shape of an arrow.
///
/// Corresponds to:
///
/// * Android: TYPE_DEFAULT, TYPE_ARROW
/// * Web: default
/// * macOS: arrowCursor
static const SystemMouseCursor basic = SystemMouseCursor._(kind: 'basic');
/// A cursor that indicates a user interface element that is clickable, such as a hyperlink.
/// A cursor that emphasizes an element being clickable, such as a hyperlink.
///
/// Typically the shape of a pointing hand.
///
/// Corresponds to:
///
/// * Android: TYPE_HAND
/// * Web: pointer
/// * macOS: pointingHandCursor
static const SystemMouseCursor click = SystemMouseCursor._(kind: 'click');
/// A cursor that indicates selectable text.
/// A cursor indicating an operation that will not be carried out.
///
/// Typically the shape of a circle with a diagonal line. May fall back to
/// [noDrop].
///
/// Corresponds to:
///
/// * Android: TYPE_NO_DROP
/// * Web: not-allowed
/// * macOS: operationNotAllowedCursor
///
/// See also:
///
/// * [noDrop], which indicates somewhere that the current item may not be
/// dropped.
static const SystemMouseCursor forbidden = SystemMouseCursor._(kind: 'forbidden');
/// A cursor indicating the status that the program is busy and therefore
/// can not be interacted with.
///
/// Typically the shape of an hourglass or a watch.
///
/// This cursor is not available as a system cursor on macOS. Although macOS
/// displays a "spinning ball" cursor when busy, it's handled by the OS and not
/// exposed for applications to choose.
///
/// Corresponds to:
///
/// * Android: TYPE_WAIT
/// * Web: wait
///
/// See also:
///
/// * [progress], which is similar to [wait] but the program can still be
/// interacted with.
static const SystemMouseCursor wait = SystemMouseCursor._(kind: 'wait');
/// A cursor indicating the status that the program is busy but can still be
/// interacted with.
///
/// Typically the shape of an arrow with an hourglass or a watch at the corner.
/// Does *not* fall back to [wait] if unavailable.
///
/// Corresponds to:
///
/// * Web: progress
///
/// See also:
///
/// * [wait], which is similar to [progress] but the program can not be
/// interacted with.
static const SystemMouseCursor progress = SystemMouseCursor._(kind: 'progress');
/// A cursor indicating somewhere the user can trigger a context menu.
///
/// Typically the shape of an arrow with a small menu at the corner.
///
/// Corresponds to:
///
/// * Android: TYPE_CONTEXT_MENU
/// * Web: context-menu
/// * macOS: contextualMenuCursor
static const SystemMouseCursor contextMenu = SystemMouseCursor._(kind: 'contextMenu');
/// A cursor indicating help information.
///
/// Typically the shape of a question mark, or an arrow therewith.
///
/// Corresponds to:
///
/// * Android: TYPE_HELP
/// * Web: help
static const SystemMouseCursor help = SystemMouseCursor._(kind: 'help');
//// SELECTION ////
/// A cursor indicating selectable text.
///
/// Typically the shape of a capital I.
///
/// Corresponds to:
///
/// * Android: TYPE_TEXT
/// * Web: text
/// * macOS: IBeamCursor
static const SystemMouseCursor text = SystemMouseCursor._(kind: 'text');
/// A cursor that indicates a forbidden action.
/// A cursor indicating selectable vertical text.
///
/// Typically the shape of a circle with a diagonal line.
static const SystemMouseCursor forbidden = SystemMouseCursor._(kind: 'forbidden');
/// Typically the shape of a capital I rotated to be horizontal. May fall back
/// to [text].
///
/// Corresponds to:
///
/// * Android: TYPE_VERTICAL_TEXT
/// * Web: vertical-text
/// * macOS: IBeamCursorForVerticalLayout
static const SystemMouseCursor verticalText = SystemMouseCursor._(kind: 'verticalText');
/// A cursor indicating selectable table cells.
///
/// Typically the shape of a hollow plus sign.
///
/// Corresponds to:
///
/// * Android: TYPE_CELL
/// * Web: cell
static const SystemMouseCursor cell = SystemMouseCursor._(kind: 'cell');
/// A cursor that indicates something that can be dragged.
/// A cursor indicating precise selection, such as selecting a pixel in a
/// bitmap.
///
/// Typically the shape of a crosshair.
///
/// Corresponds to:
///
/// * Android: TYPE_CROSSHAIR
/// * Web: crosshair
/// * macOS: crosshairCursor
static const SystemMouseCursor precise = SystemMouseCursor._(kind: 'precise');
//// DRAG-AND-DROP ////
/// A cursor indicating moving something.
///
/// Typically the shape of four-way arrow. May fall back to [allScroll].
///
/// Corresponds to:
///
/// * Android: TYPE_ALL_SCROLL
/// * Web: move
static const SystemMouseCursor move = SystemMouseCursor._(kind: 'move');
/// A cursor indicating something that can be dragged.
///
/// Typically the shape of an open hand.
///
/// Corresponds to:
///
/// * Android: TYPE_GRAB
/// * Web: grab
/// * macOS: openHandCursor
static const SystemMouseCursor grab = SystemMouseCursor._(kind: 'grab');
/// A cursor that indicates something that is being dragged.
/// A cursor indicating something that is being dragged.
///
/// Typically the shape of a closed hand.
///
/// Corresponds to:
///
/// * Android: TYPE_GRABBING
/// * Web: grabbing
/// * macOS: closedHandCursor
static const SystemMouseCursor grabbing = SystemMouseCursor._(kind: 'grabbing');
/// A cursor in the shape of a horizontal double-arrow.
/// A cursor indicating somewhere that the current item may not be dropped.
///
/// Typically the shape of a hand with a [forbidden] sign at the corner. May
/// fall back to [forbidden].
///
/// Corresponds to:
///
/// * Android: TYPE_NO_DROP
/// * Web: no-drop
/// * macOS: operationNotAllowedCursor
///
/// See also:
///
/// * [forbidden], which indicates an action that will not be carried out.
static const SystemMouseCursor noDrop = SystemMouseCursor._(kind: 'noDrop');
/// A cursor indicating that the current operation will create an alias of, or
/// a shortcut of the item.
///
/// This cursor is typically used when moving or resizing an object, and the
/// object can be moved left or right.
static const SystemMouseCursor horizontalDoubleArrow = SystemMouseCursor._(kind: 'horizontalDoubleArrow');
/// Typically the shape of an arrow with a shortcut icon at the corner.
///
/// Corresponds to:
///
/// * Android: TYPE_ALIAS
/// * Web: alias
/// * macOS: dragLinkCursor
static const SystemMouseCursor alias = SystemMouseCursor._(kind: 'alias');
/// A cursor in the shape of a vertical double-arrow.
/// A cursor indicating that the current operation will copy the item.
///
/// Typically the shape of an arrow with a boxed plus sign at the corner.
///
/// Corresponds to:
///
/// * Android: TYPE_COPY
/// * Web: copy
/// * macOS: dragCopyCursor
static const SystemMouseCursor copy = SystemMouseCursor._(kind: 'copy');
/// A cursor indicating that the current operation will result in the
/// disappearance of the item.
///
/// Typically the shape of an arrow with a cloud of smoke at the corner.
///
/// Corresponds to:
///
/// * macOS: disappearingItemCursor
static const SystemMouseCursor disappearing = SystemMouseCursor._(kind: 'disappearing');
//// RESIZING AND SCROLLING ////
/// A cursor indicating scrolling in any direction.
///
/// Typically the shape of a dot surrounded by 4 arrows.
///
/// Corresponds to:
///
/// * Android: TYPE_ALL_SCROLL
/// * Web: all-scroll
///
/// See also:
///
/// * [move], which indicates moving in any direction.
static const SystemMouseCursor allScroll = SystemMouseCursor._(kind: 'allScroll');
/// A cursor indicating resizing an object bidirectionally from its left or
/// right edge.
///
/// Typically the shape of a bidirectional arrow pointing left and right.
///
/// Corresponds to:
///
/// * Android: TYPE_HORIZONTAL_DOUBLE_ARROW
/// * Web: ew-resize
/// * macOS: resizeLeftRightCursor
static const SystemMouseCursor resizeLeftRight = SystemMouseCursor._(kind: 'resizeLeftRight');
/// A cursor indicating resizing an object bidirectionally from its top or
/// bottom edge.
///
/// Typically the shape of a bidirectional arrow pointing up and down.
///
/// Corresponds to:
///
/// * Android: TYPE_VERTICAL_DOUBLE_ARROW
/// * Web: ns-resize
/// * macOS: resizeUpDownCursor
static const SystemMouseCursor resizeUpDown = SystemMouseCursor._(kind: 'resizeUpDown');
/// A cursor indicating resizing an object bidirectionally from its top left or
/// bottom right corner.
///
/// Typically the shape of a bidirectional arrow pointing upper left and lower right.
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW
/// * Web: nwse-resize
static const SystemMouseCursor resizeUpLeftDownRight = SystemMouseCursor._(kind: 'resizeUpLeftDownRight');
/// A cursor indicating resizing an object bidirectionally from its top right or
/// bottom left corner.
///
/// Typically the shape of a bidirectional arrow pointing upper right and lower left.
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW
/// * Web: nesw-resize
static const SystemMouseCursor resizeUpRightDownLeft = SystemMouseCursor._(kind: 'resizeUpRightDownLeft');
/// A cursor indicating resizing an object from its top edge.
///
/// Typically the shape of an arrow pointing up. May fallback to [resizeUpDown].
///
/// Corresponds to:
///
/// * Android: TYPE_VERTICAL_DOUBLE_ARROW
/// * Web: n-resize
/// * macOS: resizeUpCursor
static const SystemMouseCursor resizeUp = SystemMouseCursor._(kind: 'resizeUp');
/// A cursor indicating resizing an object from its bottom edge.
///
/// Typically the shape of an arrow pointing down. May fallback to [resizeUpDown].
///
/// Corresponds to:
///
/// * Android: TYPE_VERTICAL_DOUBLE_ARROW
/// * Web: s-resize
/// * macOS: resizeDownCursor
static const SystemMouseCursor resizeDown = SystemMouseCursor._(kind: 'resizeDown');
/// A cursor indicating resizing an object from its left edge.
///
/// Typically the shape of an arrow pointing left. May fallback to [resizeLeftRight].
///
/// Corresponds to:
///
/// * Android: TYPE_HORIZONTAL_DOUBLE_ARROW
/// * Web: w-resize
/// * macOS: resizeLeftCursor
static const SystemMouseCursor resizeLeft = SystemMouseCursor._(kind: 'resizeLeft');
/// A cursor indicating resizing an object from its right edge.
///
/// Typically the shape of an arrow pointing right. May fallback to [resizeLeftRight].
///
/// Corresponds to:
///
/// * Android: TYPE_HORIZONTAL_DOUBLE_ARROW
/// * Web: e-resize
/// * macOS: resizeRightCursor
static const SystemMouseCursor resizeRight = SystemMouseCursor._(kind: 'resizeRight');
/// A cursor indicating resizing an object from its top-left corner.
///
/// Typically the shape of an arrow pointing upper left. May fallback to [resizeUpLeftDownRight].
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW
/// * Web: nw-resize
static const SystemMouseCursor resizeUpLeft = SystemMouseCursor._(kind: 'resizeUpLeft');
/// A cursor indicating resizing an object from its top-right corner.
///
/// Typically the shape of an arrow pointing upper right. May fallback to [resizeUpRightDownLeft].
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW
/// * Web: ne-resize
static const SystemMouseCursor resizeUpRight = SystemMouseCursor._(kind: 'resizeUpRight');
/// A cursor indicating resizing an object from its bottom-left corner.
///
/// Typically the shape of an arrow pointing lower left. May fallback to [resizeUpRightDownLeft].
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW
/// * Web: sw-resize
static const SystemMouseCursor resizeDownLeft = SystemMouseCursor._(kind: 'resizeDownLeft');
/// A cursor indicating resizing an object from its bottom-right corner.
///
/// Typically the shape of an arrow pointing lower right. May fallback to [resizeUpLeftDownRight].
///
/// Corresponds to:
///
/// * Android: TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW
/// * Web: se-resize
static const SystemMouseCursor resizeDownRight = SystemMouseCursor._(kind: 'resizeDownRight');
/// A cursor indicating resizing a column, or an item horizontally.
///
/// Typically the shape of arrows pointing left and right with a vertical bar
/// separating them. May fallback to [resizeLeftRight].
///
/// Corresponds to:
///
/// * Android: TYPE_HORIZONTAL_DOUBLE_ARROW
/// * Web: col-resize
/// * macOS: resizeLeftRightCursor
static const SystemMouseCursor resizeColumn = SystemMouseCursor._(kind: 'resizeColumn');
/// A cursor indicating resizing a row, or an item vertically.
///
/// Typically the shape of arrows pointing up and down with a horizontal bar
/// separating them. May fallback to [resizeUpDown].
///
/// Corresponds to:
///
/// * Android: TYPE_VERTICAL_DOUBLE_ARROW
/// * Web: row-resize
/// * macOS: resizeUpDownCursor
static const SystemMouseCursor resizeRow = SystemMouseCursor._(kind: 'resizeRow');
//// OTHER OPERATIONS ////
/// A cursor indicating zooming in.
///
/// Typically a magnifying glass with a plus sign.
///
/// Corresponds to:
///
/// * Android: TYPE_ZOOM_IN
/// * Web: zoom-in
static const SystemMouseCursor zoomIn = SystemMouseCursor._(kind: 'zoomIn');
/// A cursor indicating zooming out.
///
/// Typically a magnifying glass with a minus sign.
///
/// Corresponds to:
///
/// This cursor is typically used when moving or resizing an object, and the
/// object can be moved up or down.
static const SystemMouseCursor verticalDoubleArrow = SystemMouseCursor._(kind: 'verticalDoubleArrow');
/// * Android: TYPE_ZOOM_OUT
/// * Web: zoom-out
static const SystemMouseCursor zoomOut = SystemMouseCursor._(kind: 'zoomOut');
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment