|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$XConsortium: Sash.c /main/12 1995/07/13 17:51:55 drk $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/* (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
|
|
Packit |
b099d7 |
/* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
|
|
Packit |
b099d7 |
/* (c) Copyright 1988 MASSACHUSETTS INSTITUTE OF TECHNOLOGY */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <X11/cursorfont.h>
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
#include <Xm/SashP.h>
|
|
Packit |
b099d7 |
#include <Xm/TransltnsP.h>
|
|
Packit |
b099d7 |
#include <Xm/DrawP.h>
|
|
Packit |
b099d7 |
#include <Xm/DisplayP.h>
|
|
Packit |
b099d7 |
#include "MenuStateI.h"
|
|
Packit |
b099d7 |
#include "TraversalI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define defTranslations _XmSash_defTranslations
|
|
Packit |
b099d7 |
#define SASHSIZE 10
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc) ;
|
|
Packit |
b099d7 |
static void ClassInitialize( void ) ;
|
|
Packit |
b099d7 |
static void Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void HighlightSash(
|
|
Packit |
b099d7 |
Widget sash) ;
|
|
Packit |
b099d7 |
static void UnhighlightSash(
|
|
Packit |
b099d7 |
Widget sash) ;
|
|
Packit |
b099d7 |
static XmNavigability WidgetNavigable(
|
|
Packit |
b099d7 |
Widget wid) ;
|
|
Packit |
b099d7 |
static void SashFocusIn(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
char **params,
|
|
Packit |
b099d7 |
Cardinal *num_params) ;
|
|
Packit |
b099d7 |
static void SashFocusOut(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
char **params,
|
|
Packit |
b099d7 |
Cardinal *num_params) ;
|
|
Packit |
b099d7 |
static void SashAction(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
String *params,
|
|
Packit |
b099d7 |
Cardinal *num_params) ;
|
|
Packit |
b099d7 |
static void Realize(
|
|
Packit |
b099d7 |
register Widget w,
|
|
Packit |
b099d7 |
XtValueMask *p_valueMask,
|
|
Packit |
b099d7 |
XSetWindowAttributes *attributes) ;
|
|
Packit |
b099d7 |
static void Redisplay(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
Region region) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void SashDisplayDestroyCallback (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XtPointer client_data,
|
|
Packit |
b099d7 |
XtPointer call_data );
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] = {
|
|
Packit |
b099d7 |
{XmNborderWidth, XmCBorderWidth, XmRHorizontalDimension, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSashRec, core.border_width), XmRImmediate, (XtPointer) 0},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{XmNcallback, XmCCallback, XmRCallback, sizeof(XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSashRec, sash.sash_action), XmRPointer, NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNnavigationType, XmCNavigationType, XmRNavigationType,
|
|
Packit |
b099d7 |
sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmPrimitiveRec, primitive.navigation_type),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmSTICKY_TAB_GROUP},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtActionsRec actionsList[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{"SashAction", SashAction},
|
|
Packit |
b099d7 |
{"SashFocusIn", SashFocusIn},
|
|
Packit |
b099d7 |
{"SashFocusOut", SashFocusOut},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmBaseClassExtRec SashBaseClassExtRec = {
|
|
Packit |
b099d7 |
NULL,
|
|
Packit |
b099d7 |
NULLQUARK,
|
|
Packit |
b099d7 |
XmBaseClassExtVersion,
|
|
Packit |
b099d7 |
sizeof(XmBaseClassExtRec),
|
|
Packit |
b099d7 |
NULL, /* InitializePrehook */
|
|
Packit |
b099d7 |
NULL, /* SetValuesPrehook */
|
|
Packit |
b099d7 |
NULL, /* InitializePosthook */
|
|
Packit |
b099d7 |
NULL, /* SetValuesPosthook */
|
|
Packit |
b099d7 |
NULL, /* secondaryObjectClass */
|
|
Packit |
b099d7 |
NULL, /* secondaryCreate */
|
|
Packit |
b099d7 |
NULL, /* getSecRes data */
|
|
Packit |
b099d7 |
{ 0 }, /* fastSubclass flags */
|
|
Packit |
b099d7 |
NULL, /* get_values_prehook */
|
|
Packit |
b099d7 |
NULL, /* get_values_posthook */
|
|
Packit |
b099d7 |
NULL, /* classPartInitPrehook */
|
|
Packit |
b099d7 |
NULL, /* classPartInitPosthook*/
|
|
Packit |
b099d7 |
NULL, /* ext_resources */
|
|
Packit |
b099d7 |
NULL, /* compiled_ext_resources*/
|
|
Packit |
b099d7 |
0, /* num_ext_resources */
|
|
Packit |
b099d7 |
FALSE, /* use_sub_resources */
|
|
Packit |
b099d7 |
WidgetNavigable, /* widgetNavigable */
|
|
Packit |
b099d7 |
XmInheritFocusChange, /* focusChange */
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmsashclassrec) XmSashClassRec xmSashClassRec = {
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* core class fields */
|
|
Packit |
b099d7 |
/* superclass */ (WidgetClass) &xmPrimitiveClassRec,
|
|
Packit |
b099d7 |
/* class name */ "XmSash",
|
|
Packit |
b099d7 |
/* size */ sizeof(XmSashRec),
|
|
Packit |
b099d7 |
/* class initialize */ ClassInitialize,
|
|
Packit |
b099d7 |
/* class_part_init */ ClassPartInitialize,
|
|
Packit |
b099d7 |
/* class_inited */ FALSE,
|
|
Packit |
b099d7 |
/* initialize */ Initialize,
|
|
Packit |
b099d7 |
/* initialize_hook */ NULL,
|
|
Packit |
b099d7 |
/* realize */ Realize,
|
|
Packit |
b099d7 |
/* actions */ actionsList,
|
|
Packit |
b099d7 |
/* num_actions */ XtNumber(actionsList),
|
|
Packit |
b099d7 |
/* resourses */ resources,
|
|
Packit |
b099d7 |
/* resource_count */ XtNumber(resources),
|
|
Packit |
b099d7 |
/* xrm_class */ NULLQUARK,
|
|
Packit |
b099d7 |
/* compress_motion */ TRUE,
|
|
Packit |
b099d7 |
/* compress_exposure */ XtExposeCompressMaximal,
|
|
Packit |
b099d7 |
/* compress_enter/lv */ TRUE,
|
|
Packit |
b099d7 |
/* visible_interest */ FALSE,
|
|
Packit |
b099d7 |
/* destroy */ NULL,
|
|
Packit |
b099d7 |
/* resize */ NULL,
|
|
Packit |
b099d7 |
/* expose */ Redisplay,
|
|
Packit |
b099d7 |
/* set_values */ NULL,
|
|
Packit |
b099d7 |
/* set_values_hook */ NULL,
|
|
Packit |
b099d7 |
/* set_values_almost */ XtInheritSetValuesAlmost,
|
|
Packit |
b099d7 |
/* get_values_hook */ NULL,
|
|
Packit |
b099d7 |
/* accept_focus */ NULL,
|
|
Packit |
b099d7 |
/* version */ XtVersion,
|
|
Packit |
b099d7 |
/* callback_private */ NULL,
|
|
Packit |
b099d7 |
/* tm_table */ defTranslations,
|
|
Packit |
b099d7 |
/* query_geometry */ NULL,
|
|
Packit |
b099d7 |
NULL, /* display_accelerator */
|
|
Packit |
b099d7 |
(XtPointer)&SashBaseClassExtRec, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmInheritWidgetProc, /* Primitive border_highlight */
|
|
Packit |
b099d7 |
XmInheritWidgetProc, /* Primitive border_unhighlight */
|
|
Packit |
b099d7 |
NULL, /* translations */
|
|
Packit |
b099d7 |
NULL, /* arm_and_activate */
|
|
Packit |
b099d7 |
NULL, /* get resources */
|
|
Packit |
b099d7 |
0, /* num get_resources */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(XtPointer) NULL, /* extension */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmsashwidgetclass) WidgetClass xmSashWidgetClass =
|
|
Packit |
b099d7 |
(WidgetClass) &xmSashClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassPartInitialize
|
|
Packit |
b099d7 |
* Set up the fast subclassing for the widget.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmFastSubclassInit(wc, XmSASH_BIT);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassInitialize
|
|
Packit |
b099d7 |
* Initialize the primitive part of class structure with
|
|
Packit |
b099d7 |
* routines to do special highlight & unhighlight for Sash.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassInitialize( void )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
xmSashClassRec.primitive_class.border_highlight =
|
|
Packit |
b099d7 |
HighlightSash;
|
|
Packit |
b099d7 |
xmSashClassRec.primitive_class.border_unhighlight =
|
|
Packit |
b099d7 |
UnhighlightSash;
|
|
Packit |
b099d7 |
SashBaseClassExtRec.record_type = XmQmotif;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmSashWidget request = (XmSashWidget) rw ;
|
|
Packit |
b099d7 |
XmSashWidget new_w = (XmSashWidget) nw ;
|
|
Packit |
b099d7 |
if (request->core.width == 0)
|
|
Packit |
b099d7 |
new_w->core.width += SASHSIZE;
|
|
Packit |
b099d7 |
if (request->core.height == 0)
|
|
Packit |
b099d7 |
new_w->core.height += SASHSIZE;
|
|
Packit |
b099d7 |
new_w->sash.has_focus = False;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
HighlightSash(
|
|
Packit |
b099d7 |
Widget sash )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int x, y;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
x = y = ((XmSashWidget) sash)->primitive.shadow_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XFillRectangle( XtDisplay( sash), XtWindow( sash),
|
|
Packit |
b099d7 |
((XmSashWidget) sash)->primitive.highlight_GC,
|
|
Packit |
b099d7 |
x,y, sash->core.width-(2*x), sash->core.height-(2*y));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
UnhighlightSash(
|
|
Packit |
b099d7 |
Widget sash )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int x, y;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
x = y = ((XmSashWidget) sash)->primitive.shadow_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XClearArea( XtDisplay( sash), XtWindow( sash),
|
|
Packit |
b099d7 |
x,y, sash->core.width-(2*x), sash->core.height-(2*y),
|
|
Packit |
b099d7 |
FALSE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmNavigability
|
|
Packit |
b099d7 |
WidgetNavigable(
|
|
Packit |
b099d7 |
Widget wid)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( _XmShellIsExclusive( wid) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Preserve 1.0 behavior. (Why? Don't ask me!)
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
return XmNOT_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( XtIsSensitive(wid)
|
|
Packit |
b099d7 |
&& ((XmPrimitiveWidget) wid)->primitive.traversal_on )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNavigationType nav_type = ((XmPrimitiveWidget) wid)
|
|
Packit |
b099d7 |
->primitive.navigation_type ;
|
|
Packit |
b099d7 |
if( (nav_type == XmSTICKY_TAB_GROUP)
|
|
Packit |
b099d7 |
|| (nav_type == XmEXCLUSIVE_TAB_GROUP)
|
|
Packit |
b099d7 |
|| ( (nav_type == XmTAB_GROUP)
|
|
Packit |
b099d7 |
&& !_XmShellIsExclusive( wid)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return XmTAB_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return XmNOT_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SashFocusIn(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
char **params,
|
|
Packit |
b099d7 |
Cardinal *num_params )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register XmSashWidget sash = (XmSashWidget) w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (event->xany.type != FocusIn || !event->xfocus.send_event)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (_XmGetFocusPolicy( (Widget) sash) == XmEXPLICIT)
|
|
Packit |
b099d7 |
HighlightSash(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDrawShadows (XtDisplay (w), XtWindow (w),
|
|
Packit |
b099d7 |
sash->primitive.top_shadow_GC,
|
|
Packit |
b099d7 |
sash->primitive.bottom_shadow_GC,
|
|
Packit |
b099d7 |
0,0,w->core.width, w->core.height,
|
|
Packit |
b099d7 |
sash->primitive.shadow_thickness,
|
|
Packit |
b099d7 |
XmSHADOW_OUT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sash->sash.has_focus = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SashFocusOut(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
char **params,
|
|
Packit |
b099d7 |
Cardinal *num_params )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register XmSashWidget sash = (XmSashWidget) w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (event->xany.type != FocusOut || !event->xfocus.send_event)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (_XmGetFocusPolicy( (Widget) sash) == XmEXPLICIT)
|
|
Packit |
b099d7 |
UnhighlightSash(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDrawShadows (XtDisplay (w), XtWindow (w),
|
|
Packit |
b099d7 |
sash->primitive.top_shadow_GC,
|
|
Packit |
b099d7 |
sash->primitive.bottom_shadow_GC,
|
|
Packit |
b099d7 |
0,0,w->core.width, w->core.height,
|
|
Packit |
b099d7 |
sash->primitive.shadow_thickness,
|
|
Packit |
b099d7 |
XmSHADOW_OUT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sash->sash.has_focus = False;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SashAction(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
String *params,
|
|
Packit |
b099d7 |
Cardinal *num_params )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register XmSashWidget sash = (XmSashWidget) widget;
|
|
Packit |
b099d7 |
SashCallDataRec call_data;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
call_data.event = event;
|
|
Packit |
b099d7 |
call_data.params = params;
|
|
Packit |
b099d7 |
call_data.num_params = *num_params;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtCallCallbackList(widget, sash->sash.sash_action, (XtPointer)&call_data);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Realize(
|
|
Packit |
b099d7 |
register Widget w,
|
|
Packit |
b099d7 |
XtValueMask *p_valueMask,
|
|
Packit |
b099d7 |
XSetWindowAttributes *attributes )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDisplay dd = (XmDisplay) XmGetXmDisplay(XtDisplay(w));
|
|
Packit |
b099d7 |
Cursor SashCursor =
|
|
Packit |
b099d7 |
((XmDisplayInfo *)(dd->display.displayInfo))->SashCursor;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (0L == SashCursor)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* create some data shared among all instances on this
|
|
Packit |
b099d7 |
** display; the first one along can create it, and
|
|
Packit |
b099d7 |
** any one can remove it; note no reference count
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
SashCursor =
|
|
Packit |
b099d7 |
((XmDisplayInfo *)(dd->display.displayInfo))->SashCursor =
|
|
Packit |
b099d7 |
XCreateFontCursor(XtDisplay(w), XC_crosshair);
|
|
Packit |
b099d7 |
XtAddCallback((Widget)dd, XtNdestroyCallback,
|
|
Packit |
b099d7 |
SashDisplayDestroyCallback, (XtPointer) NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
attributes->cursor = SashCursor;
|
|
Packit |
b099d7 |
XtCreateWindow (w, InputOutput, CopyFromParent,
|
|
Packit |
b099d7 |
*p_valueMask | CWCursor, attributes);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SashDisplayDestroyCallback
|
|
Packit |
b099d7 |
( Widget w,
|
|
Packit |
b099d7 |
XtPointer client_data, /* unused */
|
|
Packit |
b099d7 |
XtPointer call_data ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDisplay dd = (XmDisplay) XmGetXmDisplay(XtDisplay(w));
|
|
Packit |
b099d7 |
Cursor SashCursor;
|
|
Packit |
b099d7 |
if ((XmDisplay)NULL != dd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
SashCursor =
|
|
Packit |
b099d7 |
((XmDisplayInfo *)(dd->display.displayInfo))->SashCursor;
|
|
Packit |
b099d7 |
if (0L != SashCursor)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XFreeCursor(XtDisplay(w), SashCursor);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
((XmDisplayInfo *)(dd->display.displayInfo))->SashCursor= 0L;
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Redisplay (w, event)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Cause the widget, identified by w, to be redisplayed.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* w = widget to be redisplayed;
|
|
Packit |
b099d7 |
* event = event structure identifying need for redisplay on this
|
|
Packit |
b099d7 |
* widget.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Procedures Called
|
|
Packit |
b099d7 |
* -----------------
|
|
Packit |
b099d7 |
* DrawToggle()
|
|
Packit |
b099d7 |
* XDrawString()
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Redisplay(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
Region region )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register XmSashWidget sash = (XmSashWidget) w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDrawShadows (XtDisplay (w), XtWindow (w),
|
|
Packit |
b099d7 |
sash->primitive.top_shadow_GC,
|
|
Packit |
b099d7 |
sash->primitive.bottom_shadow_GC,
|
|
Packit |
b099d7 |
0,0,w->core.width, w->core.height,
|
|
Packit |
b099d7 |
sash->primitive.shadow_thickness,
|
|
Packit |
b099d7 |
XmSHADOW_OUT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (sash->sash.has_focus) HighlightSash(w);
|
|
Packit |
b099d7 |
}
|