XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
NAME
XmComboBox - The Combo Box widget class
SYNOPSIS
#include <ComboBox.h>
Depending on your system's configuration the place of this
include file may vary. In doubt, contact your local system
administrator. Or run in circles and shout.
DESCRIPTION
The ComboBox widget allows the user to select elements
from a list of choices, and enter their own values in a
text widget. To conserve screen space, the list of choices
is shown only when the user selects the down arrow button.
The choices may then be selected from this list. The list
will automatically by removed when the user selects an
item in the list. When the list is removed, the item that
was selected will be placed in the text widget. Typing the
escape key when the list is up, cancels the list popup.
Classes
ComboBox inherits behaviour and resources from Core and
Composite, Constraint and XmManager classes.
The class pointer is xmComboBoxWidgetClass.
The class name is XmComboBox.
New Resources
The following table defines a set of widget resources used
by the programmer to specify data. The programmer can also
set the resource values for the inherited classes to set
attributes for this widget. To reference a resource by
name or by class in a .Xdefaults file, remove the XmN or
XmC prefix and use the remaining letters. To specify one
of the defined values for a resource in a .Xdefaults file,
remove the Xm prefix and use the remaining letters (in
either lowercase or uppercase, but include any underscores
between words). The codes in the access column indicate if
the given resource can be set at creation time (C), set by
using XtSetValues (S), retrieved by using XtGetValues (G),
or is not applicable (N/A).
XmComboBox Resource Set
-----------------------------------------------------------------
Name Default Access
Class Type
-----------------------------------------------------------------
XmNactivateCallback NULL C
XmCCallback XtCallbackList
-----------------------------------------------------------------
Version 1.31 20 March 1995 1
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNalignment XmALIGNMENT_CENTER CSG
XmCAlignment unsigned char
-----------------------------------------------------------------
XmNarrowSpacingOn False CSG
XmNCArrowSpacingOn Boolean
-----------------------------------------------------------------
XmNautomaticSelection False CSG
XmCAutomaticSelection Boolean
-----------------------------------------------------------------
XmNblinkRate 500 CSG
XmCBlinkRate int
-----------------------------------------------------------------
XmNcolumns dynamic CSG
XmCColumns short
-----------------------------------------------------------------
XmNcursorPosition 0 CSG
XmCCursorPosition XmTextPosition
-----------------------------------------------------------------
XmNcursorPositionVisible True CSG
XmCCursorPositionVisible Boolean
-----------------------------------------------------------------
XmNdefaultActionCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNdropDownCallback NULL CSG
XmCDropDownCallback XtCallbackList
-----------------------------------------------------------------
XmNdropDownCursor center_ptr CSG
XmCDropDownCursor Cursor
-----------------------------------------------------------------
XmNdropDownOffset dynamic CSG
XmCDropDownOffset Position
-----------------------------------------------------------------
XmNeditable False CG
XmCEditable Boolean
-----------------------------------------------------------------
XmNfontList dynamic CSG
XmCFontList XmFontList
-----------------------------------------------------------------
XmNitemCount 0 CSG
XmCItemCount int
-----------------------------------------------------------------
XmNitems NULL CSG
XmCItems XmStringTable
-----------------------------------------------------------------
XmNlabelFontList dynamic CSG
XmCLabelFontList XmFontList
-----------------------------------------------------------------
XmNlabelInsensitivePixmap XmUNSPECIFIED_PIXMAP CSG
XmCLabelInsensitivePixmap Pixmap
-----------------------------------------------------------------
XmNlabelMarginBottom 0 CSG
Version 1.31 20 March 1995 2
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmCLabelMarginBottom Dimension
-----------------------------------------------------------------
XmNlabelMarginHeight 2 CSG
XmCLabelMarginHeight Dimension
-----------------------------------------------------------------
XmNlabelMarginLeft 0 CSG
XmCLabelMarginLeft Dimension
-----------------------------------------------------------------
XmNlabelMarginRight 0 CSG
XmCLabelMarginRight Dimension
-----------------------------------------------------------------
XmNlabelMarginTop 0 CSG
XmCLabelMarginTop Dimension
-----------------------------------------------------------------
XmNlabelMarginWidth 0 CSG
XmCLabelMarginWidth Dimension
-----------------------------------------------------------------
XmNlabelPixmap XmUNSPECIFIED_PIXMAP CSG
XmCLabelPixmap Pixmap
-----------------------------------------------------------------
XmNlabelString dynamic CSG
XmCXmString XmString
-----------------------------------------------------------------
XmNlabelType XmSTRING CSG
XmCLabelType unsigned char
-----------------------------------------------------------------
XmNlistMarginHeight 0 CSG
XmCListMarginHeight Dimension
-----------------------------------------------------------------
XmNlistMarginWidth 0 CSG
XmCListMarginWidth Dimension
-----------------------------------------------------------------
XmNlistSizePolicy XmVARIABLE CG
XmCListSizePolicy unsigned char
-----------------------------------------------------------------
XmNlistSpacing 0 CSG
XmCListSpacing Dimension
-----------------------------------------------------------------
XmNmarginHeight 5 CSG
XmCMarginHeight Dimension
-----------------------------------------------------------------
XmNmarginWidth 5 CSG
XmCMarginWidth Dimension
-----------------------------------------------------------------
XmNmaxLength largest integer CSG
XmCMaxLength int
-----------------------------------------------------------------
XmNmodifyVerifyCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNmotionVerifyCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
Version 1.31 20 March 1995 3
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNpersistentDropDown False CSG
XmCPersistentDropDown Boolean
-----------------------------------------------------------------
XmNscrollBarDisplayPolicy XmAS_NEEDED CSG
XmCScrollBarDisplayPolicy unsigned char
-----------------------------------------------------------------
XmNselectionCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNselectionPolicy XmBROWSE_SELECT CG
XmCSelectionPolicy unsigned char
-----------------------------------------------------------------
XmNselectThreshold 5 CSG
XmCSelectThreshold int
-----------------------------------------------------------------
XmNshowLabel False CG
XmCShowLabel Boolean
-----------------------------------------------------------------
XmNsorted False CSG
XmCSorted Boolean
-----------------------------------------------------------------
XmNsortingCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNsquareArrow False CSG
XmCSquareArrow Boolean
-----------------------------------------------------------------
XmNstaticList False CSG
XmCStaticList Boolean
-----------------------------------------------------------------
XmNstringDirection dynamic CSG
XmCStringDirection XmStringDirection
-----------------------------------------------------------------
XmNtwmHandlingOn False CSG
XmCTwmHandlingOn Boolean
-----------------------------------------------------------------
XmNtopItemPostion 1 G
XmCTopItemPostion int
-----------------------------------------------------------------
XmNunselectionCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNvalue "" CSG
XmCValue String
-----------------------------------------------------------------
XmNvalueChangedCallback NULL CSG
XmCCallback XtCallbackList
-----------------------------------------------------------------
XmNvisibleItemCount 8 CSG
XmCVisibleItemCount Int
-----------------------------------------------------------------
XmNactivateCallback
Specifies a list of callbacks to be called when the
Version 1.31 20 March 1995 4
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
user presses either the key "Enter" or "Activate".
The type of the structure passed to this callback
is XmAnyCallbackStruct and the reason is
XmCR_ACTIVATE.
XmNalignment
The alignment (left to right) for the label's text
or pixmap. Possible values are XmALIGN-
MENT_BEGINNING, XmALIGNMENT_CENTER, and XmALIGN-
MENT_END.
XmNautomaticSelection
Indicates whether the XmNselectionCallback is
invoked each time the user moves into a new item if
XmNautomaticSelection is True and the selection
mode is XmBROWSE_SELECT. If set to False the XmNs-
electionCallback is not invoked until the user
releases the mouse button.
XmNarrowSpacingOn
Indicates whether a gap is displayed between the
arrow button and the text input field if this
resource is set to True and XmNeditable is also set
to True. If this resource is set to False the
combo box widget will never display a gab between
the arrow button and the text area, irrespective of
the setting of XmNeditable. Note that setting
XmNarrowSpacingOn to False doesn not conform to
common GUI styles. And it prevents the user from
easily recognizing whether the combo box is
editable or not.
XmNblinkRate
The time in milliseconds that the cursor spends
being visible or invisible. A value of 0 prevents
the cursor from blinking.
XmNborderWidth
That's no new resource but is already introduced in
the core class. This class overrides the default
value and sets it to zero. You can however override
it again if you're dissatisfied with the new
default setting.
XmNcolumns
Specifies the initial width of the input field mea-
sured in character spaces. The default value
depends on the value of the width of the combo box.
XmNcursorPosition
Indicates the position in the text where the insert
cursor is to be located. Its position is the offset
of characters and it starts with offset 0 at the
beginning of the text.
Version 1.31 20 March 1995 5
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNcursorPositionVisible
Flags whether the insert cursor position is marked
by a blinking cursor.
XmNdefaultActionCallback
Specifies a list of callbacks that is called every
time an item is double clicked. The reason is
XmCR_DEFAULT_ACTION. Please remember that you
can't use this callback if XmNstaticList is False
because the list is immediatly hidden after the
user selected an item from the list. Thus the user
can't double click on any item within the list.
XmNdropDownCallback
This is a list of callbacks to be called when the
list is about to be shown or hidden. The reasons
are XmCR_SHOW_LIST or XmCR_HIDE_LIST.
XmNdropDownCursor
Specifies the cursor to be used whenever the mouse
cursor is within the drop down list.
XmNdropDownOffset
Specifies the distance between the left border of
the list and the left border of the input field.
The default value is set to the width of the arrow
button. Only positive values are allowed for XmN-
dropDownOffset, negative ones will be ignored.
XmNeditable
Specifies the type of combo box. If set to True,
the combo box contains an editable input field.
Therefore, the user is free to select entries out
of the list and to enter new text or modify it. In
the other case, with XmNeditable set to False the
user can solely browse in and select entries out of
the list.
XmNfontList
Indicates the font list to be used for the input
field and the list. If the value is NULL at ini-
tialization, it is initialized by looking up the
parent hierarchy of the widget for an ancestor that
is a subclass of XmBulletinBoard, XmVendorShell or
XmMenuShell. If such an ancestor is found, it's
font list will be taken by the combo box widget.
XmNitemCount
Specifies the total number of items in the list.
XmNitems
Points to an array of compound strings representing
the items to be displayed in the list. By means of
this a program can find out what items the list
Version 1.31 20 March 1995 6
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
contains. It is also possible to set the contents
of the list box in one step by setting this
resource to a new array of compound strings. Please
remember: always set XmNitems and XmNitemCount
together in the same call to XtSetValues or
XtVaSetValues. If you ignore this rule the combo
box will ignore you and your attempt to set these
resources.
XmNlabelInsensitivePixmap
Specifies a pixmap used as the button face if XmN-
labelType is set to XmPIXMAP and the combo box wid-
get is insensitive.
XmNlabelPixmap
Specifies a pixmap to be displayed to the left of
the input field if XmNlabelType is XmPIXMAP and
XmNshowLabel is True (of course).
XmNlabelString
Specifies the the compound string to be displayed
if XmNlabelType is set to XmSTRING and XmNshowLabel
is True.
XmNlabelType
The type of label (either string or pixmap). Possi-
ble values are XmPIXMAP and XmSTRING.
XmNlabelMarginTop, XmNlabelMarginBottom
XmNlabelMarginLeft, XmNlabelMarginRight
The amount of space between one side of the label
and the nearest margin.
XmNlabelMarginHeight, XmNlabelMarginWidth
The spacing between one side of the label and the
nearest edge of a shadow.
XmNlistMarginHeight, XmNlistMarginWidth
The height or width of the margin between the bor-
der of the list and the items in the list.
XmNlistSizePolicy
Controls the reaction of the list when an item
grows horizontally beyond the current width of the
list and XmNstaticList is set to True. If set to
XmCONSTANT, the list does not grow, and a horizon-
tal scroll bar is shown. If this resource is set to
XmVARIABLE, the list instead trys to grow such that
it match the size of the longest item, thus no hor-
izontal scroll bar will appear. When XmNlist-
SizePolicy is the list will again try to grow but
in case the width of the longest item in the list
is wider than the viewing area of the list a hori-
zontal scroll bar appears.
Version 1.31 20 March 1995 7
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNlistSpacing
The spacing between items in the list.
XmNmarginHeight
Specifies the distance between the top and the bot-
tom of the widget window and the text displayed in
the input field.
XmNmarginWidth
Like XmNmarginHeight this resource specifies the
distance between the left and the right border of
the widget window and the text.
XmNmaxLength
Specifies the maximum length of the text string
that can be entered from the keyboard into the
input field of the combo box. Strings that are put
into the input field using XmComboBoxSetString
ignore this resource.
XmNmodifyVerifyCallback
Contains a list of callbacks called before text is
deleted from or inserted into the text area of the
combo box widget. The callbacks are called only if
XmNeditable is set to True. The reason is
XmCR_MODIFYING_TEXT_VALUE and the type of the
structure passed to this callback is XmComboBox-
TextVerifyCallbackStruct.
XmNmotionVerifyCallback
Specifies the list of callbacks that is called
before the insert cursor gets moved to another
position. The reason is XmCR_MOVING_INSERT_CURSOR
and the type of the structure whose address is
passed to the callback is XmComboBoxTextVerifyCall-
back-Struct.
XmNscrollBarDisplayPolicy
Controls the display of the vertical scroll bar in
the list when XmNstaticList is set to True.When
XmNscrollBarDisplayPolicy is set to XmAS_NEEDED,
the vertical scroll bar is displayed only when the
list contains more items than can be currently dis-
played. If set to XmSTATIC the vertical scroll bar
is always displayed.
XmNpersistentDropDown
Welcome to the sad section in the life of X11
applications. This resource and the inherent prob-
lems are due to the focus policy of the window man-
ager you're using. See the further details in the
later sections.
Version 1.31 20 March 1995 8
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNselectionCallback
Specifies a list of callbacks that is called when
an item is selected. The reason is
XmCR_SINGLE_SELECT. The callbacks are NOT called
when the user browses through the items in the
list.
XmNselectionPolicy
This resource controls whether the user can dese-
lect the currently selected item within a combo
box. The default value is XmBROWSE_SELECT, so
always one item gets selected if the combo box is
editable. In the case of XmSINGLE_SELECT the user
may deselect the current item either by clicking on
it in the drop down list or pressing the key
"Delete". Other values for XmNselectionPolicy are
currently not allowed. (Multiple selections will be
probably availabe with the next release.)
XmNselectThreshold
Specifies the amount of pixels the mouse must move
until the selection of text is recognized in click
and drag mode.
XmNshowLabel
Specifies, whether a label containing text or a
pixmap should be displayed on the left side of the
combo box. This resource can only be specified dur-
ing the creation of the combo box, afterwards it
will have no effect.
XmNsorted
Specifies whether the items in the list are sorted
or not In an unsorted list, the items are shown in
the order in which they're put into the list. When
adding an item to a sorted list, this item will be
put at the right place (alphabetically sorted).
XmNsortingCallback
Contains a list of callbacks that is called when-
ever a new item is added to the combo box widget
and XmNsorted is True. The reason is XmCR_SORTING
and the type of the structure whose address is
passed to the callback is XmComboBoxSortingCall-
back-Struct. For detailed information see the fol-
lowing sections.
XmNsquareArrow
Controls the width of the arrow button in respect
to its height. If this resource is True the arrow
button is always layed out square. Otherwise the
arrow button's width will be approximatly 4/5th of
its height.
Version 1.31 20 March 1995 9
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNstaticList
Controls whether the list is always statically dis-
played right below the text input area of the combo
box if set to True. If you use a combo box with
XmNstaticList set to True and XmNeditable set to
False you should consider using a simple list wid-
get instead.
XmNstringDirection
Specifies the initial direction to draw the string
(from the left to the right or in the opposite
direction). The whole story seems to be incompre-
hensible... therefore this resource is provided for
completeness only.
XmNtwmHandlingOn
If you have trouble with the list then this
resource may help you. Set it to True, if the list
gets hidden at the moment the mouse cursor enters
the list.
XmNtopItemPosition
This resource is intended as an informal hint. It
specifies the index of the item which is displayed
at the visible top of the list.
XmNvalue
Contains the text of the input field. This also
concerns combo boxes which are not editable (
XmNeditable set to False).
XmNunselectionCallback
Specifies a list of callbacks that is called when-
ever the currently selected item is deselected and
no other item gets selected. This callback is acti-
vated only when XmNselectionPolicy is XmSIN-
GLE_SELECT. The reason is XmCR_UNSELECT. The type
of the structure whose address is passed to this
callback is XmAnyCallbackStruct.
XmNvalue
Contains the text of the input field. This also
concerns combo boxes which are not editable (
XmNeditable set to False).
XmNvalueChangedCallback
Specifies a list of callbacks to be called after
text is deleted from or inserted into the text area
of the combo box widget. The reason is
XmCR_VALUE_CHANGED. The type of the structure
whose address is passed to this callback is XmAny-
CallbackStruct.
Version 1.31 20 March 1995 10
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmNvisibleItemCount
Specifies the number of items that can fit in the
visible space of the list. The combo box uses this
value to determine the height of its list.
Inherited Resources
XmComboBox inherits behaviour and resources from the fol-
lowing superclasses. For a complete description of each
resource, refer to the man page for that superclass.
Callback Information
A pointer to the following structure is passed to the
XmNdropDownCallback callback:
typedef struct {
int reason;
XEvent *event;
} XmComboBoxDropDownCallbackStruct;
reason Within this structure, reason indicates the
reason why the callback was activated. This
can be XmCR_SHOW_LIST as well as
XmCR_HIDE_LIST. A callback is called with
the reason XmCR_SHOW_LIST just before the
list is dropped down, whereas the callback
is called with XmCR_HIDE_LIST after the
list is hidden.
event Points to the XEvent, which triggered the
callback. May be NULL if the callback is
triggered by a call to XmComboBoxShowList
or XmComboBoxHideList.
A pointer to the following structure is passed to the
XmNactivateCallback callback:
typedef struct {
int reason;
XEvent *event;
} XmAnyCallbackStruct;
reason Indicates why the callback was invoked.
This is XmCR_ACTIVATE for XmNactivateCall-
back.
event Points to the XEvent, which triggered the
callback.
A pointer to the following structure is passed to the
XmNselectionCallback and XmNdefaultActionCallback:
typedef struct {
int reason;
Version 1.31 20 March 1995 11
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XEvent *event;
XmString value;
int index;
} XmComboBoxSelectionCallbackStruct, XmComboBoxDefaultAc-
tionCallbackStruct;
reason Within this structure, reason indicates the
reason why the callback was activated. At
this time, the reason can be either
XmCR_SINGLE_SELECT or XmCR_BROWSE_SELECT
depending on the setting of XmNselection-
Policy. It indicates that the user
selected a (potentially new) item in the
list. Whether this callback is activated
every time the user moves into a new item
of the list or only when the user releases
the mouse button is controlled through the
setting of XmNautomaticSelection.
event Points to the XEvent, which triggered the
callback.
value Points to a XmString, which contains the
text of the current selected item. This
XmString must never be freed or changed by
the called program code!
index Index (starting from 1) of the currently
selected item in the list.
A pointer to the following structure is passed to the
XmNunselectionCallback callback:
typedef struct {
int reason;
XEvent *event;
} XmComboBoxUnselectionCallbackStruct;
reason Indicates why the callback was invoked.
This is XmCR_UNSELECT.
event Points to the XEvent, which triggered the
callback.
A pointer to the following structure is passed to the
XmNmodifyVerifyCallback and XmNmotionVerifyCallback call-
backs:
typedef struct {
int reason;
XEvent *event;
Boolean doit;
Position currInsert, newInsert;
Position startPos, endPos;
Version 1.31 20 March 1995 12
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmTextBlock text;
} XmComboBoxTextVerifyCallbackStruct, *XmComboBoxTextVeri-
fyPtr;
reason Indicates the reason why the callback was
activated. This can be either
XmCR_MODIFYING_TEXT_VALUE or
XmCR_MOVING_INSERT_CURSOR.
event Points to the XEvent, which triggered the
callback.
doit Indicates whether the offending action
should be performed. Setting this field of
the callback structure to False denies the
action.
currInsert Specifies the current position of the
insert cursor.
Indicates the position at which the user
attempts to position the cursor.
startPos Indicates the starting position of the text
to modify. If the reason is
XmCR_MOVING_INSERT_CURSOR this value is the
same as currInsert.
endPos Specifies the ending position of the text
to modify. If no text is replaced or
deleted, then the value will be the same as
startPos. If the reason is
XmCR_MODIFYING_TEXT_VALUE this value is the
same as currInsert.
text Holds the address of a structure of type
XmTextBlockRec which holds the textual
information to be inserted.
The following table describes the reasons why the individ-
ual verification callback structure fields are valid.
Reason Valid Fields
-----------------------------------------------------
XmCR_MODIFYING_TEXT_VALUE reason, event, doit,
startPos, endPos, text
XmCR_MOVING_INSERT_CURSOR reason, event, doit,
currInsert, newInsert,
A pointer to the following structure is passed to the XmN-
sortingCallback callback: typedef struct {
int reason;
XEvent *event;
Version 1.31 20 March 1995 13
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
int operation;
void *item_internal;
XmString item;
int result;
} XmComboBoxSortingCallbackStruct, *XmComboBoxSortingPtr;
reason Indicates the reason why the callback was
activated. This is XmCR_SORTING.
event Contains always NULL and is just there for
compatibility reasons.
operation Indicates the operation to carry out and
can be either XmOP_INIT,XmOP_DONE or
XmOP_COMPARE.
item_internal Must be set during the XmOP_INIT operation
to a suitable representation of the new
item which is to be added to the list. In
all subsequent calls to this callback with
XmOP_COMPAREorXmOP_DONE this field will
contain whatever you've put into it during
XmOP_INIT. For detailed information refer
to the documentation "The ComboBox Widget".
item During XmOP_INIT this field points to the
item to be added to the list. When sorting
the list ( XmOP_COMPARE) the field contains
the address of an item in the list which
should be compared against the new item (as
remembered in item_internal).
result When comparing an item (out of the list) in
item with the new item (as remembered in
item_internal) the result has to be stored
into this structure's field.
The following table describes which individual callback
structure fields are valid during which operations.
Reason Valid Fields
---------------------------------------------
XmOP_INIT reason, event, operation,
item, item_internal
XmOP_DONE reason, event, operation,
item_internal
XmOP_COMPARE reason, event, operation,
item, item_internal, result
For more information about controlling the sorting order
see the acompanying documentation "The ComboBox Widget".
Convenience routines
ComboBox has a number of convenience routines to control
Version 1.31 20 March 1995 14
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
the behavior and contents of its children.
void XmComboBoxAddItem(Widget w, XmString item, int pos)
Add a new item to the list's contents. If XmNsorted
is set to True, the new item is inserted alphabeti-
cally. If the list is unsorted, the same assump-
tions can be applied as with XmListAddItem.
void XmComboBoxAddItems(Widget w, XmString *items,
int item_count, int pos)
Similar to XmComboBoxAddItem. Also see XmListAd-
dItems.
void XmComboBoxAddItemUnselected(Widget w, XmString
item, int pos)
See XmListAddItemUnselected.
void XmComboBoxClearItemSelection(Widget w)
Deselects all currently selected items when
XmNselectionPolicy is XmSINGLE_SELECT.
void XmComboBoxDeleteItem(Widget w, XmString item)
See XmListDeleteItem.
void XmComboBoxDeleteItems(Widget w, XmString
*items, int item_count)
See XmListDeleteItems.
void XmComboBoxDeletePos(Widget w, int pos)
See XmListDeletePos.
void XmComboBoxDeleteItemsPos(Widget w, int item_count,
int pos)
See XmListDeleteItemsPos.
void XmComboBoxDeleteAllItems(Widget w)
See XmListDeleteAllItems.
void XmComboBoxReplaceItems(Widget w, XmString
*old_items, int item_count, XmString *new_items)
See XmListReplaceItems.
void XmComboBoxReplaceItemsPos(Widget w, XmString
*new_items, int item_count, int position)
Version 1.31 20 March 1995 15
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
See XmListReplaceItemsPos.
Boolean XmComboBoxItemExists(Widget w, XmString item)
See XmListItemExists.
int XmComboBoxItemPos(Widget w, XmString item)
See XmListItemPos.
Boolean XmComboBoxGetMatchPos(Widget w, XmString
item, int **pos_list, int *pos_count)
See XmListGetMatchPos.
void XmComboBoxSelectPos(Widget w, int pos, Boolean
notify)
See XmListSelectPos.
void XmComboBoxSelectItem(Widget w, XmString item,
Boolean notify)
See XmListSelectItem.
int XmComboBoxGetSelectedPos(Widget w)
This function differs from XmListGetSelectedPos.
The list in a combo box can contain only one
selected item. Therefore this function returns the
index of the selected item in the list or zero, if
none is currently selected.
void XmComboBoxClearSelection(Widget w, Time time)
See XmTextFieldClearSelection.
Boolean XmComboBoxCopy(Widget w, Time time)
See XmTextFieldCopy.
Boolean XmComboBoxCut(Widget w, Time time)
See XmTextFieldCut.
XmTextPosition XmComboBoxGetInsertionPosition(Widget w)
See XmTextFieldGetInsertionPosition.
XmTextPosition XmComboBoxGetLastPosition(Widget w)
See XmTextFieldGetLastPosition.
Version 1.31 20 March 1995 16
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
int XmComboBoxGetMaxLength(Widget w)
See XmTextFieldGetMaxLength.
char *XmComboBoxGetSelection(Widget w)
See XmTextFieldGetSelection.
Boolean XmComboBoxGetSelectionPosition(Widget w,
XmTextPosition *left, XmTextPosition *right)
See XmTextFieldGetSelectionPosition.
char *XmComboBoxGetString(Widget w)
See XmTextFieldGetString.
void XmComboBoxInsert(Widget w, XmTextPosition
position, char *value)
See XmTextFieldInsert.
Boolean XmComboBoxPaste(Widget w)
See XmTextFieldPaste.
Boolean XmComboBoxRemove(Widget w)
See XmTextFieldRemove.
void XmComboBoxReplace(Widget w, XmTextPosition
from_pos, XmTextPosition to_pos, char *value)
See XmTextFieldReplace.
void XmComboBoxSetAddMode(Widget w, Boolean state)
See XmTextFieldSetAddMode.
void XmComboBoxSetHighlight(Widget w, XmTextPosition
left, XmTextPosition right, XmHighlightMode mode)
See XmTextFieldSetHighlight.
void XmComboBoxSetInsertionPosition(Widget w,
XmTextPosition position)
See XmTextFieldSetInsertionPosition.
void XmComboBoxSetMaxLength(Widget w, int max_length)
See XmTextFieldSetMaxLength.
Version 1.31 20 March 1995 17
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
void XmComboBoxSetSelection(Widget w, XmTextPosition
first, XmTextPosition last, Time time)
See XmTextFieldSetSelection.
void XmComboBoxSetString(Widget w, char *value)
At least Motif 1.1 contains a very anoying bug. If
you try to set the contents of an XmTextField to an
empty string (""), you'll get garbage, when asking
the XmTextField for its contents afterwards. This
interface function provides a work around. Also see
XmTextFieldSetString.
void XmComboBoxShowPosition(Widget w, XmTextPosition posi-
tion)
See XmTextFieldShowPosition.
The Disliked Keyboard Focus
Now I'll annotate a somewhat tricky subject. If the
resource XmNpersistentDropDown defaults to its initial
value of False, one can observe the following effect (this
may be annoying).
When the user drops down the list and then moves the mouse
cursor out of the window where the combo box resides in,
the list will be hidden. This is because the widget lost
the keyboard focus. Some users are irritated because they
didn't expect that behavior, because they just moved the
mouse to get it out of the way. If your window manager's
focus policy is "pointer focus", i.e. if you move the
pointer into another window, that window will automati-
cally get the keyboard focus. On the other hand, if your
window manager's focus policy is "explicit", you have to
move the pointer into another window and click a mouse
button to give that window the keyboard focus. This is
often referred to as the "click-to-type" method. In
"explicit" mode, you will never see the list's annoying
behavior.
To bypass this behavior on some window managers a really
dirty hack was used. The user can activate that hack, if
he sets XmNpersistentDropDown to True in the application's
resources. Sorry, on some window managers this will not
fix the annoying behavior.
Try it if you like - but don't complain at me if it
doesn't work as expected. But at least it worked on the
author's machine: a cute little SGI Indigo running 4dwm as
the window manager.
On some other window managers like twm you will face
another problem: the list gets hidden as soon as the mouse
Version 1.31 20 March 1995 18
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
cursor enters the list. Try to set XmNtwmHandlingOn to
True. This resource will also work with other window man-
agers.
Creating a ComboBox
Using the combo box in your own programs is easy. Just
create the widget with one of the innumerable X toolkit
functions (like XtCreateManagedWidget or XtVaCreateMan-
agedWidget).
Specify as the widget class xmComboBoxWidgetClass - that's
all. There is also a so-called creation convenience func-
tion called XmCreateComboBox, but it isn't really needed.
Widget XmCreateComboBox(parent, name, arglist, argcount)
Widget parent;
String name;
ArgList arglist;
Cardinal argcount;
Somewhere in your program you'll need something like the
following code fragment:
Widget ComboBox;
ComboBox = XtVaCreateManagedWidget("combobox",
xmComboBoxWidgetClass, Parent,
XmNeditable, True or False,
other Resources...
NULL);
Setting the resource XmNeditable is not absolutely neces-
sary, but it's better to do so.
After creation, items can be added to the combo box's list
by means of interface functions like XmComboBoxAd-
dItem(...). Which item the user selected can be deter-
mined by calling XmComboBoxGetString(...).
If you want to preselect an item (that is setting a
default item to the input field of the combo box) you can
use several convenience functions. On a combo box with a
non editable input field there are two ways to select an
item:
XmComboBoxSelectPos(ComboBox, item #, False);
or:
Version 1.31 20 March 1995 19
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
XmComboBoxSelectItem(ComboBox, itemString, False);
The third parameter in these two function calls indicates
whether the XmNselectionCallback should be called. The
only difference between these functions is the first one
is expecting an item number whereas the second one expects
a XmString. The list is then searched for this string and
if it is found the input field will be updated.
On a combo box with XmNeditable set to True use another
function:
XmComboBoxSetString(ComboBox, string);
This sets the contents of the text input field to string.
BUGS
Not more than currently available in Motif 1.2.3 or Motif
1.2.4, but less than in the upcomming Motif 2.0. Report
bugs to albrecht@igpm.rwth-aachen.de. Include a thoroughly
description, and say which version of the ComboBox widget
you are using.
COPYRIGHT
Copyright 1993, 1994 Harald Albrecht.
The ComboBox widget is free software; you can redistribute
it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Founda-
tion; either version 2, or (at your option) any later ver-
sion.
AVAILABILITY
The most recent released version of the ComboBox widget is
always available for anonymous ftp from either
ftp.x.org (198.112.44.100)
/contrib/widgets/motif/ComboBox
or from
ftp.informatik.rwth-aachen.de (137.226.112.172)
/pub/packages/ComboBox
AUTHOR
Author of Software & Documentation:
Version 1.31 20 March 1995 20
XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm)
Harald Albrecht
Institut fuer Geometrie und Praktische Mathematik
RWTH Aachen, Bundesrepublik Deutschland
e-mail: albrecht@igpm.rwth-aachen.de
English Documentation:
Chris Marotz
Sterling Software ITD
e-mail: marotz@itd.sterling.com
RELATED INFORMATION
"The ComboBox Widget" documentation
Core(3X), XmComposite(3X), XmList(3X), XmTextField(3X)
Douglas Adams: The Hitchhiker's Guide to the Galaxy.
file://134.130.161.30/arc/pub/unix/html/motifcorner.html
Version 1.31 20 March 1995 21