If neither of the Shift and Ctrl keys is pressed, clicking on an object will toggle its selected status. Objects which are selected are drawn with a blinking boundary. These objects are acted on by many of the button commands, so that object selection in an important part of Xic operation. The number of selected objects, if any, is displayed in the status area below the layer table. This information is useful, as selected objects can be off-screen, leading to unintended consequences.
The default selection operation is described here. The selection behavior can be modified from the Selection Control Panel brought up by the selcp button in the top button menu. Only objects on layers that are both visible and selectable (as shown in the layer table) can be selected.
Clicking on a single object will toggle the selection status of the object. If the point where the object was clicked is also over a subcell, the object and not the subcell will be selected or deselected; subcells are affected only if there is no other geometry at the selection point.
It is impossible to select an object or subcell with mouse operations whose boundary is completely invisible in all display windows. Such objects can be deselected, however.
When clicking on an intersecting point of several objects, there are two types of logic available. In the default logic, when clicking on the intersection area of several unselected objects, only one of the objects is selected, and repeatedly clicking in the same spot will selected a different object, deselecting the previous selection if any. Thus, one can cycle through the candidates and select only the one of interest. If two or more of the objects are already selected, only one of the selected objects will be deselected, and no new object will be selected. If exactly one object is selected, it will be deselected, and the ``next'' object will be selected. If there is no ``next'' object, then there will be no new selection. The ``next'' object is subject to the ordering of layers in the layer table (top to bottom) and database ordering (sorted descending in the Y value and ascending in the X value of the upper left corner of the object's bounding box).
In the ``legacy'' logic, which was used in releases through 2.5.63, clicking on an intersecting point of several unselected objects will select them all. However, clicking on the intersection area of several selected objects will not deselect them all. The logic in this case is similar to the default logic. If more that one object is selected, only one of the objects will be deselected per click in an intersecting area. When only one of the objects remains selected, the next click will deselect the selected object, and select the other objects.
If the variable NoAltSelection is set, Xic will use the legacy logic.
Clicking (not dragging) on an empty part of the drawing will deselect the single object at the head of the selection list, if any, which is the object most recently selected. This applies when no command is active, not when selections are performed within commands.
If neither of the Shift or Ctrl keys is pressed, and button 1 is pressed, dragged, and released, the selection status of objects that intersect the defined rectangle is toggled. This is an ``area select''. Unlike clicking (or ``point select''), the selection status of all affected objects is toggled by an area select. During the drag, the rectangle defined for the area select is ghost drawn. In area select, qualifying instances are always selected or deselected, whether or not other geometry is present.
A special case applies in both point and area selection, when only physical cell instances are selectable, and three or more instances would be selected. The Select Instances pop-up appears, which provides a listing of the selectable instances, along with colored ``yes/no'' text indicating the present selected state of each instance. The state can be toggled by clicking on the colored text. This is a useful feature for designs containing a large number of overlapping cell instances. The same pop-up may appear in other contexts when instances are being chosen for some operation. In this case, the nomenclature is slightly different (``Choose'' instead of ``Select''). In both cases, the pop-up is modal, meaning that most interface objects other than the pop-up are locked while the pop-up is visible.
In either point or area select, if the instance bounding box is not visible in the window, the instance will not be selected, which may prevent accidents.
In electrical mode with point selection, objects are acted upon hierarchically. Wires have the highest precedence, followed by labels, instances, and boxes. Only the clicked-on objects with the highest precedence are acted upon, if there are multiple objects clicked on. For example, clicking on a wire over a subcircuit will select or deselect the wire, but ignore the subcircuit. With drag selection, all qualifying objects will be acted upon.
When the selection operation is completed, the status of the modifier keys determines how the chosen objects are processed. If neither of Shift or Ctrl is pressed, the action is as described. if Shift is pressed (but not Ctrl), any unselected objects are selected. If Ctrl is pressed (but not Shift) any selected objects are deselected. If both Shift and Ctrl are held, the selection status of each object is reversed. This is the default for area selections, but not point selections.
The desel button can be used to deselect all selected objects. This acts on all selected objects, whether or not they are on the current layer. The !select command is another mechanism whereby objects can be selected.