Blame lib/Xm/MultiList.c

Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
Packit b099d7
#include "XmI.h"
Packit b099d7
#include "MessagesI.h"
Packit b099d7
#include <Xm/MultiListP.h>
Packit b099d7
#include <Xm/Ext18List.h>
Packit b099d7
#include <Xm/Ext18ListP.h>
Packit b099d7
#include <Xm/Frame.h>
Packit b099d7
#include <Xm/Label.h>
Packit b099d7
#include <Xm/PushB.h>
Packit b099d7
#include <Xm/ScrollBar.h>
Packit b099d7
#include <Xm/TextF.h>
Packit b099d7
Packit b099d7
#include <Xm/VaSimpleP.h>
Packit b099d7
#include <Xm/ExtP.h>
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
*	TYPEDEFS AND DEFINES
Packit b099d7
*************************************************************/
Packit b099d7
#define BUG_FIX_1385 1
Packit b099d7
Packit b099d7
#define H_MARGIN 5
Packit b099d7
#define V_MARGIN 5
Packit b099d7
Packit b099d7
#define FIND_STRING   _XmMMsgResource_0013
Packit b099d7
Packit b099d7
extern XmMultiListRowInfo \
Packit b099d7
           *XmI18ListFindRow(Widget, String, int *, Boolean, Boolean);
Packit b099d7
extern int *XmI18ListGetSelectedRowArray(XmI18ListWidget, int *);
Packit b099d7
extern void XmI18ListMakeRowVisible(XmI18ListWidget, int);
Packit b099d7
extern void XmI18ListDeselectRow(XmI18ListWidget, int);
Packit b099d7
extern void XmI18ListSelectRow(XmI18ListWidget, int, Boolean);
Packit b099d7
extern void XmI18ListSelectAllItems(XmI18ListWidget, Boolean);
Packit b099d7
extern void XmI18ListDeselectItems(XmI18ListWidget, XmString, int);
Packit b099d7
extern void XmI18ListSelectItems(XmI18ListWidget, XmString, int, Boolean);
Packit b099d7
Packit b099d7
static Widget CreateTitle(Widget, XmString, ArgList, Cardinal);
Packit b099d7
static Widget CreateScrollbar(Widget, Boolean, ArgList, Cardinal);
Packit b099d7
static Widget CreateFindButton(Widget, ArgList, Cardinal);
Packit b099d7
static Widget CreateFindText(Widget, ArgList, Cardinal);
Packit b099d7
static Widget CreateFrame(Widget, ArgList, Cardinal);
Packit b099d7
Packit b099d7
static void   ActivateTextSearch(Widget, XtPointer, XtPointer);
Packit b099d7
static void   LayoutChildren(Widget), ChangeManaged(Widget);
Packit b099d7
static void   PositionFindAndFindText(Widget);
Packit b099d7
Packit b099d7
static void ClassInitialize();
Packit b099d7
static void Initialize(Widget, Widget, ArgList, Cardinal *);
Packit b099d7
static void ClassPartInitialize(WidgetClass w_class);
Packit b099d7
Packit b099d7
static void Resize(Widget), Destroy(Widget w);
Packit b099d7
Packit b099d7
static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *);
Packit b099d7
static void GetValuesHook(Widget, ArgList, Cardinal *);
Packit b099d7
Packit b099d7
static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, 
Packit b099d7
					XtWidgetGeometry *);
Packit b099d7
Packit b099d7
static XtResource resources[] =
Packit b099d7
{
Packit b099d7
  {
Packit b099d7
    XmNwidth, XmCWidth, XmRHorizontalDimension,
Packit b099d7
    sizeof(Dimension), XtOffsetOf(CoreRec, core.width),
Packit b099d7
    XmRImmediate, (XtPointer) 0
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNheight, XmCHeight, XmRVerticalDimension,
Packit b099d7
    sizeof(Dimension), XtOffsetOf(CoreRec, core.height),
Packit b099d7
    XmRImmediate, (XtPointer) 0
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNtitle, XmCTitle, XmRXmString,
Packit b099d7
    sizeof(XmString), XtOffsetOf(XmMultiListRec, ext_list.title),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmNtitleString, XmCTitleString, XmRXmString,
Packit b099d7
    sizeof(XmString), XtOffsetOf(XmMultiListRec, ext_list.title_string),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNdoubleClickCallback, XmCCallback, XmRCallback,
Packit b099d7
    sizeof(XtCallbackList), XtOffsetOf(XmMultiListRec, ext_list.double_click),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "pri.vate", "Pri.vate", XmRBoolean,
Packit b099d7
    sizeof(Boolean), XtOffsetOf(XmMultiListRec, ext_list.check_set_select_callback),
Packit b099d7
    XmRImmediate, (XtPointer) False
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNselectCallback, XmCCallback, XmRCallback,
Packit b099d7
    sizeof(XtCallbackList), XtOffsetOf(XmMultiListRec, ext_list.single_select),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  /* this is the old name for the above */
Packit b099d7
  {
Packit b099d7
    XmNsingleSelectionCallback, XmCCallback, XmRCallback,
Packit b099d7
    sizeof(XtCallbackList), XtOffsetOf(XmMultiListRec, ext_list.single_select),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNshowFind, XmCShowFind, XmRBoolean,
Packit b099d7
    sizeof(Boolean), XtOffsetOf(XmMultiListRec, ext_list.show_find),
Packit b099d7
    XmRImmediate, (XtPointer) True
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNfindLabel, XmCFindLabel, XmRXmString,
Packit b099d7
    sizeof(XmString), XtOffsetOf(XmMultiListRec, ext_list.find_label),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNitemNotFoundCallback, XmCCallback, XmRCallback,
Packit b099d7
    sizeof(XtCallbackList), XtOffsetOf(XmMultiListRec, ext_list.not_found),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNitemFoundCallback, XmCCallback, XmRCallback,
Packit b099d7
    sizeof(XtCallbackList), XtOffsetOf(XmMultiListRec, ext_list.item_found),
Packit b099d7
    XmRImmediate, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNvisibleItemCount, XmCVisibleItemCount, XmRInt,
Packit b099d7
    sizeof(int), XtOffsetOf(XmMultiListRec, ext_list.visible_rows),
Packit b099d7
    XmRImmediate, (XtPointer) XmMultiList_DEFAULT_VISIBLE_COUNT
Packit b099d7
  },
Packit b099d7
#ifndef BUG_FIX_1385
Packit b099d7
  {
Packit b099d7
    XmNnumColumns, XmCNumColumns, XmRShort,
Packit b099d7
    sizeof(short), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNnumRows, XmCNumRows, XmRShort,
Packit b099d7
    sizeof(short), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNselectedColumn, XmCSelectedColumn, XmRShort,
Packit b099d7
    sizeof(short), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNcolumnTitles, XmCColumnTitles, XmRXmStringTable,
Packit b099d7
    sizeof(XmString *), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNentryData, XmCEntryData, XmRPointer,
Packit b099d7
    sizeof(XtPointer), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNentryBackground, XmCBackground, XtRPixel,
Packit b099d7
    sizeof(Pixel), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNfirstColumnPixmaps, XmCFirstColumnPixmaps, XmRBoolean,
Packit b099d7
    sizeof(Boolean), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNfontList, XmCFontList, XmRFontList,
Packit b099d7
    sizeof(XmFontList), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNrenderTable, XmCRenderTable, XmRRenderTable,
Packit b099d7
    sizeof(XmRenderTable), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNverticalScrollBar, XmCScrollBar, XmRWidget,
Packit b099d7
    sizeof(Widget), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNhorizontalScrollBar, XmCScrollBar, XmRWidget,
Packit b099d7
    sizeof(Widget), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNfirstRow, XmCFirstLocation, XmRShort,
Packit b099d7
    sizeof(short), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNfirstColumn, XmCFirstLocation, XmRShort,
Packit b099d7
    sizeof(short), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNsortFunctions, XmCFunction, XmRFunction,
Packit b099d7
    sizeof(Xm18SortFunction **), 0,
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNselectionPolicy, XmCSelectionPolicy, XmRSelectionPolicy,
Packit b099d7
    sizeof(unsigned char), 0, 
Packit b099d7
    NULL, (XtPointer) NULL
Packit b099d7
  }
Packit b099d7
#endif
Packit b099d7
};
Packit b099d7
Packit b099d7
static XmSyntheticResource syn_resources[] =
Packit b099d7
{
Packit b099d7
  {
Packit b099d7
    XmNwidth,
Packit b099d7
    sizeof (Dimension), XtOffsetOf(CoreRec, core.width),
Packit b099d7
    XmeFromHorizontalPixels, XmeToHorizontalPixels
Packit b099d7
  },
Packit b099d7
Packit b099d7
  {
Packit b099d7
    XmNheight,
Packit b099d7
    sizeof (Dimension), XtOffsetOf(CoreRec, core.height),
Packit b099d7
    XmeFromVerticalPixels, XmeToVerticalPixels
Packit b099d7
  }
Packit b099d7
};
Packit b099d7
Packit b099d7
XmMultiListClassRec xmMultiListClassRec = {
Packit b099d7
  { /* core fields */
Packit b099d7
    /* superclass		*/	(WidgetClass)&xmManagerClassRec,
Packit b099d7
    /* class_name		*/	"XmMultiList",
Packit b099d7
    /* widget_size		*/	sizeof(XmMultiListRec),
Packit b099d7
    /* class_initialize		*/	ClassInitialize,
Packit b099d7
    /* class_part_initialize */         ClassPartInitialize,	
Packit b099d7
    /* class_inited		*/	FALSE,
Packit b099d7
    /* initialize		*/	Initialize,
Packit b099d7
    /* initialize_hook		*/	NULL,
Packit b099d7
    /* realize			*/	XtInheritRealize,
Packit b099d7
    /* actions			*/      NULL,	
Packit b099d7
    /* num_actions		*/      (Cardinal)0,	
Packit b099d7
    /* resources		*/	(XtResource*)resources,
Packit b099d7
    /* num_resources		*/	XtNumber(resources),
Packit b099d7
    /* xrm_class		*/	NULLQUARK,
Packit b099d7
    /* compress_motion		*/	TRUE,
Packit b099d7
    /* compress_exposure	*/	TRUE,
Packit b099d7
    /* compress_enterleave	*/	TRUE,
Packit b099d7
    /* visible_interest		*/	FALSE,
Packit b099d7
    /* destroy			*/	Destroy,
Packit b099d7
    /* resize			*/	Resize,
Packit b099d7
    /* expose			*/	NULL,
Packit b099d7
    /* set_values		*/	SetValues,
Packit b099d7
    /* set_values_hook		*/	NULL,
Packit b099d7
    /* set_values_almost	*/	XtInheritSetValuesAlmost,
Packit b099d7
    /* get_values_hook		*/	GetValuesHook,
Packit b099d7
    /* accept_focus		*/	NULL,
Packit b099d7
    /* version			*/	XtVersion,
Packit b099d7
    /* callback_private		*/	NULL,
Packit b099d7
    /* tm_table			*/	XtInheritTranslations,
Packit b099d7
    /* query_geometry		*/	XtInheritQueryGeometry,
Packit b099d7
    /* display_accelerator	*/	XtInheritDisplayAccelerator,
Packit b099d7
    /* extension		*/	NULL
Packit b099d7
  },
Packit b099d7
   {		/* composite_class fields */
Packit b099d7
    /* geometry_manager   */      GeometryManager,
Packit b099d7
    /* change_managed     */      ChangeManaged,
Packit b099d7
    /* insert_child       */      XtInheritInsertChild,			
Packit b099d7
    /* delete_child       */      XtInheritDeleteChild,			
Packit b099d7
    /* extension          */      NULL,                                     
Packit b099d7
   },
Packit b099d7
   {		/* constraint_class fields */
Packit b099d7
    /* resource list        */         NULL,
Packit b099d7
    /* num resources        */         0,	
Packit b099d7
    /* constraint size      */         0,	
Packit b099d7
    /* destroy proc         */         NULL,
Packit b099d7
    /* init proc            */         NULL,				    
Packit b099d7
    /* set values proc      */         NULL,				       
Packit b099d7
    /* extension            */         NULL, 
Packit b099d7
   },
Packit b099d7
   {		/* manager_class fields */
Packit b099d7
    /* default translations   */      XtInheritTranslations,	
Packit b099d7
    /* syn_resources          */      syn_resources,
Packit b099d7
    /* num_syn_resources      */      XtNumber(syn_resources),
Packit b099d7
    /* syn_cont_resources     */      NULL,
Packit b099d7
    /* num_syn_cont_resources */      0,
Packit b099d7
    /* parent_process         */      NULL,
Packit b099d7
    /* extension	      */      NULL,	
Packit b099d7
   },
Packit b099d7
  { /* Extended List fields */
Packit b099d7
      NULL                      /* extension          */
Packit b099d7
  }
Packit b099d7
};
Packit b099d7
Packit b099d7
WidgetClass xmMultiListWidgetClass = (WidgetClass)&xmMultiListClassRec;
Packit b099d7
Packit b099d7
/*      Function Name: ClassInitialize
Packit b099d7
 *      Description:   Initializes class-specific data (offsets)
Packit b099d7
 *      Arguments:     none
Packit b099d7
 *      Returns:       nothing
Packit b099d7
 */
Packit b099d7
static void
Packit b099d7
ClassInitialize()
Packit b099d7
{
Packit b099d7
  /* do nothing */
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: Initialize
Packit b099d7
 *	Description:   Called to initialize information specific
Packit b099d7
 *                     to this widget.
Packit b099d7
 *	Arguments:     req - what was originally requested.
Packit b099d7
 *                     set - what will be created (our superclassed have
Packit b099d7
 *                           already mucked with this)
Packit b099d7
 *                     args, num_args - The arguments passed to 
Packit b099d7
 *                                      the creation call.
Packit b099d7
 *	Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static void Initialize(Widget req, Widget set, 
Packit b099d7
		       ArgList args, Cardinal * num_args)
Packit b099d7
{
Packit b099d7
    ArgList f_args;
Packit b099d7
    Cardinal f_num_args;
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) set;
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Pass filtered setvalues requests down to all children.
Packit b099d7
     */
Packit b099d7
    
Packit b099d7
    _XmFilterArgs(args, *num_args, xm_std_filter, &f_args, &f_num_args);
Packit b099d7
Packit b099d7
	XmMultiList_last_search(elist) = NULL;
Packit b099d7
    XmMultiList_ilist(elist) = NULL;
Packit b099d7
Packit b099d7
    if (XmMultiList_title(elist) != NULL) 
Packit b099d7
	XmMultiList_title(elist) = XmStringCopy(XmMultiList_title(elist));
Packit b099d7
Packit b099d7
    if (XmMultiList_title_string(elist) != NULL) 
Packit b099d7
	XmMultiList_title_string(elist) =
Packit b099d7
	    XmStringCopy(XmMultiList_title_string(elist));
Packit b099d7
Packit b099d7
    if (XmMultiList_find_label(elist) != NULL) 
Packit b099d7
	XmMultiList_find_label(elist) = XmStringCopy(XmMultiList_find_label(elist));
Packit b099d7
	else 
Packit b099d7
	XmMultiList_find_label(elist) = 
Packit b099d7
		XmStringGenerate(FIND_STRING, NULL, XmCHARSET_TEXT, NULL);
Packit b099d7
Packit b099d7
    XmMultiList_title_wid(elist) = CreateTitle(set, 
Packit b099d7
					    (XmMultiList_title_string(elist) ? 
Packit b099d7
					     XmMultiList_title_string(elist) : 
Packit b099d7
					     XmMultiList_title(elist)),
Packit b099d7
					    f_args, f_num_args);
Packit b099d7
Packit b099d7
    XmMultiList_v_bar(elist) = CreateScrollbar(set, True, f_args, f_num_args);
Packit b099d7
    XmMultiList_h_bar(elist) = CreateScrollbar(set, False, f_args, f_num_args);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Scrollbars must be created before the frame.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    XmMultiList_frame(elist) = CreateFrame(set, f_args, f_num_args);
Packit b099d7
Packit b099d7
    XmMultiList_find(elist) = CreateFindButton(set, f_args, f_num_args);
Packit b099d7
    XmMultiList_find_text(elist) = CreateFindText(set, f_args, f_num_args);
Packit b099d7
Packit b099d7
    /* Compute our initial height & width if unset... */
Packit b099d7
    if (XtHeight(req) == 0)
Packit b099d7
    {
Packit b099d7
	int	title_height = 0;
Packit b099d7
Packit b099d7
	if (XmMultiList_title(elist) || XmMultiList_title_string(elist))
Packit b099d7
	    title_height = XmMultiList_title_wid(elist)->core.height + 2 *
Packit b099d7
		(XmMultiList_title_wid(elist)->core.border_width + V_MARGIN);
Packit b099d7
Packit b099d7
	if (XmMultiList_show_find(elist))
Packit b099d7
	    XtHeight(set) = XmMultiList_h_bar(elist)->core.height +
Packit b099d7
		XmMultiList_frame(elist)->core.height + title_height +
Packit b099d7
		XmMultiList_find(elist)->core.height + 2 * 
Packit b099d7
		(V_MARGIN + elist->core.border_width +
Packit b099d7
		 XmMultiList_h_bar(elist)->core.border_width +
Packit b099d7
		 XmMultiList_frame(elist)->core.border_width +
Packit b099d7
		 XmMultiList_find(elist)->core.border_width);
Packit b099d7
	else
Packit b099d7
	    XtHeight(set) = XmMultiList_title_wid(elist)->core.height +
Packit b099d7
		XmMultiList_h_bar(elist)->core.height + title_height +
Packit b099d7
		XmMultiList_frame(elist)->core.height + 2 *
Packit b099d7
		(V_MARGIN + elist->core.border_width +
Packit b099d7
		 XmMultiList_h_bar(elist)->core.border_width +
Packit b099d7
		 XmMultiList_frame(elist)->core.border_width);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (XtWidth(req) == 0)
Packit b099d7
    {
Packit b099d7
	XtWidth(set) = XmMultiList_ilist(elist)->core.width +
Packit b099d7
	    XmMultiList_v_bar(elist)->core.width + (5 * H_MARGIN) +
Packit b099d7
	    (2 * elist->core.border_width);
Packit b099d7
    }
Packit b099d7
    
Packit b099d7
    XtFree((XtPointer) f_args);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * ClassPartInitialize sets up the fast subclassing for the widget.
Packit b099d7
 */
Packit b099d7
static void 
Packit b099d7
ClassPartInitialize(WidgetClass w_class)
Packit b099d7
{
Packit b099d7
    _XmFastSubclassInit (w_class, XmEXT18LIST_BIT);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*	Function Name: Destroy
Packit b099d7
 *	Description:   Cleans up after the widget.
Packit b099d7
 *	Arguments:     w - the widget.
Packit b099d7
 *	Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static void
Packit b099d7
Destroy(Widget w)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    XmStringFree(XmMultiList_title(elist));
Packit b099d7
    XmStringFree(XmMultiList_title_string(elist));
Packit b099d7
    XmStringFree(XmMultiList_find_label(elist));
Packit b099d7
Packit b099d7
    XtRemoveAllCallbacks(w, XmNsingleSelectionCallback);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: Resize
Packit b099d7
 *	Description:   Called when this widget has been resized.
Packit b099d7
 *	Arguments:     w - Extended List Widget to realize.
Packit b099d7
 *	Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static void 
Packit b099d7
Resize(Widget w)
Packit b099d7
{
Packit b099d7
    LayoutChildren(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*      Function Name: ChangeManaged
Packit b099d7
 *      Description:   when a management change has occurred.
Packit b099d7
 *      Arguments:     w - the Ext List widget.
Packit b099d7
 *      Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/* ARGSUSED */
Packit b099d7
static void
Packit b099d7
ChangeManaged(Widget w)
Packit b099d7
{
Packit b099d7
    LayoutChildren(w);
Packit b099d7
   XmeNavigChangeManaged((Widget)w);   /* for Motif navigation */
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: GetValuesHook
Packit b099d7
 *	Description:   Called to retrieve resource values from either
Packit b099d7
 *                     the extended list or the interal list
Packit b099d7
 *      Arguments:     w - the extended list widget.
Packit b099d7
 *                     args, num_args - the argument list.
Packit b099d7
 *	Returns:       none
Packit b099d7
 *    
Packit b099d7
 *      Added:         04/09/92 beth
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static void
Packit b099d7
GetValuesHook(Widget w, ArgList args, Cardinal *num_args)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
    register Cardinal i, num=0, j = *num_args;
Packit b099d7
    Arg i_args[15];
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Get the correct args to pass to the I18List widget
Packit b099d7
     */
Packit b099d7
    for (i=0; i < j; i++) {
Packit b099d7
        if (streq(args[i].name, XmNnumColumns)           || 
Packit b099d7
            streq(args[i].name, XmNnumRows)              ||
Packit b099d7
            streq(args[i].name, XmNselectedColumn)       ||
Packit b099d7
            streq(args[i].name, XmNcolumnTitles)         ||
Packit b099d7
            streq(args[i].name, XmNentryData)            ||
Packit b099d7
            streq(args[i].name, XmNentryBackground)      ||
Packit b099d7
            streq(args[i].name, XmNfirstColumnPixmaps)   ||
Packit b099d7
            streq(args[i].name, XmNfontList)             ||
Packit b099d7
            streq(args[i].name, XmNrenderTable)          ||
Packit b099d7
            streq(args[i].name, XmNverticalScrollBar)    ||
Packit b099d7
            streq(args[i].name, XmNhorizontalScrollBar)  ||
Packit b099d7
            streq(args[i].name, XmNfirstRow)             ||
Packit b099d7
            streq(args[i].name, XmNfirstColumn)          ||
Packit b099d7
            streq(args[i].name, XmNsortFunctions)        ||
Packit b099d7
            streq(args[i].name, XmNselectionPolicy))  {
Packit b099d7
        
Packit b099d7
     	    XtSetArg(i_args[num], args[i].name, args[i].value);
Packit b099d7
            num++;
Packit b099d7
        }
Packit b099d7
	else if (streq(args[i].name, XmNtitle)) 
Packit b099d7
			*(XmString*)args[i].value = XmStringCopy(XmMultiList_title(elist));
Packit b099d7
	else if (streq(args[i].name, XmNtitleString)) 
Packit b099d7
			*(XmString*)args[i].value = XmStringCopy(XmMultiList_title_string(elist));
Packit b099d7
	else if (streq(args[i].name, XmNfindLabel)) 
Packit b099d7
			*(XmString*)args[i].value = XmStringCopy(XmMultiList_find_label(elist));
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Pass argument list through to the IList widget.
Packit b099d7
     */
Packit b099d7
    if (num > 0)
Packit b099d7
        XtGetValues(XmMultiList_ilist(elist), i_args, num);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: SetValues
Packit b099d7
 *	Description:   Called when some widget data needs to be modified on-
Packit b099d7
 *                     the-fly.
Packit b099d7
 *	Arguments:     current - the current (old) widget values.
Packit b099d7
 *                     request - before superclassed have changed things.
Packit b099d7
 *                     set - what will acutally be the new values. 
Packit b099d7
 *                     args, num_args - the arguments in the list.
Packit b099d7
 *	Returns:       none
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define NUM_FIND_WIDGETS 2
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static Boolean 
Packit b099d7
SetValues(Widget current, Widget request, Widget set,
Packit b099d7
	  ArgList args, Cardinal * num_args)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget e_old = (XmMultiListWidget) current;
Packit b099d7
    XmMultiListWidget e_set = (XmMultiListWidget) set;
Packit b099d7
    ArgList f_args;
Packit b099d7
    Cardinal f_num_args;
Packit b099d7
    Boolean redisplay = False;
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Pass the SetValues request through to all children.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    _XmFilterArgs(args, *num_args, xm_std_filter, &f_args, &f_num_args);
Packit b099d7
    _XmSetValuesOnChildren((Widget) e_set, f_args, f_num_args);
Packit b099d7
    XtFree((XtPointer) f_args);
Packit b099d7
Packit b099d7
    if (XmMultiList_visible_rows(e_old) != XmMultiList_visible_rows(e_set))
Packit b099d7
    {
Packit b099d7
	if (XmMultiList_visible_rows(e_set) < 1)
Packit b099d7
	    XmMultiList_visible_rows(e_set) = 1;	/* reset values less than 1 */
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (XmMultiList_show_find(e_old) != XmMultiList_show_find(e_set))
Packit b099d7
    {
Packit b099d7
		Widget find_widgets[NUM_FIND_WIDGETS];
Packit b099d7
		find_widgets[0] = XmMultiList_find(e_set);
Packit b099d7
		find_widgets[1] = XmMultiList_find_text(e_set);
Packit b099d7
Packit b099d7
        if (XmMultiList_show_find(e_set))
Packit b099d7
            XtManageChildren(find_widgets, NUM_FIND_WIDGETS);
Packit b099d7
        else
Packit b099d7
            XtUnmanageChildren(find_widgets, NUM_FIND_WIDGETS);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * This check may return, so it must be last.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    if (XmMultiList_find_label(e_old) != XmMultiList_find_label(e_set))
Packit b099d7
    {
Packit b099d7
	Arg args[1];
Packit b099d7
Packit b099d7
	redisplay = True;
Packit b099d7
	XmStringFree(XmMultiList_find_label(e_old));
Packit b099d7
Packit b099d7
	if (XmMultiList_find_label(e_set) != NULL) 
Packit b099d7
	    XmMultiList_find_label(e_set) = 
Packit b099d7
		XmStringCopy(XmMultiList_find_label(e_set));
Packit b099d7
	else 
Packit b099d7
	    XmMultiList_find_label(e_set) = 
Packit b099d7
		XmStringCreateLocalized(FIND_STRING);
Packit b099d7
Packit b099d7
	XtSetArg(args[0], XmNlabelString, XmMultiList_find_label(e_set));
Packit b099d7
	XtSetValues(XmMultiList_find(e_set), args, 1);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /* 
Packit b099d7
     * MultiList supports both XmNtitle (for backwards compatibility) and
Packit b099d7
     * XmNtitleString resources, so we must check for changes to both here
Packit b099d7
     */
Packit b099d7
    if ((XmMultiList_title(e_old) != XmMultiList_title(e_set)) ||
Packit b099d7
	(XmMultiList_title_string(e_old) != XmMultiList_title_string(e_set)))
Packit b099d7
    {
Packit b099d7
	XmString	*title, old_title;
Packit b099d7
Packit b099d7
	/* note: fails if both are set at the same time */
Packit b099d7
Packit b099d7
	if (XmMultiList_title_string(e_old) != XmMultiList_title_string(e_set))
Packit b099d7
	{
Packit b099d7
	    title = &XmMultiList_title_string(e_set);
Packit b099d7
	    old_title = XmMultiList_title_string(e_old);
Packit b099d7
	}
Packit b099d7
	else
Packit b099d7
	{
Packit b099d7
	    title = &XmMultiList_title(e_set);
Packit b099d7
	    old_title = XmMultiList_title(e_old);
Packit b099d7
	}
Packit b099d7
Packit b099d7
	if ((*title == NULL) || (old_title == NULL))
Packit b099d7
	{
Packit b099d7
	    LayoutChildren(set);	
Packit b099d7
	}    
Packit b099d7
	
Packit b099d7
	if (*title != NULL)
Packit b099d7
	{
Packit b099d7
	    Arg		zargs[2];
Packit b099d7
	    Cardinal	znum_args = 0;
Packit b099d7
	    
Packit b099d7
	    *title = XmStringCopy(*title);
Packit b099d7
Packit b099d7
	    XtSetArg(zargs[znum_args], XmNlabelString, *title); znum_args++;
Packit b099d7
	    XtSetValues(XmMultiList_title_wid(e_set), zargs, znum_args);
Packit b099d7
	}
Packit b099d7
Packit b099d7
	XmStringFree(old_title);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    return(redisplay);   
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: GeometryManager
Packit b099d7
 *	Description:   handles requests from children for a size change.
Packit b099d7
 *	Arguments:     child - the child to change.
Packit b099d7
 *                     request - the geometry that the child wants.
Packit b099d7
 *                     return - what we will allow if this is an almost.
Packit b099d7
 *	Returns:       status.
Packit b099d7
 *
Packit b099d7
 * This function will allow any width or height request on the label,
Packit b099d7
 * find button, or frame.  Any other widget will have its request
Packit b099d7
 * disallowed.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static XtGeometryResult
Packit b099d7
GeometryManager(Widget w, XtWidgetGeometry * request, 
Packit b099d7
		XtWidgetGeometry * result)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget	elist = (XmMultiListWidget) XtParent(w);
Packit b099d7
    XtGeometryResult	answer = XtGeometryYes;
Packit b099d7
Packit b099d7
    if (!(request->request_mode & (CWWidth | CWHeight | CWBorderWidth)))
Packit b099d7
	return(XtGeometryNo);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Only these three widgets are ever allowed to initiate a resize
Packit b099d7
     * request:  Frame (parent of I18List), Title Widget, Find Button
Packit b099d7
     *
Packit b099d7
     * The scrollbars should be allowed to be thicker, and the text area
Packit b099d7
     * should be able to ask to resize the window wider if necessary...
Packit b099d7
     */
Packit b099d7
    if ((w != XmMultiList_title_wid(elist)) && (w != XmMultiList_find(elist)) &&
Packit b099d7
	(w != XmMultiList_frame(elist)))
Packit b099d7
	return(XtGeometryNo);
Packit b099d7
    
Packit b099d7
    /*
Packit b099d7
     * Handle the request from the I18List (frame & ilist) child to resize...
Packit b099d7
     */
Packit b099d7
    if ((w == XmMultiList_frame(elist)) &&
Packit b099d7
	((request->request_mode & CWWidth) ||
Packit b099d7
	 (request->request_mode & CWWidth)))
Packit b099d7
    {
Packit b099d7
	Widget			parent = XtParent(XtParent(w));
Packit b099d7
	XtWidgetGeometry	ext_request, ext_reply;
Packit b099d7
Packit b099d7
	ext_request.request_mode = 0;
Packit b099d7
Packit b099d7
	if (request->request_mode & CWWidth)
Packit b099d7
	{
Packit b099d7
	    ext_request.width = elist->core.width -
Packit b099d7
		(w->core.width - request->width);
Packit b099d7
	    ext_request.request_mode |= CWWidth;
Packit b099d7
	}
Packit b099d7
Packit b099d7
	if (request->request_mode & CWHeight)
Packit b099d7
	{
Packit b099d7
	    ext_request.height = elist->core.height -
Packit b099d7
		(w->core.height - request->height);
Packit b099d7
	    ext_request.request_mode |= CWHeight;
Packit b099d7
	}
Packit b099d7
Packit b099d7
	answer = XtMakeGeometryRequest(parent, &ext_request, &ext_reply);
Packit b099d7
Packit b099d7
	if (answer == XtGeometryYes) 
Packit b099d7
	{
Packit b099d7
	    if (request->request_mode & CWHeight)
Packit b099d7
		elist->core.height = ext_request.height;
Packit b099d7
	    if (request->request_mode & CWWidth)
Packit b099d7
		elist->core.width = ext_request.width;
Packit b099d7
	}
Packit b099d7
	else if (answer == XtGeometryAlmost)
Packit b099d7
	{
Packit b099d7
	    if (request->request_mode & CWHeight)
Packit b099d7
		elist->core.height = ext_reply.height;
Packit b099d7
	    if (request->request_mode & CWWidth)
Packit b099d7
		elist->core.width = ext_reply.width;
Packit b099d7
	}
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (!(request->request_mode & CWWidth))
Packit b099d7
	request->width = w->core.width;
Packit b099d7
Packit b099d7
    if (!(request->request_mode & CWHeight))
Packit b099d7
	request->height = w->core.height;
Packit b099d7
Packit b099d7
    if (!(request->request_mode & CWBorderWidth)) 
Packit b099d7
	request->border_width = w->core.border_width;
Packit b099d7
Packit b099d7
    *result = *request;
Packit b099d7
Packit b099d7
    if (request->request_mode & (CWX | CWY | CWStackMode | CWSibling)) {
Packit b099d7
	return(XtGeometryAlmost);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (request->request_mode & XtCWQueryOnly) 
Packit b099d7
	return(XtGeometryYes);
Packit b099d7
    
Packit b099d7
    /*
Packit b099d7
     * A real allowed request, set the new dimensions
Packit b099d7
     */
Packit b099d7
    w->core.width = result->width;
Packit b099d7
    w->core.height = result->height;
Packit b099d7
Packit b099d7
    LayoutChildren((Widget) elist);
Packit b099d7
Packit b099d7
    return(answer);
Packit b099d7
}
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * Actions and Callbacks (More entry points into the widget code).
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static void
Packit b099d7
ActivateTextSearch(Widget w, XtPointer elist_ptr, XtPointer client)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) elist_ptr;
Packit b099d7
    XmMultiListCallbackStruct find_info;
Packit b099d7
    XmPushButtonCallbackStruct *cbs = (XmPushButtonCallbackStruct *) client;
Packit b099d7
    Boolean reset = True;
Packit b099d7
    XmMultiListRowInfo *match;
Packit b099d7
Packit b099d7
    char * ptr;
Packit b099d7
    wchar_t *wc_string;
Packit b099d7
Packit b099d7
    if (!XmMultiList_show_find(elist))
Packit b099d7
        return;
Packit b099d7
Packit b099d7
    ptr = XmTextFieldGetString(XmMultiList_find_text(elist));
Packit b099d7
    wc_string = XmTextFieldGetStringWcs(XmMultiList_find_text(elist));
Packit b099d7
Packit b099d7
    if (XmMultiList_last_search(elist))
Packit b099d7
      reset = !streq(ptr, XmMultiList_last_search(elist));
Packit b099d7
Packit b099d7
    /* Last parameter tells search proc to highlight a matching row... */
Packit b099d7
    match = XmI18ListFindRow(XmMultiList_ilist(elist), ptr,
Packit b099d7
			     &find_info.column, reset, True);
Packit b099d7
Packit b099d7
    find_info.event = cbs->event;
Packit b099d7
    find_info.string = ptr;
Packit b099d7
    find_info.wc_string = wc_string;
Packit b099d7
    find_info.row = match;
Packit b099d7
Packit b099d7
    if (!match)
Packit b099d7
    {
Packit b099d7
	XBell(XtDisplay(w), 0);
Packit b099d7
Packit b099d7
	find_info.reason = XmMULTILIST_NOT_FOUND;
Packit b099d7
Packit b099d7
	XtCallCallbackList((Widget) elist, XmMultiList_not_found(elist),
Packit b099d7
			   (XtPointer) &find_info);
Packit b099d7
    }
Packit b099d7
    else
Packit b099d7
    {
Packit b099d7
	find_info.reason = XmMULTILIST_FOUND;
Packit b099d7
Packit b099d7
	XtCallCallbackList((Widget) elist, XmMultiList_item_found(elist),
Packit b099d7
			   (XtPointer) &find_info);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    XtFree((XtPointer)wc_string);
Packit b099d7
    XtFree(XmMultiList_last_search(elist));
Packit b099d7
    XmMultiList_last_search(elist) = ptr;
Packit b099d7
}
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
*	LOCAL CODE
Packit b099d7
*************************************************************/
Packit b099d7
Packit b099d7
/*	Function Name: LayoutChildren
Packit b099d7
 *	Description:   Lays out the "child" widgets in the Ext List widget.
Packit b099d7
 *	Arguments:     w - the ext list widget.
Packit b099d7
 *	Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static void LayoutChildren(Widget w) 
Packit b099d7
{
Packit b099d7
    Arg args[1]; 
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
    
Packit b099d7
    Widget t_wid = XmMultiList_title_wid(elist);
Packit b099d7
    Widget frame = XmMultiList_frame(elist);
Packit b099d7
    Widget find_text = XmMultiList_find_text(elist);
Packit b099d7
    Widget vbar = XmMultiList_v_bar(elist);
Packit b099d7
    Widget hbar = XmMultiList_h_bar(elist);
Packit b099d7
Packit b099d7
    Dimension title_height, h_thick, v_thick, temp_val;
Packit b099d7
    Position scroll_top, scroll_bottom, scroll_left, scroll_right;
Packit b099d7
Packit b099d7
    Dimension height = elist->core.height;
Packit b099d7
    Dimension width = elist->core.width;
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Put Find and Find Text along the bottom
Packit b099d7
     */
Packit b099d7
    PositionFindAndFindText(w);
Packit b099d7
Packit b099d7
    if ((XmMultiList_title(elist) == NULL) && 
Packit b099d7
	(XmMultiList_title_string(elist) == NULL))
Packit b099d7
    {
Packit b099d7
	scroll_top = V_MARGIN;
Packit b099d7
Packit b099d7
	XtSetArg(args[0], XmNmappedWhenManaged, False);
Packit b099d7
	XtSetValues(t_wid, args, (Cardinal) 1);
Packit b099d7
    }
Packit b099d7
    else
Packit b099d7
    {
Packit b099d7
	/* 
Packit b099d7
	 * Put the title widget in the top left corner 
Packit b099d7
	 */
Packit b099d7
	if (LayoutIsRtoLM(w))
Packit b099d7
	    _XmMoveWidget(t_wid, (Position)(width - H_MARGIN - XtWidth(t_wid)),
Packit b099d7
	                  (Position) V_MARGIN);
Packit b099d7
	else
Packit b099d7
	    _XmMoveWidget(t_wid, (Position) H_MARGIN, (Position) V_MARGIN);
Packit b099d7
Packit b099d7
	XtSetArg(args[0], XmNmappedWhenManaged, True);
Packit b099d7
	XtSetValues(t_wid, args, (Cardinal) 1);
Packit b099d7
Packit b099d7
	title_height = t_wid->core.height + 2 * t_wid->core.border_width;
Packit b099d7
	
Packit b099d7
	scroll_top = title_height + 2 * V_MARGIN;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    v_thick = vbar->core.width + 2 * vbar->core.border_width;
Packit b099d7
    h_thick = hbar->core.height + 2 * vbar->core.border_width;
Packit b099d7
Packit b099d7
    if (XmMultiList_show_find(elist))
Packit b099d7
        scroll_bottom = find_text->core.y - find_text->core.border_width - V_MARGIN;
Packit b099d7
    else
Packit b099d7
    	scroll_bottom = height - V_MARGIN;
Packit b099d7
Packit b099d7
    scroll_left = H_MARGIN;
Packit b099d7
    scroll_right = width - H_MARGIN;
Packit b099d7
    
Packit b099d7
    /*
Packit b099d7
     * Place the frame.
Packit b099d7
     *
Packit b099d7
     * NOTE: I am reusing "width" and "height" for the size of the widget
Packit b099d7
     *       that I am about to configure.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    temp_val = v_thick + scroll_left + H_MARGIN;
Packit b099d7
    if ((int)temp_val >= (int)scroll_right)
Packit b099d7
	width = 1;
Packit b099d7
    else
Packit b099d7
	width = scroll_right - temp_val;
Packit b099d7
Packit b099d7
    temp_val = h_thick + scroll_top + V_MARGIN;
Packit b099d7
    if ( (Position) temp_val >= scroll_bottom )
Packit b099d7
	height = 1;
Packit b099d7
    else
Packit b099d7
	height = scroll_bottom - temp_val;
Packit b099d7
Packit b099d7
    _XmConfigureWidget(frame, scroll_left, scroll_top, width, height,
Packit b099d7
		       frame->core.border_width);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Place the scrollbars.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    _XmConfigureWidget(hbar, scroll_left, scroll_bottom - (Position) h_thick,
Packit b099d7
		       width, hbar->core.height, hbar->core.border_width);
Packit b099d7
Packit b099d7
    temp_val = h_thick + scroll_top + V_MARGIN;
Packit b099d7
    if ( (Position) temp_val >= scroll_bottom)
Packit b099d7
	height = 1;
Packit b099d7
    else
Packit b099d7
	height = scroll_bottom - temp_val;
Packit b099d7
    
Packit b099d7
    _XmConfigureWidget(vbar, scroll_right - v_thick, scroll_top,
Packit b099d7
		       vbar->core.width, height, vbar->core.border_width);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: PositionFindAndFindText
Packit b099d7
 *  Description:   Positions the find and find text widgets.
Packit b099d7
 *  Arguments:     parent - the parent of the find and find text- the EList
Packit b099d7
 *  Returns:       none.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static void PositionFindAndFindText(Widget w)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    Widget find = XmMultiList_find(elist);
Packit b099d7
    Widget find_text = XmMultiList_find_text(elist);
Packit b099d7
Packit b099d7
    Dimension find_height, max_child_height, find_width;
Packit b099d7
    Dimension height = elist->core.height;
Packit b099d7
    Dimension width = elist->core.width;
Packit b099d7
    Position find_x, find_y;
Packit b099d7
Packit b099d7
    if (!XmMultiList_show_find(elist))
Packit b099d7
        return;
Packit b099d7
Packit b099d7
    find_height = find->core.height + 2 * find->core.border_width;
Packit b099d7
    find_width = find->core.width + 2 * find->core.border_width;
Packit b099d7
    max_child_height = find_text->core.height + 2*find_text->core.border_width;
Packit b099d7
Packit b099d7
    if (find_height > max_child_height)
Packit b099d7
    max_child_height = find_height;
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Put the Find widget in the lower left corner.
Packit b099d7
     */
Packit b099d7
    if (LayoutIsRtoLM(w))
Packit b099d7
        find_x = width - H_MARGIN - find_width;
Packit b099d7
    else
Packit b099d7
        find_x = H_MARGIN;
Packit b099d7
Packit b099d7
    find_y = (Position) height -
Packit b099d7
         (Position) ((int)(max_child_height + find_height)/2 + V_MARGIN);
Packit b099d7
Packit b099d7
    _XmMoveWidget(find, find_x, find_y);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * Put the Find Text widget next to the find widget,
Packit b099d7
     * and resize it to fill the entire bottom width.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    {
Packit b099d7
    Dimension text_width, temp_val;
Packit b099d7
    Position x, y;
Packit b099d7
Packit b099d7
Packit b099d7
    if (LayoutIsRtoLM(w))
Packit b099d7
	x = H_MARGIN;
Packit b099d7
    else
Packit b099d7
	x = (Dimension) find_x + find_width + H_MARGIN;
Packit b099d7
    
Packit b099d7
    y = find_y - (int)(max_child_height - find_height)/2;
Packit b099d7
Packit b099d7
    temp_val = x + H_MARGIN;
Packit b099d7
    if (temp_val >= width)
Packit b099d7
        text_width = 1;
Packit b099d7
    else
Packit b099d7
	if (LayoutIsRtoLM(w))
Packit b099d7
            text_width = width - find_width - temp_val;
Packit b099d7
	else
Packit b099d7
            text_width = width - temp_val;
Packit b099d7
Packit b099d7
    _XmConfigureWidget(find_text, x, y, text_width, find_text->core.height,
Packit b099d7
               find_text->core.border_width);
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
/************************************************************
Packit b099d7
 * 
Packit b099d7
 * Functions that Create Widgets.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
 
Packit b099d7
/*	Function Name: CreateTitle
Packit b099d7
 *	Description:   Creates the Title widget.
Packit b099d7
 *	Arguments:     parent - parent of the title widget.
Packit b099d7
 *                     label - The label string. 
Packit b099d7
 *                     args, num_args - arguments used to create ext list.
Packit b099d7
 *	Returns:       the title widget.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static Widget 
Packit b099d7
CreateTitle(Widget parent, XmString label, ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    Widget w;
Packit b099d7
    Arg *new_args, largs[5];
Packit b099d7
    Cardinal num_largs;
Packit b099d7
Packit b099d7
    num_largs = 0;
Packit b099d7
    if (label != NULL) {
Packit b099d7
	XtSetArg(largs[num_largs], XmNlabelString, label); num_largs++;
Packit b099d7
    }
Packit b099d7
    new_args = XtMergeArgLists(args, num_args, largs, num_largs);
Packit b099d7
Packit b099d7
    w = XtCreateManagedWidget("title", xmLabelWidgetClass, parent, 
Packit b099d7
			      new_args, num_largs + num_args);
Packit b099d7
Packit b099d7
    XtFree((XtPointer) new_args);
Packit b099d7
    return(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: CreateScrollbar
Packit b099d7
 *	Description:   Creates a vert or horizontal scrollbar.
Packit b099d7
 *	Arguments:     parent - parent of the scrollbar widget.
Packit b099d7
 *                     is_vert - if true then create a vertical scrollbar, 
Packit b099d7
 *                               else, create a horiz one.
Packit b099d7
 *                     args, num_args - arguments used to create ext list.
Packit b099d7
 *	Returns:       none
Packit b099d7
 */
Packit b099d7
Packit b099d7
static Widget 
Packit b099d7
CreateScrollbar(Widget parent, Boolean is_vert,ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    Widget w;
Packit b099d7
    Arg *new_args, largs[5];
Packit b099d7
    Cardinal num_largs = 0;
Packit b099d7
    String name;
Packit b099d7
Packit b099d7
    if (is_vert) {
Packit b099d7
	XtSetArg(largs[num_largs], XmNorientation, XmVERTICAL);
Packit b099d7
	name = "vertBar";
Packit b099d7
    }
Packit b099d7
    else {
Packit b099d7
	XtSetArg(largs[num_largs], XmNorientation, XmHORIZONTAL);
Packit b099d7
	name = "horizBar";
Packit b099d7
    }
Packit b099d7
    num_largs++;
Packit b099d7
    new_args = XtMergeArgLists(args, num_args, largs, num_largs);
Packit b099d7
Packit b099d7
    w = XtCreateManagedWidget(name, xmScrollBarWidgetClass, parent,
Packit b099d7
			      new_args, num_args + num_largs);
Packit b099d7
Packit b099d7
    XtFree((XtPointer) new_args);
Packit b099d7
Packit b099d7
    return(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
static Widget
Packit b099d7
CreateFindButton(Widget parent, ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    Widget w;
Packit b099d7
    Arg *new_args, largs[5];
Packit b099d7
    Cardinal num_largs = 0;
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) parent;
Packit b099d7
Packit b099d7
    num_largs = 0;
Packit b099d7
    XtSetArg(largs[num_largs], XmNlabelString, XmMultiList_find_label(elist)); 
Packit b099d7
                  num_largs++;
Packit b099d7
    new_args = XtMergeArgLists(args, num_args, largs, num_largs);
Packit b099d7
Packit b099d7
    w = XtCreateWidget("find", xmPushButtonWidgetClass, parent,
Packit b099d7
                  new_args, num_largs + num_args);
Packit b099d7
    XtAddCallback(w, XmNactivateCallback, ActivateTextSearch, parent);
Packit b099d7
Packit b099d7
    if (XmMultiList_show_find(elist))
Packit b099d7
        XtManageChild(w);
Packit b099d7
Packit b099d7
    XtFree((XtPointer) new_args);
Packit b099d7
Packit b099d7
    return(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: CreateFindText
Packit b099d7
 *  Description:   Creates the find text.
Packit b099d7
 *  Arguments:     parent - parent of the find text widget.
Packit b099d7
 *                     args, num_args - arguments used to create ext list.
Packit b099d7
 *  Returns:       the find text widget.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static Widget
Packit b099d7
CreateFindText(Widget parent, ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    Widget w;
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) parent;
Packit b099d7
Packit b099d7
    w = XtCreateWidget("findText", xmTextFieldWidgetClass,
Packit b099d7
                  parent, args, num_args);
Packit b099d7
    XtAddCallback(w, XmNactivateCallback, ActivateTextSearch, parent);
Packit b099d7
Packit b099d7
    if (XmMultiList_show_find(elist))
Packit b099d7
        XtManageChild(w);
Packit b099d7
Packit b099d7
    return(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/*	Function Name: CreateFrame
Packit b099d7
 *	Description:   Creates the frame to contain the list region
Packit b099d7
 *	Arguments:     parent - parent of the frame.
Packit b099d7
 *                     args, num_args - arguments used to create ext list.
Packit b099d7
 *	Returns:       none
Packit b099d7
 */
Packit b099d7
Packit b099d7
static Widget 
Packit b099d7
CreateFrame(Widget parent, ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) parent;
Packit b099d7
    Widget w;
Packit b099d7
    Arg largs[2], * new_args;
Packit b099d7
    Cardinal num_largs;
Packit b099d7
Packit b099d7
    num_largs = 0;
Packit b099d7
    XtSetArg(largs[num_largs], XmNshadowType, XmSHADOW_IN); num_largs++;
Packit b099d7
    new_args = XtMergeArgLists(args, num_args, largs, num_largs);
Packit b099d7
Packit b099d7
    w = XtCreateWidget("frame", xmFrameWidgetClass, parent,
Packit b099d7
		       new_args, num_args + num_largs);
Packit b099d7
    
Packit b099d7
    XtFree((XtPointer) new_args);
Packit b099d7
Packit b099d7
    num_largs = 0;
Packit b099d7
    XtSetArg(largs[num_largs], XmNverticalScrollBar, XmMultiList_v_bar(elist));
Packit b099d7
    num_largs++;    
Packit b099d7
    XtSetArg(largs[num_largs], XmNhorizontalScrollBar, XmMultiList_h_bar(elist));
Packit b099d7
    num_largs++;    
Packit b099d7
Packit b099d7
    new_args = XtMergeArgLists(args, num_args, largs, num_largs);
Packit b099d7
    
Packit b099d7
    XmMultiList_ilist(elist) = XtCreateManagedWidget("list", xmI18ListWidgetClass,
Packit b099d7
						  w, new_args, 
Packit b099d7
						  num_args + num_largs);
Packit b099d7
Packit b099d7
    XtFree((XtPointer) new_args);
Packit b099d7
Packit b099d7
    /* PWC - Note...
Packit b099d7
     *
Packit b099d7
     * Required to force geometry of frame here (it won't inherit child's size)
Packit b099d7
     */
Packit b099d7
    w->core.width = XmMultiList_ilist(elist)->core.width + 
Packit b099d7
	2 * w->core.border_width;
Packit b099d7
    w->core.height = XmMultiList_ilist(elist)->core.height +
Packit b099d7
	2 * w->core.border_width;
Packit b099d7
Packit b099d7
    XtManageChild(w);
Packit b099d7
Packit b099d7
    return(w);
Packit b099d7
}
Packit b099d7
Packit b099d7
/************************************************************
Packit b099d7
 *
Packit b099d7
 * Public Functions.
Packit b099d7
 *
Packit b099d7
 ************************************************************/
Packit b099d7
Packit b099d7
/* -kat 1/18/91
Packit b099d7
 * Function Name: XmMultiListGetSelectedRows
Packit b099d7
 * Description:   Takes an Extended List and returns a NULL terminated array
Packit b099d7
 *                of pointers to selected rows from the internal list
Packit b099d7
 * Arguments:     w - the extended list widget
Packit b099d7
 * Returns:       XmMultiListRowInfo **
Packit b099d7
 */
Packit b099d7
Packit b099d7
XmMultiListRowInfo **
Packit b099d7
XmMultiListGetSelectedRows(Widget w)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
    XmMultiListRowInfo **ret_rows = NULL;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    ret_rows = XmI18ListGetSelectedRows(XmMultiList_ilist(elist));
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
    return ret_rows;
Packit b099d7
}
Packit b099d7
Packit b099d7
/*	Function Name: XmCreateMultiList
Packit b099d7
 *	Description: Creation Routine for UIL and ADA.
Packit b099d7
 *	Arguments: parent - the parent widget.
Packit b099d7
 *                 name - the name of the widget.
Packit b099d7
 *                 args, num_args - the number and list of args.
Packit b099d7
 *	Returns: The created widget.
Packit b099d7
 */
Packit b099d7
Packit b099d7
Widget
Packit b099d7
XmCreateMultiList(Widget parent, String name,
Packit b099d7
		     ArgList args, Cardinal num_args)
Packit b099d7
{
Packit b099d7
    return (XtCreateWidget(name, xmMultiListWidgetClass,
Packit b099d7
			   parent, args, num_args));
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmVaCreateMultiList(
Packit b099d7
        Widget parent,
Packit b099d7
        char *name,
Packit b099d7
        ...)
Packit b099d7
{
Packit b099d7
    register Widget w;
Packit b099d7
    va_list var;
Packit b099d7
    int count;
Packit b099d7
    
Packit b099d7
    Va_start(var,name);
Packit b099d7
    count = XmeCountVaListSimple(var);
Packit b099d7
    va_end(var);
Packit b099d7
Packit b099d7
    
Packit b099d7
    Va_start(var, name);
Packit b099d7
    w = XmeVLCreateWidget(name, 
Packit b099d7
                         xmMultiListWidgetClass,
Packit b099d7
                         parent, False, 
Packit b099d7
                         var, count);
Packit b099d7
    va_end(var);   
Packit b099d7
    return w;
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget
Packit b099d7
XmVaCreateManagedMultiList(
Packit b099d7
        Widget parent,
Packit b099d7
        char *name,
Packit b099d7
        ...)
Packit b099d7
{
Packit b099d7
    Widget w = NULL;
Packit b099d7
    va_list var;
Packit b099d7
    int count;
Packit b099d7
    
Packit b099d7
    Va_start(var, name);
Packit b099d7
    count = XmeCountVaListSimple(var);
Packit b099d7
    va_end(var);
Packit b099d7
    
Packit b099d7
    Va_start(var, name);
Packit b099d7
    w = XmeVLCreateWidget(name, 
Packit b099d7
                         xmMultiListWidgetClass,
Packit b099d7
                         parent, True, 
Packit b099d7
                         var, count);
Packit b099d7
    va_end(var);   
Packit b099d7
    return w;
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListUnselectAllItems
Packit b099d7
 *  Description:   Unselects all rows
Packit b099d7
 *  Arguments:     w - the ilist widget.
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListUnselectAllItems(Widget w)
Packit b099d7
{
Packit b099d7
  XmMultiListWidget elist = (XmMultiListWidget)w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
  Xm18IListUnselectAllItems( XmMultiList_ilist(elist) );
Packit b099d7
Packit b099d7
  _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListUnselectItem
Packit b099d7
 *  Description:   Unselects the row passed in
Packit b099d7
 *  Arguments:     w - the ilist widget.
Packit b099d7
 *                 row_info - ptr to the row passed in
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListUnselectItem(Widget w, XmMultiListRowInfo *row_info)
Packit b099d7
{
Packit b099d7
  XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
  
Packit b099d7
  Xm18IListUnselectItem( XmMultiList_ilist(elist), row_info );
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListToggleRow
Packit b099d7
 *  Description:   Toggles the selection state of a specified row
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListToggleRow(Widget w, short row)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListToggleRow(XmMultiList_ilist(elist), row);
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListSelectItems
Packit b099d7
 *  Description:   Set selection state by matching column entries to XmString
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *		   item - XmString to use as selection key
Packit b099d7
 *		   notify - if True, call XmNsingleSelectionCallback
Packit b099d7
 *		   column - column number (0 - N) to match (or XmANY_COLUMN)
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void XmMultiListSelectItems(Widget w, XmString item,
Packit b099d7
			    int column, Boolean notify)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
    
Packit b099d7
    XmI18ListSelectItems((XmI18ListWidget)XmMultiList_ilist(elist),
Packit b099d7
			 item, column, notify);
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListDeselectItems
Packit b099d7
 *  Description:   Set selection state by matching column entries to XmString
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *		   item - XmString to use as selection key
Packit b099d7
 *		   column - column number (0 - N) to match (or XmANY_COLUMN)
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListDeselectItems(Widget w, XmString item, int column)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListDeselectItems((XmI18ListWidget)XmMultiList_ilist(elist),
Packit b099d7
			   item, column);
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListSelectAllItems
Packit b099d7
 *  Description:   Set selection state of all rows
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *		   notify - if True, call XmNsingleSelectionCallback
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void XmMultiListSelectAllItems(Widget w, Boolean notify)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListSelectAllItems((XmI18ListWidget)XmMultiList_ilist(elist), notify);
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListSelectRow
Packit b099d7
 *  Description:   Set selection state on all rows
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *                 row - the row to select
Packit b099d7
 *		   notify - if True, call XmNsingleSelectionCallback
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListSelectRow(Widget w, int row, Boolean notify)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListSelectRow((XmI18ListWidget)XmMultiList_ilist(elist), row, notify);
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListDeselectRow
Packit b099d7
 *  Description:   Set selection state on all rows
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *                 row - the row to select
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListDeselectRow(Widget w, int row)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListDeselectRow((XmI18ListWidget)XmMultiList_ilist(elist), row);
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiGetSelectedRowArray
Packit b099d7
 *  Description:   Creates an array of integers which are selected row #'s
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *		   rows - pointer to the array of selected row #'s
Packit b099d7
 *		   num_rows - pointer to the number of selected rows
Packit b099d7
 *  Returns:       selected rows array
Packit b099d7
 */
Packit b099d7
int *
Packit b099d7
XmMultiListGetSelectedRowArray(Widget w, int *num_rows)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
    int *ret_val;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    ret_val = XmI18ListGetSelectedRowArray(
Packit b099d7
            (XmI18ListWidget)XmMultiList_ilist(elist),
Packit b099d7
					num_rows);
Packit b099d7
    _XmAppUnlock(app);
Packit b099d7
    return ret_val;
Packit b099d7
}
Packit b099d7
Packit b099d7
/*  Function Name: XmMultiListMakeRowVisible
Packit b099d7
 *  Description:   Shifts the visible extended list rows as desired
Packit b099d7
 *  Arguments:     w - the extended list widget
Packit b099d7
 *		   row - the row number wished to be made visible
Packit b099d7
 *  Returns:       none
Packit b099d7
 */
Packit b099d7
void
Packit b099d7
XmMultiListMakeRowVisible(Widget w, int row)
Packit b099d7
{
Packit b099d7
    XmMultiListWidget elist = (XmMultiListWidget) w;
Packit b099d7
Packit b099d7
    _XmWidgetToAppContext(w);
Packit b099d7
    _XmAppLock(app);
Packit b099d7
Packit b099d7
    XmI18ListMakeRowVisible((XmI18ListWidget)XmMultiList_ilist(elist), row);
Packit b099d7
Packit b099d7
    _XmAppUnlock(app); 
Packit b099d7
}
Packit b099d7
Packit b099d7
/* aliases of deprecated functiosn of XmExt18List */
Packit b099d7
extern WidgetClass xmExt18ListWidgetClass XM_ALIAS(xmMultiListWidgetClass);
Packit b099d7
XmMultiListRowInfo ** XmExt18ListGetSelectedRows(Widget) XM_ALIAS(XmMultiListGetSelectedRows);
Packit b099d7
Widget XmCreateExtended18List(Widget, String, ArgList, Cardinal) XM_ALIAS(XmCreateMultiList);
Packit b099d7
Widget XmCreateExt18List(Widget, String, ArgList, Cardinal) XM_ALIAS(XmCreateMultiList);
Packit b099d7
Widget XmVaCreateExt18List(Widget, char *, ...) XM_ALIAS(XmVaCreateMultiList);
Packit b099d7
Widget XmVaCreateManagedExt18List(Widget, char *, ...) XM_ALIAS(XmVaCreateManagedMultiList);
Packit b099d7
void XmExt18ListUnselectAllItems(Widget) XM_ALIAS(XmMultiListUnselectAllItems);
Packit b099d7
void XmExt18ListUnselectItem(Widget, XmMultiListRowInfo*) XM_ALIAS(XmMultiListUnselectItem);
Packit b099d7
void XmExt18ListToggleRow(Widget, short) XM_ALIAS(XmMultiListToggleRow);
Packit b099d7
void XmExt18ListSelectItems(Widget, XmString, int, Boolean) XM_ALIAS(XmMultiListSelectItems);
Packit b099d7
void XmExt18ListDeselectItems(Widget, XmString, int) XM_ALIAS(XmMultiListDeselectItems);
Packit b099d7
void XmExt18ListSelectAllItems(Widget, Boolean) XM_ALIAS(XmMultiListSelectAllItems);
Packit b099d7
void XmExt18ListSelectRow(Widget, int, Boolean) XM_ALIAS(XmMultiListSelectRow);
Packit b099d7
void XmExt18ListDeselectRow(Widget, int) XM_ALIAS(XmMultiListDeselectRow);
Packit b099d7
int *XmExt18ListGetSelectedRowArray(Widget, int *) XM_ALIAS(XmMultiListGetSelectedRowArray);
Packit b099d7
void XmExt18ListMakeRowVisible(Widget, int) XM_ALIAS(XmMultiListMakeRowVisible);
Packit b099d7
extern XmMultiListClassRec xmExt18ListClassRec XM_ALIAS(xmMultiListClassRec);