/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ /*----------------------------------------------------------------------*/ /* */ /* Name: */ /* Description: XfeFancyBox widget source. */ /* Author: Ramiro Estrugo */ /* */ /*----------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #define MESSAGE1 "Widget is not an XfeFancyBox." #define MESSAGE2 "XmNtitle is a read-only resource." #define MESSAGE3 "XmNlist is a read-only resource." #define MESSAGE4 "XmNshell is a read-only resource." #define MESSAGE5 "XmNarrow is a read-only resource." #define MESSAGE6 "XmNfancyBoxType is a creation-only resource." #define MESSAGE7 "No valid XfeBypassShell found to share for XmNshell." #define LIST_NAME "FancyList" #define SHELL_NAME "FancyShell" #define TITLE_NAME "FancyTitle" #define ARROW_NAME "FancyArrow" #define CB_OFFSET_BOTTOM(w,cp) (cp->highlight_thickness+_XfemOffsetBottom(w)) #define CB_OFFSET_LEFT(w,cp) (cp->highlight_thickness+_XfemOffsetLeft(w)) #define CB_OFFSET_RIGHT(w,cp) (cp->highlight_thickness+_XfemOffsetRight(w)) #define CB_OFFSET_TOP(w,cp) (cp->highlight_thickness+_XfemOffsetTop(w)) #define CB_RECT_X(w,cp) (_XfemBoundaryX(w) + cp->highlight_thickness) #define CB_RECT_Y(w,cp) (_XfemBoundaryY(w) + cp->highlight_thickness) #define CB_RECT_WIDTH(w,cp) (_XfemBoundaryWidth(w)-2*cp->highlight_thickness) #define CB_RECT_HEIGHT(w,cp) (_XfemBoundaryHeight(w)-2*cp->highlight_thickness) /*----------------------------------------------------------------------*/ /* */ /* Core class methods */ /* */ /*----------------------------------------------------------------------*/ static void Initialize (Widget,Widget,ArgList,Cardinal *); static void Destroy (Widget); static Boolean SetValues (Widget,Widget,Widget,ArgList,Cardinal *); static void GetValuesHook (Widget,ArgList,Cardinal *); /*----------------------------------------------------------------------*/ /* */ /* XfeManager class methods */ /* */ /*----------------------------------------------------------------------*/ static void PreferredGeometry (Widget,Dimension *,Dimension *); static Boolean AcceptStaticChild (Widget); static Boolean InsertStaticChild (Widget); static Boolean DeleteStaticChild (Widget); static void LayoutStaticChildren (Widget); /*----------------------------------------------------------------------*/ /* */ /* XfeComboBox class methods */ /* */ /*----------------------------------------------------------------------*/ static void LayoutTitle (Widget); static void DrawTitleShadow (Widget,XEvent *,Region,XRectangle *); /*----------------------------------------------------------------------*/ /* */ /* Misc XfeFancyBox functions */ /* */ /*----------------------------------------------------------------------*/ static void DrawHighlight (Widget,XEvent *,Region,XRectangle *); static Widget TitleCreate (Widget); static void LayoutTitle (Widget); static void TitleConfigure (Widget); static Widget TitleTextCreate (Widget); static Widget TitleLabelCreate (Widget); static void IconLayout (Widget); static Widget ShellCreate (Widget); static void ShellLayout (Widget); static Widget ArrowCreate (Widget); static void ArrowLayout (Widget); static Widget ListCreate (Widget); static void ListLayout (Widget); /*----------------------------------------------------------------------*/ /* */ /* Screen functions functions */ /* */ /*----------------------------------------------------------------------*/ static int ScreenGetSpaceBelow (Widget); static int ScreenGetSpaceAbove (Widget); /*----------------------------------------------------------------------*/ /* */ /* Text callbacks */ /* */ /*----------------------------------------------------------------------*/ static void TextFocusCB (Widget,XtPointer,XtPointer); static void TextLosingFocusCB (Widget,XtPointer,XtPointer); /*----------------------------------------------------------------------*/ /* */ /* Arrow callbacks */ /* */ /*----------------------------------------------------------------------*/ static void ArrowArmCB (Widget,XtPointer,XtPointer); static void ArrowDisarmCB (Widget,XtPointer,XtPointer); static void ArrowActivateCB (Widget,XtPointer,XtPointer); /*----------------------------------------------------------------------*/ /* */ /* Synthetic resource Callprocs */ /* */ /*----------------------------------------------------------------------*/ static void SyntheticGetListItems (Widget,int, XtArgVal *); static void SyntheticGetListItemCount (Widget,int, XtArgVal *); #if 0 /* * External definitions of syn_resources for our list widget. */ #define SYN_RESOURCE_AA AA((Widget w, int resource_offset, XtArgVal *value)) extern void _DtFancyBoxGetArrowSize SYN_RESOURCE_AA; extern void _DtFancyBoxGetLabelString SYN_RESOURCE_AA; extern void _DtFancyBoxGetListItemCount SYN_RESOURCE_AA; extern void _DtFancyBoxGetListItems SYN_RESOURCE_AA; extern void _DtFancyBoxGetListFontList SYN_RESOURCE_AA; extern void _DtFancyBoxGetListMarginHeight SYN_RESOURCE_AA; extern void _DtFancyBoxGetListMarginWidth SYN_RESOURCE_AA; extern void _DtFancyBoxGetListSpacing SYN_RESOURCE_AA; extern void _DtFancyBoxGetListTopItemPosition SYN_RESOURCE_AA; extern void _DtFancyBoxGetListVisibleItemCount SYN_RESOURCE_AA; #endif /*----------------------------------------------------------------------*/ /* */ /* XfeFancyBox resources */ /* */ /*----------------------------------------------------------------------*/ static XtResource resources[] = { #if 0 /* Title resources */ { XmNtitle, XmCReadOnly, XmRWidget, sizeof(Widget), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . title), XmRImmediate, (XtPointer) NULL }, { XmNcomboBoxType, XmCComboBoxType, XmRComboBoxType, sizeof(unsigned char), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . combo_box_type), XmRImmediate, (XtPointer) XmCOMBO_BOX_READ_ONLY }, { XmNtitleFontList, XmCTitleFontList, XmRFontList, sizeof(XmFontList), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . title_font_list), XmRImmediate, (XtPointer) NULL }, { XmNtitleShadowThickness, XmCShadowThickness, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . title_shadow_thickness), XmRCallProc, (XtPointer) DefaultTitleShadowThickness }, { XmNtitleShadowType, XmCShadowType, XmRShadowType, sizeof(unsigned char), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . title_shadow_type), XmRImmediate, (XtPointer) XmSHADOW_IN }, #endif /* Icon resources */ { XmNicon, XmCReadOnly, XmRWidget, sizeof(Widget), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . icon), XmRImmediate, (XtPointer) NULL }, #if 0 /* List resources */ { XmNlist, XmCReadOnly, XmRWidget, sizeof(Widget), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . list), XmRImmediate, (XtPointer) NULL }, { XmNitems, XmCItems, XmRXmStringTable, sizeof(XmStringTable), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . items), XmRImmediate, (XtPointer) NULL }, { XmNitemCount, XmCItemCount, XmRInt, sizeof(int), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . item_count), XmRImmediate, (XtPointer) 0 }, { XmNlistFontList, XmCListFontList, XmRFontList, sizeof(XmFontList), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . list_font_list), XmRImmediate, (XtPointer) NULL }, { XmNlistMarginHeight, XmCListMarginHeight, XmRVerticalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . list_margin_height), XmRImmediate, (XtPointer) XfeDEFAULT_COMBO_BOX_LIST_MARGIN_HEIGHT }, { XmNlistMarginWidth, XmCListMarginWidth, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . list_margin_width), XmRImmediate, (XtPointer) XfeDEFAULT_COMBO_BOX_LIST_MARGIN_WIDTH }, { XmNlistSpacing, XmCListSpacing, XmRVerticalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . list_spacing), XmRImmediate, (XtPointer) XfeDEFAULT_COMBO_BOX_LIST_SPACING }, { XmNtopItemPosition, XmCTopItemPosition, XmRInt, sizeof(int), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . top_item_position), XmRImmediate, (XtPointer) 1 }, { XmNvisibleItemCount, XmCVisibleItemCount, XmRInt, sizeof(int), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . visible_item_count), XmRImmediate, (XtPointer) XfeDEFAULT_COMBO_BOX_LIST_VISIBLE_ITEM_COUNT }, /* Shell resources */ { XmNshell, XmCReadOnly, XmRWidget, sizeof(Widget), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . shell), XmRImmediate, (XtPointer) NULL }, { XmNshareShell, XmCShareShell, XmRBoolean, sizeof(Boolean), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . share_shell), XmRImmediate, (XtPointer) True }, { XmNpoppedUp, XmCReadOnly, XmRBoolean, sizeof(Boolean), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . popped_up), XmRImmediate, (XtPointer) False }, /* Arrow resources */ { XmNarrow, XmCReadOnly, XmRWidget, sizeof(Widget), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . arrow), XmRImmediate, (XtPointer) NULL }, /* Traversal resources */ { XmNhighlightThickness, XmCHighlightThickness, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . highlight_thickness), XmRImmediate, (XtPointer) 2 }, { XmNtraversalOn, XmCTraversalOn, XmRBoolean, sizeof(Boolean), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . traversal_on), XmRImmediate, (XtPointer) True }, /* Force the XmNshadowThickness to the default */ { XmNshadowThickness, XmCShadowThickness, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , manager . shadow_thickness), XmRImmediate, (XtPointer) 1 }, /* Force XmNmarginLeft and XmNmarginRight to 4 */ { XmNmarginLeft, XmCMarginLeft, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_manager . margin_left), XmRImmediate, (XtPointer) 4 }, { XmNmarginRight, XmCMarginRight, XmRHorizontalDimension, sizeof(Dimension), XtOffsetOf(XfeFancyBoxRec , xfe_manager . margin_right), XmRImmediate, (XtPointer) 4 }, #endif }; #if 0 /*----------------------------------------------------------------------*/ /* */ /* XfeFancyBox synthetic resources */ /* */ /*----------------------------------------------------------------------*/ static XmSyntheticResource synthetic_resources[] = { { XmNitems, sizeof(XmStringTable), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . items), SyntheticGetListItems, _XfeSyntheticSetResourceForChild }, { XmNitemCount, sizeof(int), XtOffsetOf(XfeFancyBoxRec , xfe_fancy_box . item_count), SyntheticGetListItemCount, _XfeSyntheticSetResourceForChild }, }; #endif /*----------------------------------------------------------------------*/ /* */ /* Widget Class Record Initialization */ /* */ /*----------------------------------------------------------------------*/ _XFE_WIDGET_CLASS_RECORD(fancybox,FancyBox) = { { (WidgetClass) &xfeComboBoxClassRec, /* superclass */ "XfeFancyBox", /* class_name */ sizeof(XfeFancyBoxRec), /* widget_size */ NULL, /* class_initialize */ NULL, /* class_part_initialize*/ FALSE, /* class_inited */ Initialize, /* initialize */ NULL, /* initialize_hook */ XtInheritRealize, /* realize */ NULL, /* actions */ 0, /* num_actions */ resources, /* resources */ XtNumber(resources), /* num_resources */ NULLQUARK, /* xrm_class */ TRUE, /* compress_motion */ XtExposeCompressMaximal, /* compress_exposure */ TRUE, /* compress_enterleave */ FALSE, /* visible_interest */ Destroy, /* destroy */ XtInheritResize, /* resize */ XtInheritExpose, /* expose */ SetValues, /* set_values */ NULL, /* set_values_hook */ XtInheritSetValuesAlmost, /* set_values_almost */ GetValuesHook, /* get_values_hook */ NULL, /* access_focus */ XtVersion, /* version */ NULL, /* callback_private */ XtInheritTranslations, /* tm_table */ XtInheritQueryGeometry, /* query_geometry */ XtInheritDisplayAccelerator, /* display accelerator */ NULL, /* extension */ }, /* Composite Part */ { XtInheritGeometryManager, /* geometry_manager */ XtInheritChangeManaged, /* change_managed */ XtInheritInsertChild, /* insert_child */ XtInheritDeleteChild, /* delete_child */ NULL /* extension */ }, /* Constraint Part */ { NULL, /* syn resources */ 0, /* num syn_resources */ sizeof(XfeManagerConstraintRec), /* constraint size */ NULL, /* init proc */ NULL, /* destroy proc */ NULL, /* set values proc */ NULL, /* extension */ }, /* XmManager Part */ { XtInheritTranslations, /* tm_table */ #if 0 synthetic_resources, /* syn resources */ XtNumber(synthetic_resources), /* num syn_resources */ #else NULL, /* syn resources */ 0, /* num syn_resources */ #endif NULL, /* syn_cont_resources */ 0, /* num_syn_cont_resource*/ XmInheritParentProcess, /* parent_process */ NULL, /* extension */ }, /* XfeManager Part */ { XfeInheritBitGravity, /* bit_gravity */ PreferredGeometry, /* preferred_geometry */ XfeInheritUpdateBoundary, /* update_boundary */ XfeInheritUpdateChildrenInfo, /* update_children_info */ XfeInheritLayoutWidget, /* layout_widget */ AcceptStaticChild, /* accept_static_child */ InsertStaticChild, /* insert_static_child */ DeleteStaticChild, /* delete_static_child */ LayoutStaticChildren, /* layout_static_children */ NULL, /* change_managed */ NULL, /* prepare_components */ XfeInheritLayoutComponents, /* layout_components */ NULL, /* draw_background */ XfeInheritDrawShadow, /* draw_shadow */ XfeInheritDrawComponents, /* draw_components */ XfeInheritDrawAccentBorder, /* draw_accent_border */ NULL, /* extension */ }, /* XfeComboBox Part */ { LayoutTitle, /* layout_title */ XfeInheritLayoutArrow, /* layout_arrow */ XfeInheritDrawHighlight, /* draw_highlight */ DrawTitleShadow, /* draw_title_shadow */ NULL, /* extension */ }, /* XfeFancyBox Part */ { NULL, /* extension */ }, }; /*----------------------------------------------------------------------*/ /* */ /* xfeFancyBoxWidgetClass declaration. */ /* */ /*----------------------------------------------------------------------*/ _XFE_WIDGET_CLASS(fancybox,FancyBox); /*----------------------------------------------------------------------*/ /* */ /* Synthetic resource Callprocs */ /* */ /*----------------------------------------------------------------------*/ static void SyntheticGetListItems(Widget w,int offset, XtArgVal * value) { } /*----------------------------------------------------------------------*/ static void SyntheticGetListItemCount(Widget w,int offset, XtArgVal * value) { } /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* Core Class methods */ /* */ /*----------------------------------------------------------------------*/ static void Initialize(Widget rw,Widget nw,ArgList args,Cardinal *nargs) { XfeFancyBoxPart * fp = _XfeFancyBoxPart(nw); #if 0 /* Make sure rep types are ok */ XfeRepTypeCheck(nw,XmRShadowType,&fp->title_shadow_type, XmSHADOW_IN); XfeRepTypeCheck(nw,XmRComboBoxType,&fp->combo_box_type, XmCOMBO_BOX_READ_ONLY); /* Make sure read-only resources aren't set */ if (fp->title) { _XmWarning(nw,MESSAGE2); fp->title = NULL; } if (fp->list) { _XmWarning(nw,MESSAGE3); fp->list = NULL; } if (fp->shell) { _XmWarning(nw,MESSAGE4); fp->shell = NULL; } if (fp->arrow) { _XmWarning(nw,MESSAGE5); fp->arrow = NULL; } /* Create components */ fp->arrow = ArrowCreate(nw); fp->title = TitleCreate(nw); fp->shell = ShellCreate(nw); fp->list = ListCreate(nw); /* Configure the title */ TitleConfigure(nw); /* Initialize private members */ fp->highlighted = False; /* Manage the children */ XtManageChild(fp->title); XtManageChild(fp->list); XtManageChild(fp->arrow); /* XfeOverrideTranslations(nw,_XfeFancyBoxExtraTranslations); */ #endif /* Finish of initialization */ _XfeManagerChainInitialize(rw,nw,xfeFancyBoxWidgetClass); } /*----------------------------------------------------------------------*/ static void Destroy(Widget w) { /* XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); */ } /*----------------------------------------------------------------------*/ static Boolean SetValues(Widget ow,Widget rw,Widget nw,ArgList args,Cardinal *nargs) { XfeFancyBoxPart * np = _XfeFancyBoxPart(nw); XfeFancyBoxPart * op = _XfeFancyBoxPart(ow); return _XfeManagerChainSetValues(ow,rw,nw,xfeFancyBoxWidgetClass); } /*----------------------------------------------------------------------*/ static void GetValuesHook(Widget w,ArgList args,Cardinal* nargs) { /* XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); */ Cardinal i; for (i = 0; i < *nargs; i++) { #if 0 /* label_string */ if (strcmp(args[i].name,XmNlabelString) == 0) { *((XtArgVal *) args[i].value) = (XtArgVal) XmStringCopy(lp->label_string); } /* font_list */ else if (strcmp(args[i].name,XmNfontList) == 0) { *((XtArgVal *) args[i].value) = (XtArgVal) XmFontListCopy(lp->font_list); } #endif } } /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* XfeManager class methods */ /* */ /*----------------------------------------------------------------------*/ static void PreferredGeometry(Widget w,Dimension * width,Dimension * height) { XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); XfeComboBoxPart * cp = _XfeComboBoxPart(w); /* Invoke the super class' preferred_geometry method */ (*xfeComboBoxClassRec.xfe_manager_class.preferred_geometry)(w, width, height); /* Add the icon widht if needed */ if (_XfeChildIsShown(fp->icon)) { *width += (cp->spacing + _XfeWidth(fp->icon)); } } /*----------------------------------------------------------------------*/ static Boolean AcceptStaticChild(Widget child) { Widget w = _XfeParent(child); XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); return (!_XfeIsAlive(fp->icon) && XfeIsButton(child)); } /*----------------------------------------------------------------------*/ static Boolean InsertStaticChild(Widget child) { Widget w = _XfeParent(child); XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); fp->icon = child; return True; } /*----------------------------------------------------------------------*/ static Boolean DeleteStaticChild(Widget child) { Widget w = _XfeParent(child); XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); fp->icon = NULL; return True; } /*----------------------------------------------------------------------*/ static void LayoutStaticChildren(Widget w) { /* Layout the icon if needed */ IconLayout(w); } /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* Misc XfeFancyBox functions */ /* */ /*----------------------------------------------------------------------*/ static void DrawTitleShadow(Widget w,XEvent * event,Region region,XRectangle * clip_rect) { XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); XfeComboBoxPart * cp = _XfeComboBoxPart(w); /* Make sure the shadow is needed */ if (!cp->title_shadow_thickness) { return; } if (_XfeIsAlive(fp->icon)) { Dimension icon_x1 = _XfeX(fp->icon) - cp->spacing; Dimension title_x2 = _XfeX(cp->title) + _XfeWidth(cp->title); /* Draw the shadow around the icon and text */ _XmDrawShadows(XtDisplay(w), _XfeWindow(w), _XfemTopShadowGC(w),_XfemBottomShadowGC(w), CB_OFFSET_LEFT(w,cp), _XfeY(cp->title) - cp->title_shadow_thickness, (title_x2 - icon_x1) + 2 * cp->title_shadow_thickness, _XfeHeight(cp->title) + 2 * cp->title_shadow_thickness, cp->title_shadow_thickness, cp->title_shadow_type); } else { /* Draw the shadow around the text only */ XfeDrawShadowsAroundWidget(w, cp->title, _XfemTopShadowGC(w), _XfemBottomShadowGC(w), 0, cp->title_shadow_thickness, cp->title_shadow_type); } } /*----------------------------------------------------------------------*/ static void LayoutTitle(Widget w) { XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); XfeComboBoxPart * cp = _XfeComboBoxPart(w); int x; int total_icon_width = 0; if (_XfeIsAlive(fp->icon)) { x = _XfeX(fp->icon) + _XfeWidth(fp->icon); total_icon_width = _XfeWidth(fp->icon) + cp->spacing; } else { x = CB_OFFSET_LEFT(w,cp) + cp->title_shadow_thickness; } _XfeConfigureWidget(cp->title, x, (_XfeHeight(w) - _XfeHeight(cp->title)) / 2, CB_RECT_WIDTH(w,cp) - cp->spacing - _XfeWidth(cp->arrow) - total_icon_width - 2 * cp->title_shadow_thickness, CB_RECT_HEIGHT(w,cp) - 2 * cp->title_shadow_thickness); } /*----------------------------------------------------------------------*/ static void IconLayout(Widget w) { XfeFancyBoxPart * fp = _XfeFancyBoxPart(w); XfeComboBoxPart * cp = _XfeComboBoxPart(w); if (!_XfeIsAlive(fp->icon)) { return; } _XfeConfigureWidget(fp->icon, CB_OFFSET_LEFT(w,cp) + cp->title_shadow_thickness + cp->spacing, (_XfeHeight(w) - _XfeHeight(fp->icon)) / 2, _XfeWidth(fp->icon), _XfeHeight(fp->icon)); } /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* Misc Arrow functions */ /* */ /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* Screen functions functions */ /* */ /*----------------------------------------------------------------------*/ static int ScreenGetSpaceBelow(Widget w) { return (int) XfeScreenHeight(w) - (int) (XfeRootY(w) + _XfeHeight(w)); } /*----------------------------------------------------------------------*/ static int ScreenGetSpaceAbove(Widget w) { return (int) XfeRootY(w); } /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ /* */ /* XfeFancyBox Public Methods */ /* */ /*----------------------------------------------------------------------*/ /* extern */ Widget XfeCreateFancyBox(Widget pw,char * name,Arg * av,Cardinal ac) { return XtCreateWidget(name,xfeFancyBoxWidgetClass,pw,av,ac); } /*----------------------------------------------------------------------*/