Common Desktop Environment: Style Guide and Certification Checklist

Selection

Selection Models

 

n/a 

 

 

 

Required 

4-1: 

Your system supports five selection models: single selection, browse selection, multiple selection, range selection, and discontiguous selection.  

Each collection has one or more appropriate selection models. The model limits the kinds of choices the user can make in the collection. Some collections enforce a selection model, while others allow the user or application to change it. 

Mouse-Based Single Selection

 

n/a 

 

 

 

Required 

4-2: 

In a collection that uses single selection, when BSelect is clicked in a deselected element, the location cursor moves to that element, that element is selected, and any other selection in the collection is deselected.  

Single selection is the simplest selection model, used to select a single element. BSelect, the first mouse button, provides a consistent means of selecting an object within a group using the mouse. 

Mouse-Based Browse Selection

 

n/a 

 

 

 

Required 

4-3: 

In a collection that uses browse selection, when BSelect is released in a selectable element, that element is selected, and any other selection in the collection is deselected. As BSelect is dragged through selectable elements, each element under the pointer is selected, and the previously selected element is deselected. The selection remains on the element where BSelect is released, and the location cursor is moved there.  

Browse selection is used to select a single element. It also allows the user to browse through the collection by dragging BSelect. See "Mouse-Based Multiple Selection".

 

 

 

 

4-4: 

This item has been deleted. 

Mouse-Based Multiple Selection

 

n/a 

 

 

 

Required 

i: 

If your application contains collections that follow the multiple selection model, BAdjust is supported and behaves just like BSelect, when the BTransfer button is currently configured to behave as BAdjust. 

On a three-button mouse, button 2 is typically used for the BTransfer (or BSelect) function. However, in a Common Desktop Environment environment, the user may change an environment setting indicating that mouse button 2 should be used for the BAdjust function instead. BAdjust can be used to toggle the selection state of elements under the multiple selection model. 

Required 

j: 

In a collection that uses multiple selection, clicking BSelect or BAdjust on an unselected element adds that element to the current selection. Clicking BSelect or BAdjust on a selected element removes that element from the current selection. Clicking BSelect or BAdjust moves the location cursor to that element. 

Mouse-Based Range Selection

 

n/a 

 

 

 

 

 

 

 

4-5: 

This item has been replaced by items k and l. 

Required 

k: 

In a collection that uses range selection, pressing BSelect on an unselected element sets an anchor on the element, or at the position where BSelect was pressed, and deselects all elements in the collection. If BSelect is released before the drag threshold has been exceeded, then the element under the pointer should be selected. If BSelect Motion exceeds the drag threshold, then a new selection should begin. The anchor and the current position of the pointer determine the current range. As BSelect is dragged through the collection, the current range is highlighted. When BSelect is released, the anchor does not move, and all the elements within the current range are selected. 

Range selection allows the user to select multiple contiguous elements of a collection by pressing and dragging BSelect. 

Required 

l: 

In a collection that uses range selection, pressing BSelect on an currently selected element should not cause all other elements in the selection set to be deselected. If BSelect is released before the drag threshold is exceeded, then, at that point, all other elements should be deselected and the element under the pointer should remain selected. If BSelect Motion exceeds the drag threshold, then no element should be deselected and a drag operation should begin.

Required 

4-6: 

In a text-like collection that uses range selection, the anchor point is the text pointer position when BSelect is pressed, and the current range consists of all elements between the anchor point and the current text pointer position. 

In text-like collections, elements are ordered linearly, and a text pointer is always considered to be between elements at a point near the actual pointer position. 

Required 

4-7: 

In a graphics-like or list-like collection that uses a marquee to indicate the range of a range selection, the current range consists of those elements that fall completely within the marquee. If there is an anchor element, the marquee is always made large enough to enclose it completely. Otherwise, an anchor point is used and is the point at which BSelect was pressed; the anchor point determines one corner of the marquee. If the collection is not arranged as a list or matrix, the marquee is extended to the pointer position. If the collection is arranged as a list or matrix, the marquee is either extended to completely enclose the element under the pointer or extended to the pointer position. Clicking BSelect on a selectable element makes it an anchor element, selects it, and deselects all other elements. 

A marquee, or highlighted rectangle, is often used to indicate the range of a selection in graphics-like and list-like collections. 

Required 

4-8: 

This item has been deleted. 

Required 

m: 

If your application contains collections that follow the range selection model, BAdjust is supported and behaves just like Shift+BSelect, when the BTransfer button is currently configured to behave as BAdjust. 

On a three-button mouse, button 2 is typically used for the BTransfer function. However, in a Common Desktop Environment environment, the user may change an environment setting indicating that mouse button 2 should be used for the BAdjust function instead. BAdjust can be used to extend the selection set in the same manner as Shift+BSelect. 

Required 

n: 

In a collection that uses range selection, when the user presses Shift+BSelect, or BAdjust, the anchor remains unchanged, and an extended range for the selection is determined, based on one of the extension models. 

Optional 

 

Reselect 

The extended range is determined by the anchor and the current pointer position, in exactly the same manner as when the selection was initially made. 

Optional 

 

Enlarge Only 

The selection can only be enlarged. The extended range is determined by the anchor and the current pointer position, but then is enlarged to include the current selection. 

Optional 

 

Balance Beam 

A balance point is defined at the midpoint of the current selection. When the user presses Shift+BSelect or BAdjust on the opposite side of the balance point from the anchor, this model works exactly like the reselect model. When the user presses Shift+BSelect, BAdjust, or starts a navigation action modified by Shift on the same side of the balance point as the anchor, this model moves the anchor to the opposite end of the selection and then works exactly like the reselect model. 

 

 

 

 

 

When the user releases BSelect or BAdjust, the anchor does not move, all the elements within the extended range are selected, and all the elements outside of it are deselected. 

Mouse-Based Discontiguous Selection

 

n/a 

 

 

 

Required 

4-9: 

In a collection that uses discontiguous selection, the behavior of BSelect is exactly the same as in the range selection model. After the user sets the anchor with BSelect, Shift+BSelect works exactly as in the range selection model. 

Discontiguous selection is an extension of range selection that allows the user to select multiple discontiguous ranges of elements. 

Required 

4-10: 

In a collection that uses discontiguous selection, when the current selection is not empty and the user clicks Control+BSelect, the anchor and location cursor move to that point. If the current selection is not empty and the user clicks Control+BSelect on an element, the selection state of that element is toggled, and that element becomes the anchor element. 

In discontiguous selection, Control+BSelect Click provides a convenient means of moving the anchor and toggling the selection state of the element under the pointer. 

Required 

4-11: 

In a collection that uses discontiguous selection, Control+BSelect Motion toggles the selection state of a range of elements. The range itself is determined exactly as for BSelect Motion. Releasing Control+BSelect toggles the selection state of the elements in the range according to one of two models: 

 

 

 

 

 

Anchor Toggle 

Toggling is based on an anchor element. If the range is anchored by a point, and is not empty, the anchor element is set to the element within the range that is nearest to the anchor point. Toggling sets the selection state of all elements in the range to the inverse of the initial state of the anchor element. 

 

 

 

 

 

Full Toggle 

The selection state of each element in the extended range is toggled. 

 

 

 

 

 

In discontiguous selection, Control+BSelect provides a convenient means of toggling the selection state of elements in a range. 

Required 

4-12: 

In a collection that uses discontiguous selection, after Control+BSelect toggles a selection, Shift+BSelect or Control+Shift+BSelect extends the range of toggled elements. The extended range is determined in exactly the same way as when Shift BSelect is used to extend a range selection. When the user releases Control+Shift+BSelect, the selection state of elements added to the range is determined by the toggle model in use (either Anchor Toggle or Full Toggle). If elements are removed from the range, they either revert to their state prior to the last use of Control+BSelect or change to the state opposite that of the elements remaining within the extended range.  

Shift+BSelect and Control+Shift+BSelect provide a convenient means of extending the range of toggled elements. 

Required 

o: 

In a collection that uses discontiguous selection, BAdjust can be used to extend the range of a discontiguous selection. The extended range is determined in exactly the same way as when BAdjust is used to extend a range selection. 

On a three-button mouse, mouse button 2 is typically used for the BTransfer function. However, in a Common Desktop Environment environment, the user may change an environment setting indicating that mouse button 2 should be used for the BAdjust function instead. BAdjust can be used to extend the selection set in the same manner as Shift+BSelect. 

Keyboard Selection

 

n/a 

 

 

 

Required 

4-13: 

The selection models support keyboard selection modes according to the following rules:  

  • Single selection supports only add mode.

  • Browse selection supports only normal mode.

  • Multiple selection supports only add mode.

  • Range selection supports normal mode. If it also supports add mode, normal mode is the default.

  • Discontiguous selection supports both normal mode and add mode. Normal mode is the default.

Selection must be available from the keyboard. In normal mode, used for making simple contiguous selections from the keyboard, the location cursor is never disjoint from the current selection. In add mode, used for making more complex and possibly disjoint selections, the location cursor can move independently of the current selection. 

Required 

4-14: 

If a collection supports both normal mode and add mode, Shift+F8 switches from one mode to the other. Mouse-based selection does not change when the keyboard selection mode changes. In editable components, add mode is a temporary mode that is exited when the user performs an operation on the selection or deselects the selection.  

Shift+F8 provides a convenient means of switching between normal mode and add mode. 

Keyboard-Based Single Selection

 

n/a 

 

 

 

Required 

4-15: 

In a collection that uses single selection, the navigation keys move the location cursor independently from the selected element. If the user presses the Select key or the Spacebar on an unselected element, the element with the location cursor is selected, and any other selection in the collection is deselected.  

Single selection supports only add mode. Pressing the Select key or the Spacebar is similar to clicking BSelect. 

Keyboard-Based Browse Selection

 

n/a 

 

 

 

Required 

4-16: 

In a collection that uses browse selection, the navigation keys move the location cursor and select the cursored element, deselecting any other element. If the application has deselected all elements or if the cursor is left disjoint from the selection, the Select key or the Spacebar selects the cursored element and deselects any other element. 

Browse selection supports only normal mode. A navigation operation is similar to dragging BSelect. 

Keyboard-Based Multiple Selection

 

n/a 

 

 

 

Required 

4-17: 

In a collection that uses multiple selection, the navigation keys move the location cursor independently from the current selection. The Select key or the Spacebar on an unselected element adds the element to the current selection. Pressing the Select key or the Spacebar on a selected element removes the element from the current selection. 

Multiple selection supports only add mode. Pressing the Select key or the Spacebar is similar to clicking BSelect. 

Keyboard-Based Range Selection

 

n/a 

 

 

 

Required 

4-18: 

In a collection that uses range selection and is in normal mode, the navigation keys move the location cursor and deselect the current selection. If the cursor is on an element, it is selected. The anchor moves with the location cursor. 

Text-like collections can use a different model in which the navigation keys leave the anchor at its current location, except that, if the current selection is not empty, it is deselected and the anchor is moved to the location of the cursor prior to navigation.  

Range selection supports normal mode, and, if the collection also supports add mode, normal mode is the default. 

Required 

4-19: 

In a collection that uses range selection, whether in normal mode or add mode, the Select key or Spacebar (except in a text component) moves the anchor to the cursor, deselects the current selection, and, if the cursor is on an element, selects the element. Unless the anchor is on a deselected item, Shift+Select or Shift+Spacebar (except in text) extends the selection from the anchor to the cursor, based on the extension model used by Shift+BSelect (Reselect, Enlarge Only, or Balance Beam.  

In range selection, pressing the Select key or Spacebar is similar to clicking BSelect, and pressing Shift+Select or Shift+Spacebar extends the range as with Shift+BSelect. 

Required 

4-20: 

In a collection that uses range selection and is in normal mode, using Shift in conjunction with the navigation keys extends the selection, based on the extension model used by Shift+BSelect. If the current selection is empty, the anchor is first moved to the cursor. The cursor is then moved according to the navigation keys, and the selection is extended based on the extension model used by Shift+BSelect.  

In range selection, shifted navigation extends the selection in a similar manner to dragging Shift+BSelect. 

Required 

4-21: 

In a collection that uses range selection and is in add mode, the navigation keys move the location cursor but leave the anchor unchanged. Shifted navigation moves the location cursor according to the navigation keys, and the selection is extended based on the extension model used by Shift+BSelect.  

Shifted navigation in add mode is similar to shifted navigation in normal mode, except that when the selection is empty the anchor does not move to the cursor prior to navigation. 

Keyboard-Based Discontiguous Selection

 

n/a 

 

 

 

Required 

4-22: 

In a collection that uses discontiguous selection and is in normal mode, all keyboard operations have the same effect as in the range selection model.  

Normal mode does not permit multiple discontiguous selections. 

Required 

4-23: 

In a collection that uses discontiguous selection and is in add mode, the Select key or Spacebar moves the anchor to the location cursor and initiates toggling. If the cursor is on an element, the selection state of that element is toggled, but the selection state of all other elements remains unchanged. Shift+Select or Shift+Spacebar and shifted navigation operations extend the selection between the anchor and the location cursor, based on the toggle mechanism used by Control+BSelect (Anchor Toggle or Full Toggle).  

Add mode permits use of the keyboard to make multiple discontiguous selections. 

Canceling a Selection

 

n/a 

 

 

 

Required 

4-24: 

Your application uses the Cancel key to cancel or undo any incomplete motion operation used for selection. Once the user presses the Cancel key to cancel a motion operation, the application ignores subsequent key and button releases until after all buttons and keys are released. Pressing the Cancel key while extending or toggling leaves the selection state of all elements as they were prior to the button press.  

The Cancel key allows the user to cancel an incomplete selection operation quickly and consistently. 

Autoscrolling and Selection

 

n/a 

 

 

 

Required 

4-25: 

If the user drags the pointer out of a scrollable collection during a motion-based selection operation, autoscrolling is used to scroll the collection in the direction of the pointer. If the user presses the Cancel key with BSelect pressed, the selection operation is canceled.  

Autoscrolling provides a convenient means of extending a selection to elements outside the viewport of a scrollable collection. 

Selecting and Deselecting All Elements

 

n/a 

 

 

 

Required 

4-26: 

In a collection that uses multiple, range, or discontiguous selection, Control+/ selects all the elements in the collection, places the anchor at the beginning of the collection, and leaves the location cursor at its previous position.  

Control+/ provides the user with a convenient means of selecting all of the objects in a collection. 

Required 

4-27: 

In a collection that is in add mode, Control+\ deselects all the elements in the collection. In a collection that is in normal mode, Control+\ deselects all the elements in the collection, except the element with the location cursor if the location cursor is being displayed. In either mode, Control+\ leaves the location cursor at its current position and moves the anchor to the location cursor.  

Control+\ allows the user to deselect all of the selected objects quickly and uniformly. 

Using Mnemonics for Elements

 

n/a 

 

 

 

Required 

4-28: 

If your application supports mnemonics associated with selectable elements, typing a mnemonic while the collection has the keyboard focus is equivalent to moving the location cursor to the element and pressing the Select key or Spacebar.  

Mnemonics within a collection of selectable elements provide an additional selection method. 

Selection Actions

 

n/a 

 

 

 

Required 

4-29: 

When the keyboard focus policy is explicit, the destination component is the editable component that last had the keyboard focus. When the keyboard focus policy is implicit, the destination component is the editable component that last received mouse button or keyboard input.  

The destination component is used to identify the component on which certain operations, primarily data transfer operations, act. There is only one destination component at a time. 

Required 

4-30: 

If the keyboard focus is in a component (or a pop-up menu of a component) that supports selections, operations that act on a selection act on the selection in that component.  

A selection operation acts on the component that has focus, if that component supports selections. 

Required 

4-31: 

If the keyboard focus is in a component (or a pop-up menu of a component) that supports some operation that does not act on a selection, invoking the operation acts on that component.  

An operation that does not act on a selection acts on the component that has focus, if that component supports the operation. 

Required 

4-32: 

Inserting or pasting elements into a selection, except for a primary transfer operation at the bounds of the primary selection, first deletes the selection if pending delete is enabled.  

Pending delete controls the conditions under which the selection is deleted. It is enabled by default. 

Required 

4-33: 

In normal mode, inserting or pasting elements disjoint from the selection also deselects the selection, except for primary transfer operations whose source and destination are in the same collection. In add mode, the selection is not deselected.  

In add mode, a transfer operation that is disjoint from the selection does not affect the selection. 

Required 

4-34: 

In editable list-like and graphics-like collections, Delete deletes the selected elements.  

Delete provides a consistent means of deleting the selection. 

Required 

4-35: 

In editable text-like collections, Delete and Backspace behave as follows:  

  • If the selection is not empty and the control is in normal mode, the selection is deleted.

  • If the selection is not empty, the control is in add mode, and the cursor is not disjoint from the selection, the selection is deleted.

  • If the selection is not empty and the control is in add mode, but the cursor is disjoint from the selection, Delete deletes one character forward, and Backspace deletes one character backward.

  • If the selection is empty, Delete deletes one character forward, and Backspace deletes one character backward.

In text, Delete and Backspace provide a convenient way to delete the entire selection or single characters. 

Transfer Models

 

n/a 

 

 

 

Required 

4-36: 

If the move, copy, or link operation the user requests is not available, the transfer operation fails. 

Three transfer operations are generally available: copy, move, and link. The user requests one of these operations by pressing the buttons or keys appropriate for the type of transfer. In general, for mouse-based operations, the modifier Control forces a copy, Shift forces a move, and Control+Shift forces a link. However, any requested transfer operation must fail if that operation is not available. 

Required 

4-37: 

If a collection does not have a fixed insertion point or keep elements ordered in a specific way, the insertion position for transferred data is determined as follows: 

  • For BTransfer-based (or BSelect) primary and drag transfer operations, excepted as noted below for text collections, the insertion position is the position at which the user releases BTransfer (or BSelect).

  • In a text-like collection, when the user drops selected text, the insertion position is the position at which the user releases BTransfer (or Bselect). When the user drops an icon, the insertion position is the text cursor and the data is pasted before it.

  • In a list-like collection, the insertion position for other transfer operations is the element with the location cursor, and the data is pasted before it.

The insertion position is the position in the destination where transferred data is placed. Some mouse-based transfer operations place data at the pointer position if possible. Other operations, including keyboard-based transfer, generally place the data at the location cursor. 

Required 

p: 

Your application supports the use of mouse button 1 to perform drag-and-drop operations. 

In Motif 1.2, drag and drop is typically performed using button 2 on a three-button mouse (BTransfer). However, in the Common Desktop Environment environment, mouse button 1 (BSelect) should be supported for drag and drop to support mouse usage compatible with other graphical user interface (GUI) environments. A drag can be initiated with either mouse button 1 or mouse button 2. 

Required 

q: 

When button 2 of a three-button mouse is configured to operate as BAdjust, your application does not perform any BTransfer operations when clicking mouse button 2. 

On a three-button mouse, button 2 is typically used for the BTransfer (or BSelect) function. However, in a Common Desktop Environment environment, the user can change an environment setting indicating that mouse button 2 should be used for the BAdjust function instead. When this is the case, BAdjust click should not result in the transfer of any data. 

Required 

r: 

BSelect should always initiate a drag if the drag is started on a selected item. The drag starts once the drag threshold has been reached. This is true for text regions, scrolling lists, and other similar elements. 

Clipboard Transfer

 

n/a 

 

 

 

Required 

4-38: 

Keyboard-based clipboard selection actions are available in every editable collection in your application. 

Clipboard selection actions need to be available from the keyboard. 

Required 

4-39: 

Your application uses the Cut key (or Shift+Delete) and the Cut entry on the Edit menu to cut the selected elements from an editable component to the clipboard.  

The Cut key (or Shift+Delete) and the Cut entry on the Edit menu offer a consistent means of cutting the selection to the clipboard from the keyboard. 

Required 

4-40: 

Your application uses the Copy key (or Control+Insert) and the Copy entry on the Edit menu to copy the selected elements to the clipboard.  

The Copy key or (Control+Insert) and the Copy entry on the Edit menu offer a consistent means of copying the selection to the clipboard from the keyboard. 

Required 

4-41: 

Your application uses the Paste key (or Shift+Insert) to paste the contents of the clipboard into an editable component.  

The Paste key (or Shift+Insert) offers a consistent way of pasting the contents of the clipboard from the keyboard. 

Required 

4-42: 

If Paste or Paste Link is invoked using a component's pop-up menu, the data is pasted at the insertion position of the component. However, if the pop-up menu is popped up over a selection, the selection is first deleted, even if pending delete is disabled, and the pasted data replaces it, if possible.  

Popping up a pop-up menu over a selection indicates that a Paste or Paste Link operation should replace the selection. 

Required 

4-43: 

If Paste or Paste Link is invoked from the Edit menu or by a keyboard operation, and the insertion position in the target component is not disjoint from a selection, the pasted data replaces the selection contents if pending delete is enabled.  

Pending delete determines whether the selection is deleted when the insertion position is not disjoint from the selection and Paste or Paste Link is invoked from the Edit menu or by a keyboard operation. 

Primary Transfer

 

n/a 

 

 

 

Required 

4-44: 

In an editable collection, BTransfer Click, Control+BTransfer Click, Alt, Copy, and Control+Alt+Insert copy the primary selection to the insertion position. (Note that the insertion position is usually different for mouse and keyboard operations.)  

These operations provide a convenient way for the user to force a copy operation. 

Required 

4-45: 

In an editable collection, Shift+BTransfer Click, Alt+Cut, and Alt+Shift+Delete move the primary selection to the insertion position. (Note that the insertion position is usually different for mouse and keyboard operations.)  

These operations provide a convenient way for the user to force a move operation. 

Required 

4-46: 

In an editable collection, Control+Shift+BTransfer Click places a link to the primary selection at the insertion position.  

Control+Shift+BTransfer provides a convenient way for the user to force a link operation. 

Required 

4-47: 

A Primary Move moves the primary selection as well as the elements selected; that is, the element moved to the destination becomes selected as the primary selection. Primary Copy and Primary Link do not select transferred data at the destination.  

This rule provides the expected treatment of the selection in a move, copy, and link operation. 

Quick Transfer

 

n/a 

 

 

 

Required 

4-48: 

All text components support quick transfer.  

Quick transfer is used to make a temporary selection and then immediately move, copy, or link that selection to the insertion position of the destination component. In text, quick transfer provides a convenient way to move, copy, or link text without disturbing the primary selection. 

Required 

4-49: 

If a component supports quick transfer, Alt+BTransfer Motion or Control+Alt+BTransfer Motion temporarily selects elements in the specified range and, on release, copies them to the insertion position of the destination component.  

These operations provide a convenient way to perform a quick copy. 

Required 

4-50: 

If a component supports quick transfer, Alt+Shift+BTransfer Motion temporarily selects elements in the specified range and, on release, moves them to the insertion position of the destination component.  

This operation provides a convenient way to perform a quick cut. 

Required 

4-51: 

If a component supports quick transfer, Control+Alt+Shift+BTransfer Motion temporarily selects elements in the specified range and, on release, places a link to them at the insertion position of the destination component.  

This operation provides a convenient way to perform a quick link. 

Required 

4-52: 

Quick transfer does not disturb the primary selection or affect the clipboard, except when the destination of the transfer is within or on the boundaries of the primary selection and pending delete is enabled. In this case, quick transfer deletes the contents of the primary selection, leaving an empty primary selection, before pasting the transferred elements.  

Quick transfer is a secondary selection mechanism, so it cannot disrupt the primary selection. When the destination of the transfer is in the primary selection, quick transfer replaces the primary selection with the secondary selection. 

Required 

4-53: 

With quick transfer, the range of the temporary selection is determined by using the same model as when BSelect Motion determines the range of a primary selection.  

This rule provides consistency between primary selection and quick transfer operations. 

Required 

4-54: 

If the user drags the pointer out of a scrollable collection while making the temporary selection, autoscrolling is used to scroll the collection in the direction of the pointer. If the user releases BTransfer with the pointer outside of the collection, or if the user presses the Cancel key with BTransfer pressed, the highlighting is removed and a transfer is not performed.  

Autoscrolling provides a convenient means of extending a temporary selection to elements outside the viewport of a scrollable collection. 

Drag Transfer

 

n/a 

 

 

 

Required 

4-55: 

In a collection that supports selection, Shift+BTransfer Release or Shift+BSelect Release forces a drag move operation. If a move is not possible, the operation fails.  

This mechanism offers a convenient way for the user to force a move operation. 

Required 

4-56: 

In a collection that supports selection, Control+BTransfer Release or Shift+BSelect Release forces a drag copy operation. If a copy is not possible, the operation fails.  

This mechanism offers a convenient way for the user to force a copy operation. 

Required 

4-57: 

In a collection that supports selection, Control+Shift+BTransfer Release pr Shift+BSelect Release forces a drag link operation. If a link is not possible, the operation fails.  

This mechanism offers a convenient way for the user to force a link operation. 

Required 

4-58: 

When a drag move operation moves a selection within the same component, the selection moves along with the elements selected.  

In other words, when selected elements are moved with a drag operation, they should stay selected after the move. This mechanism offers a convenient way to move the selection within a component. 

Required 

4-59: 

In text-like collections, initiating a drag within a selected region drags the entire text selection.  

To be consistent, drag-and-drop actions need to operate on the entire selection. 

Required 

4-60: 

In list-like and graphics-like collections, initiating a drag with either BSelect or BTransfer on a selected element drags the entire selection.  

To be consistent, drag-and-drop actions need to operate on the entire selection. 

Required 

4-61: 

In list-like and graphics-like collections, initiating a drag with BTransfer or BSelect on an unselected element drags just that element and leaves the selection unaffected.  

Unselected elements can be dragged without affecting the selection. 

Required 

4-62: 

When a drag is initiated in an unselected region and the pointer is over two possible draggable elements, the drag uses the draggable element highest in the stacking order. 

This guideline ensures the consistency of drag operations. 

Required 

4-63: 

When your application starts a drag operation, the pointer is replaced with a drag icon.  

A drag icon provides visual feedback that a drag operation is in progress. 

Required 

4-64: 

All drag icons used by your application include a source indicator.  

A source indicator gives a visual representation of the elements being dragged. 

Required 

4-65: 

Pressing the Cancel key ends a drag-and-drop operation by canceling the drag in progress.  

The Cancel key provides a consistent way for the user to cancel a drag operation. 

Required 

4-66: 

Releasing BTransfer ends a drag-and-drop operation. 

Releasing BTransfer offers a consistent means of ending a drag operation. 

Required 

4-67: 

When BTransfer (or BSelect) is released, the drop operation ordinarily occurs at the location of the hot spot of the drag icon pointer and into the highest drop zone in the stacking order. However, if a drop occurs within a selection and pending delete is enabled, the transferred data replaces the contents of the entire selection.  

This rule provides consistency in the treatment of mouse-based transfer operations. 

Required 

4-68: 

After a successful transfer, the data is placed in the drop zone, and any transfer icon used by your application is removed.  

A transfer icon can be used to represent the type of data being transferred during a drop operation. A successful drop operation results in the transfer of data. 

Required 

4-69: 

After a failed transfer, the data remains at the drag source and is not placed in the drop zone. Any transfer icon used by your application is removed.  

A failed drop operation does not result in the transfer of data. 

Recommended 

s: 

In a collection that supports selection, if BTransfer Motion (or BSelect Motion) results in the start of a drag operation, feedback is presented to the user that indicates that a copy, move, or link operation is in progress. Whether the operation is a copy, move, or link depends on the type of object created at the drop zone and whether the source object is removed. 

Although, typically, an unmodified drag results in a move operation, depending on the location of the source object and the target drop zone, the drag may in fact result in a copy or link operation. For example, dragging an icon representing an attachment to a mail message typically results in a copy of the attachment being created as opposed to the original being removed from the mail message. Any feedback presented should incorporate use of a drag icon that portrays the source object being manipulated. 

Recommended 

t: 

In a collection that supports selection, if Control+BTransfer Motion or Control+BSelect Motion results in the start of a drag operation, feedback is presented to the user that indicates that a copy operation is in progress. 

The feedback presented should incorporate use of a drag icon that portrays the source object being copied. 

Recommended 

u: 

In a collection that supports selection, if Control+Shift+BTransfer Motion or Control+Shift+BSelect Motion results in the start of a drag operation, feedback is presented to the user that indicates that a link operation is in progress. 

The feedback presented should incorporate use of a drag icon that portrays the source object being linked. 

Recommended 

v: 

In a collection that supports copy, move, or link operations that can be performed by dragging, the feedback presented to the user during the drag operation indicates whether a single object or multiple objects are being manipulated. 

Feedback provided during the drag operation should ensure that the user feels confident that the desired set of objects is being dragged. The drag icon used for multiobject drag operations should integrate the feedback used to indicate whether the operation is a move, copy, or link. 

Optional 

w: 

If your application allows the user to paste data into its data pane, it allows the user to drag and drop files from the File Manager into the data pane. 

The user should be able to drag and drop files into application data panes. The result should be the inclusion of some element of the file, or the display of an error message indicating that the file selected cannot be incorporated into the application's data. Drag transfers that are accepted can result in a number of different responses from your application: 1) the icon image for the file might be inserted at the drop point; 2) the application might perform some activity using the data contained within the file as its input; 3) the data contained within the file might be inserted at the drop point; or 4) the name of the file might be inserted at the drop point.