|
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 HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$TOG: VendorSE.c /main/21 1997/10/13 14:58:18 cshi $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/* (c) Copyright 1989, 1990 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 |
/* (c) Copyright 1988 MICROSOFT CORPORATION */
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* (c) Copyright 1995 FUJITSU LIMITED
|
|
Packit |
b099d7 |
* This is source code modified by FUJITSU LIMITED under the Joint
|
|
Packit |
b099d7 |
* Development Agreement for the CDEnext PST.
|
|
Packit |
b099d7 |
* This is unpublished proprietary source code of FUJITSU LIMITED
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Make sure all wm properties can make it out of the resource manager */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef X_NOT_STDC_ENV
|
|
Packit |
b099d7 |
#include <stdlib.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#include <string.h>
|
|
Packit |
b099d7 |
#include <Xm/Xm.h> /* To make cpp on Sun happy. CR 5943 */
|
|
Packit |
b099d7 |
#include <X11/IntrinsicP.h>
|
|
Packit |
b099d7 |
#include <X11/ShellP.h>
|
|
Packit |
b099d7 |
#include <Xm/AtomMgr.h>
|
|
Packit |
b099d7 |
#include <Xm/BaseClassP.h>
|
|
Packit |
b099d7 |
#include <Xm/LayoutT.h>
|
|
Packit |
b099d7 |
#include <Xm/RepType.h>
|
|
Packit |
b099d7 |
#include <Xm/TraitP.h>
|
|
Packit |
b099d7 |
#include <Xm/VendorSEP.h>
|
|
Packit |
b099d7 |
#include "BaseClassI.h"
|
|
Packit |
b099d7 |
#include "CallbackI.h"
|
|
Packit |
b099d7 |
#include "MessagesI.h"
|
|
Packit |
b099d7 |
#include "ResIndI.h"
|
|
Packit |
b099d7 |
#include "SyntheticI.h"
|
|
Packit |
b099d7 |
#include "TraversalI.h"
|
|
Packit |
b099d7 |
#include "VendorSEI.h"
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define NOTVENDORSHELL _XmMMsgProtocols_0000
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define DONT_CARE -1L
|
|
Packit |
b099d7 |
#define BIGSIZE ((Dimension)32767)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static Boolean CvtStringToHorizontalInt(
|
|
Packit |
b099d7 |
Display *dpy,
|
|
Packit |
b099d7 |
XrmValue *args,
|
|
Packit |
b099d7 |
Cardinal *num_args,
|
|
Packit |
b099d7 |
XrmValue *from_val,
|
|
Packit |
b099d7 |
XrmValue *toVal,
|
|
Packit |
b099d7 |
XtPointer *data) ;
|
|
Packit |
b099d7 |
static Boolean CvtStringToVerticalInt(
|
|
Packit |
b099d7 |
Display *dpy,
|
|
Packit |
b099d7 |
XrmValue *args,
|
|
Packit |
b099d7 |
Cardinal *num_args,
|
|
Packit |
b099d7 |
XrmValue *from_val,
|
|
Packit |
b099d7 |
XrmValue *toVal,
|
|
Packit |
b099d7 |
XtPointer *data) ;
|
|
Packit |
b099d7 |
static void ClassInitialize( void ) ;
|
|
Packit |
b099d7 |
static void ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass w) ;
|
|
Packit |
b099d7 |
static void DeleteWindowHandler(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XtPointer closure,
|
|
Packit |
b099d7 |
XtPointer call_data) ;
|
|
Packit |
b099d7 |
static void OffsetHandler(
|
|
Packit |
b099d7 |
Widget shell,
|
|
Packit |
b099d7 |
XtPointer clientData,
|
|
Packit |
b099d7 |
XtPointer cd) ;
|
|
Packit |
b099d7 |
static void InitializePrehook(
|
|
Packit |
b099d7 |
Widget req,
|
|
Packit |
b099d7 |
Widget new_w,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void Destroy(
|
|
Packit |
b099d7 |
Widget wid) ;
|
|
Packit |
b099d7 |
static void GetMWMFunctionsFromProperty(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void CheckSetRenderTables(Widget wid,
|
|
Packit |
b099d7 |
int offset,
|
|
Packit |
b099d7 |
XrmValue *value);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtConvertArgRec selfConvertArgs[] = {
|
|
Packit |
b099d7 |
{ XtBaseOffset, (XtPointer) 0, sizeof(int) }
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/***************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Vendor shell class record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
***************************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define Offset(field) XtOffsetOf( struct _XmVendorShellExtRec, vendor.field)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource extResources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNextensionType,
|
|
Packit |
b099d7 |
XmCExtensionType, XmRExtensionType, sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmExtRec, ext.extensionType),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer)XmSHELL_EXTENSION,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNdefaultFontList,
|
|
Packit |
b099d7 |
XmCDefaultFontList, XmRFontList, sizeof (XmFontList),
|
|
Packit |
b099d7 |
Offset (default_font_list),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
"pri.vate",
|
|
Packit |
b099d7 |
"Pri.vate", XmRUnsignedChar, sizeof (unsigned char),
|
|
Packit |
b099d7 |
Offset (mapStyle),
|
|
Packit |
b099d7 |
XmRImmediate, 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNbuttonFontList,
|
|
Packit |
b099d7 |
XmCButtonFontList, XmRButtonFontList, sizeof (XmFontList),
|
|
Packit |
b099d7 |
Offset (button_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNlabelFontList,
|
|
Packit |
b099d7 |
XmCLabelFontList, XmRLabelFontList, sizeof (XmFontList),
|
|
Packit |
b099d7 |
Offset (label_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNtextFontList,
|
|
Packit |
b099d7 |
XmCTextFontList, XmRTextFontList, sizeof (XmFontList),
|
|
Packit |
b099d7 |
Offset (text_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNbuttonRenderTable,
|
|
Packit |
b099d7 |
XmCButtonRenderTable, XmRButtonRenderTable, sizeof (XmRenderTable),
|
|
Packit |
b099d7 |
Offset (button_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNlabelRenderTable,
|
|
Packit |
b099d7 |
XmCLabelRenderTable, XmRLabelRenderTable, sizeof (XmRenderTable),
|
|
Packit |
b099d7 |
Offset (label_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNtextRenderTable,
|
|
Packit |
b099d7 |
XmCTextRenderTable, XmRTextRenderTable, sizeof (XmRenderTable),
|
|
Packit |
b099d7 |
Offset (text_font_list),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer)CheckSetRenderTables,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNaudibleWarning, XmCAudibleWarning, XmRAudibleWarning,
|
|
Packit |
b099d7 |
sizeof (Boolean), Offset (audible_warning),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmBELL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNshellUnitType, XmCShellUnitType, XmRUnitType,
|
|
Packit |
b099d7 |
sizeof (unsigned char), Offset (unit_type),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmPIXELS,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNdeleteResponse, XmCDeleteResponse,
|
|
Packit |
b099d7 |
XmRDeleteResponse, sizeof(unsigned char),
|
|
Packit |
b099d7 |
Offset(delete_response),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmDESTROY,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNinputPolicy, XmCInputPolicy,
|
|
Packit |
b099d7 |
XmRInputPolicy, sizeof(XmInputPolicy),
|
|
Packit |
b099d7 |
Offset(input_policy),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmPER_SHELL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNkeyboardFocusPolicy, XmCKeyboardFocusPolicy, XmRKeyboardFocusPolicy,
|
|
Packit |
b099d7 |
sizeof(unsigned char),
|
|
Packit |
b099d7 |
Offset(focus_policy),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer)XmEXPLICIT,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmwmDecorations, XmCMwmDecorations, XmRInt,
|
|
Packit |
b099d7 |
sizeof(int), Offset(mwm_hints.decorations),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) DONT_CARE,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmwmFunctions, XmCMwmFunctions, XmRInt,
|
|
Packit |
b099d7 |
sizeof(int), Offset(mwm_hints.functions),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) DONT_CARE,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmwmInputMode, XmCMwmInputMode, XmRInt,
|
|
Packit |
b099d7 |
sizeof(int), Offset(mwm_hints.input_mode),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) DONT_CARE,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmwmMenu, XmCMwmMenu, XmRString,
|
|
Packit |
b099d7 |
sizeof(String), Offset(mwm_menu),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNfocusMovedCallback, XmCCallback, XmRCallback,
|
|
Packit |
b099d7 |
sizeof(XtCallbackList), Offset(focus_moved_callback),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNrealizeCallback, XmCCallback, XmRCallback,
|
|
Packit |
b099d7 |
sizeof(XtCallbackList), Offset(realize_callback),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNinputMethod, XmCInputMethod, XmRString,
|
|
Packit |
b099d7 |
sizeof(String), Offset(input_method_string),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNpreeditType, XmCPreeditType, XmRString,
|
|
Packit |
b099d7 |
sizeof(String), Offset(preedit_type_string),
|
|
Packit |
b099d7 |
XmRImmediate, "OverTheSpot,OffTheSpot,Root,OnTheSpot",
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNlightThreshold, XmCLightThreshold, XmRInt,
|
|
Packit |
b099d7 |
sizeof(unsigned int), Offset(light_threshold),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNdarkThreshold, XmCDarkThreshold, XmRInt,
|
|
Packit |
b099d7 |
sizeof(unsigned int), Offset(dark_threshold),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNforegroundThreshold, XmCForegroundThreshold, XmRInt,
|
|
Packit |
b099d7 |
sizeof(unsigned int), Offset(foreground_threshold),
|
|
Packit |
b099d7 |
XmRImmediate, NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNlayoutDirection, XmCLayoutDirection, XmRDirection,
|
|
Packit |
b099d7 |
sizeof(XmDirection), Offset(layout_direction),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmLEFT_TO_RIGHT,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
/* add a synonym to ShellUnitType */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNunitType, XmCUnitType, XmRUnitType,
|
|
Packit |
b099d7 |
sizeof (unsigned char), Offset (unit_type),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmPIXELS,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNverifyPreedit, XmCVerifyPreedit, XmRBoolean,
|
|
Packit |
b099d7 |
sizeof (Boolean), Offset (verify_preedit),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) False,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
#undef Offset
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Definition for resources that need special processing in get values */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ParentOffset(x) \
|
|
Packit |
b099d7 |
(XtOffsetOf(VendorShellRec, x) | XmLOGICAL_PARENT_RESOURCE)
|
|
Packit |
b099d7 |
#define ExtOffset(x) XtOffsetOf(XmVendorShellExtRec, x)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmSyntheticResource synResources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNx, sizeof (Position),
|
|
Packit |
b099d7 |
ParentOffset (core.x),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNy, sizeof (Position),
|
|
Packit |
b099d7 |
ParentOffset (core.y),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNwidth, sizeof (Dimension),
|
|
Packit |
b099d7 |
ParentOffset (core.width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNheight, sizeof (Dimension),
|
|
Packit |
b099d7 |
ParentOffset (core.height),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNborderWidth, sizeof (Dimension),
|
|
Packit |
b099d7 |
ParentOffset (core.border_width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* size_hints minus things stored in core */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNminWidth, sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.size_hints.min_width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNminHeight, sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.size_hints.min_height),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmaxWidth, sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.size_hints.max_width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmaxHeight,sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.size_hints.max_height),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* wm_hints */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNiconX, sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.wm_hints.icon_x),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNiconY, sizeof(int),
|
|
Packit |
b099d7 |
ParentOffset(wm.wm_hints.icon_y),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmwmFunctions, sizeof(int),
|
|
Packit |
b099d7 |
ExtOffset(vendor.mwm_hints.functions),
|
|
Packit |
b099d7 |
GetMWMFunctionsFromProperty,
|
|
Packit |
b099d7 |
(XmImportProc)NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#undef ParentOffset
|
|
Packit |
b099d7 |
#undef ExtOffset
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmBaseClassExtRec myBaseClassExtRec = {
|
|
Packit |
b099d7 |
NULL, /* Next extension */
|
|
Packit |
b099d7 |
NULLQUARK, /* record type XmQmotif */
|
|
Packit |
b099d7 |
XmBaseClassExtVersion, /* version */
|
|
Packit |
b099d7 |
sizeof(XmBaseClassExtRec), /* size */
|
|
Packit |
b099d7 |
InitializePrehook, /* initialize prehook */
|
|
Packit |
b099d7 |
XmInheritSetValuesPrehook, /* set_values prehook */
|
|
Packit |
b099d7 |
(XtInitProc)NULL, /* initialize posthook */
|
|
Packit |
b099d7 |
(XtSetValuesFunc)NULL, /* set_values posthook */
|
|
Packit |
b099d7 |
NULL, /* secondary class */
|
|
Packit |
b099d7 |
(XtInitProc)NULL, /* creation proc */
|
|
Packit |
b099d7 |
(XmGetSecResDataFunc)NULL, /* getSecRes data */
|
|
Packit |
b099d7 |
{0}, /* fast subclass */
|
|
Packit |
b099d7 |
XmInheritGetValuesPrehook, /* get_values prehook */
|
|
Packit |
b099d7 |
(XtArgsProc)NULL, /* get_values posthook */
|
|
Packit |
b099d7 |
XmInheritClassPartInitPrehook, /* class_part_prehook */
|
|
Packit |
b099d7 |
XmInheritClassPartInitPosthook, /* class_part_posthook */
|
|
Packit |
b099d7 |
NULL, /* compiled_ext_resources */
|
|
Packit |
b099d7 |
NULL, /* ext_resources */
|
|
Packit |
b099d7 |
0, /* resource_count */
|
|
Packit |
b099d7 |
TRUE, /* use_sub_resources */
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmvendorshellextclassrec)
|
|
Packit |
b099d7 |
XmVendorShellExtClassRec xmVendorShellExtClassRec = {
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(WidgetClass) &xmShellExtClassRec,/* superclass */
|
|
Packit |
b099d7 |
"VendorShell", /* class_name */
|
|
Packit |
b099d7 |
sizeof(XmVendorShellExtRec), /* size */
|
|
Packit |
b099d7 |
ClassInitialize, /* Class Initializer */
|
|
Packit |
b099d7 |
ClassPartInitialize, /* class_part_init */
|
|
Packit |
b099d7 |
FALSE, /* Class init'ed ? */
|
|
Packit |
b099d7 |
(XtInitProc)NULL, /* initialize */
|
|
Packit |
b099d7 |
(XtArgsProc)NULL, /* initialize_notify */
|
|
Packit |
b099d7 |
NULL, /* realize */
|
|
Packit |
b099d7 |
NULL, /* actions */
|
|
Packit |
b099d7 |
0, /* num_actions */
|
|
Packit |
b099d7 |
extResources, /* resources */
|
|
Packit |
b099d7 |
XtNumber(extResources), /* resource_count */
|
|
Packit |
b099d7 |
NULLQUARK, /* xrm_class */
|
|
Packit |
b099d7 |
FALSE, /* compress_motion */
|
|
Packit |
b099d7 |
FALSE, /* compress_exposure */
|
|
Packit |
b099d7 |
FALSE, /* compress_enterleave */
|
|
Packit |
b099d7 |
FALSE, /* visible_interest */
|
|
Packit |
b099d7 |
Destroy, /* destroy */
|
|
Packit |
b099d7 |
NULL, /* resize */
|
|
Packit |
b099d7 |
NULL, /* expose */
|
|
Packit |
b099d7 |
(XtSetValuesFunc)NULL, /* set_values */
|
|
Packit |
b099d7 |
(XtArgsFunc)NULL, /* set_values_hook */
|
|
Packit |
b099d7 |
NULL, /* set_values_almost */
|
|
Packit |
b099d7 |
(XtArgsProc)NULL, /* get_values_hook */
|
|
Packit |
b099d7 |
NULL, /* accept_focus */
|
|
Packit |
b099d7 |
XtVersion, /* intrinsics version */
|
|
Packit |
b099d7 |
NULL, /* callback offsets */
|
|
Packit |
b099d7 |
NULL, /* tm_table */
|
|
Packit |
b099d7 |
NULL, /* query_geometry */
|
|
Packit |
b099d7 |
NULL, /* display_accelerator */
|
|
Packit |
b099d7 |
(XtPointer)&myBaseClassExtRec, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* ext */
|
|
Packit |
b099d7 |
synResources, /* synthetic resources */
|
|
Packit |
b099d7 |
XtNumber(synResources), /* num syn resources */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* desktop */
|
|
Packit |
b099d7 |
NULL, /* child_class */
|
|
Packit |
b099d7 |
XtInheritInsertChild, /* insert_child */
|
|
Packit |
b099d7 |
XtInheritDeleteChild, /* delete_child */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* shell ext */
|
|
Packit |
b099d7 |
XmInheritEventHandler, /* structureNotify */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* vendor ext */
|
|
Packit |
b099d7 |
DeleteWindowHandler, /* delete window handler*/
|
|
Packit |
b099d7 |
OffsetHandler, /* offset handler */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmVendorShellExtobjectclass) WidgetClass
|
|
Packit |
b099d7 |
xmVendorShellExtObjectClass = (WidgetClass) (&xmVendorShellExtClassRec);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
CvtStringToHorizontalInt(
|
|
Packit |
b099d7 |
Display *display,
|
|
Packit |
b099d7 |
XrmValue *args,
|
|
Packit |
b099d7 |
Cardinal *num_args, /* unused */
|
|
Packit |
b099d7 |
XrmValue *from,
|
|
Packit |
b099d7 |
XrmValue *to,
|
|
Packit |
b099d7 |
XtPointer *converter_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget widget = *(Widget*) args[0].addr ;
|
|
Packit |
b099d7 |
Screen * screen = XtScreen(widget) ;
|
|
Packit |
b099d7 |
unsigned char defaultFromType = _XmGetUnitType(widget) ;
|
|
Packit |
b099d7 |
int tmpPix;
|
|
Packit |
b099d7 |
Boolean parseError;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmpPix = (int)
|
|
Packit |
b099d7 |
_XmConvertStringToUnits (screen, from->addr, (int) defaultFromType,
|
|
Packit |
b099d7 |
XmHORIZONTAL, XmPIXELS, (XtEnum*) &parseError);
|
|
Packit |
b099d7 |
if (parseError)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtDisplayStringConversionWarning(display, (char *)from->addr,
|
|
Packit |
b099d7 |
XmRHorizontalDimension);
|
|
Packit |
b099d7 |
return False;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
_XM_CONVERTER_DONE( to, int, tmpPix, ; )
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
CvtStringToVerticalInt(
|
|
Packit |
b099d7 |
Display *display,
|
|
Packit |
b099d7 |
XrmValue *args,
|
|
Packit |
b099d7 |
Cardinal *num_args, /* unused */
|
|
Packit |
b099d7 |
XrmValue *from,
|
|
Packit |
b099d7 |
XrmValue *to,
|
|
Packit |
b099d7 |
XtPointer *converter_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget widget = *(Widget*) args[0].addr ;
|
|
Packit |
b099d7 |
Screen * screen = XtScreen(widget) ;
|
|
Packit |
b099d7 |
unsigned char defaultFromType = _XmGetUnitType(widget) ;
|
|
Packit |
b099d7 |
int tmpPix;
|
|
Packit |
b099d7 |
Boolean parseError;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmpPix = (int)
|
|
Packit |
b099d7 |
_XmConvertStringToUnits(screen, from->addr, (int) defaultFromType,
|
|
Packit |
b099d7 |
XmVERTICAL, XmPIXELS, (XtEnum*) &parseError);
|
|
Packit |
b099d7 |
if (parseError)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtDisplayStringConversionWarning(display, (char *)from->addr,
|
|
Packit |
b099d7 |
XmRVerticalPosition);
|
|
Packit |
b099d7 |
return False;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
_XM_CONVERTER_DONE( to, int, tmpPix, ; )
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassInitialize
|
|
Packit |
b099d7 |
* Set up the converters for VendorShell int pixels
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassInitialize( void )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtSetTypeConverter(XmRString,
|
|
Packit |
b099d7 |
XmRHorizontalInt,
|
|
Packit |
b099d7 |
CvtStringToHorizontalInt,
|
|
Packit |
b099d7 |
selfConvertArgs,
|
|
Packit |
b099d7 |
XtNumber(selfConvertArgs),
|
|
Packit |
b099d7 |
XtCacheNone, (XtDestructor)NULL);
|
|
Packit |
b099d7 |
XtSetTypeConverter(XmRString,
|
|
Packit |
b099d7 |
XmRVerticalInt,
|
|
Packit |
b099d7 |
CvtStringToVerticalInt,
|
|
Packit |
b099d7 |
selfConvertArgs,
|
|
Packit |
b099d7 |
XtNumber(selfConvertArgs),
|
|
Packit |
b099d7 |
XtCacheNone, (XtDestructor)NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
myBaseClassExtRec.record_type = XmQmotif;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassPartInitialize
|
|
Packit |
b099d7 |
* Set up the inheritance mechanism for the routines exported by
|
|
Packit |
b099d7 |
* vendorShells class part.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmVendorShellExtObjectClass wc = (XmVendorShellExtObjectClass) w;
|
|
Packit |
b099d7 |
XmVendorShellExtObjectClass sc =
|
|
Packit |
b099d7 |
(XmVendorShellExtObjectClass) wc->object_class.superclass;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc == (XmVendorShellExtObjectClass)xmVendorShellExtObjectClass)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->vendor_class.delete_window_handler == XmInheritProtocolHandler)
|
|
Packit |
b099d7 |
wc->vendor_class.delete_window_handler =
|
|
Packit |
b099d7 |
sc->vendor_class.delete_window_handler;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->vendor_class.offset_handler == XmInheritProtocolHandler)
|
|
Packit |
b099d7 |
wc->vendor_class.offset_handler =
|
|
Packit |
b099d7 |
sc->vendor_class.offset_handler;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
* DeleteWindowHandler
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
DeleteWindowHandler(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XtPointer closure,
|
|
Packit |
b099d7 |
XtPointer call_data ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
VendorShellWidget w = (VendorShellWidget) wid ;
|
|
Packit |
b099d7 |
XmVendorShellExtObject ve = (XmVendorShellExtObject) closure;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch(ve->vendor.delete_response)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case XmUNMAP:
|
|
Packit |
b099d7 |
if (w->shell.popped_up)
|
|
Packit |
b099d7 |
XtPopdown((Widget) w);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
XtUnmapWidget((Widget) w);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case XmDESTROY:
|
|
Packit |
b099d7 |
if (XtIsApplicationShell((Widget) w))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtDestroyApplicationContext
|
|
Packit |
b099d7 |
(XtWidgetToApplicationContext((Widget) w));
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
XtDestroyWidget((Widget) w);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case XmDO_NOTHING:
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* OffsetHandler
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
OffsetHandler(
|
|
Packit |
b099d7 |
Widget shell, /* unused */
|
|
Packit |
b099d7 |
XtPointer clientData,
|
|
Packit |
b099d7 |
XtPointer cd )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmAnyCallbackStruct *callData = (XmAnyCallbackStruct *) cd ;
|
|
Packit |
b099d7 |
XClientMessageEvent *offsetEvent;
|
|
Packit |
b099d7 |
XmVendorShellExtObject ve = (XmVendorShellExtObject)clientData;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
offsetEvent = (XClientMessageEvent *) callData->event;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ve->vendor.lastOffsetSerial = offsetEvent->serial;
|
|
Packit |
b099d7 |
ve->vendor.xOffset = (Position) offsetEvent->data.l[1];
|
|
Packit |
b099d7 |
ve->vendor.yOffset = (Position) offsetEvent->data.l[2];
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* InitializePrehook
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
InitializePrehook(
|
|
Packit |
b099d7 |
Widget req,
|
|
Packit |
b099d7 |
Widget new_w,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmExtObjectClass ec = (XmExtObjectClass) XtClass(new_w);
|
|
Packit |
b099d7 |
XmBaseClassExt *wcePtr;
|
|
Packit |
b099d7 |
XmExtObject ne = (XmExtObject) new_w;
|
|
Packit |
b099d7 |
Widget parent = ne->ext.logicalParent;
|
|
Packit |
b099d7 |
XmExtObjectClass pec = (XmExtObjectClass) XtClass(parent);
|
|
Packit |
b099d7 |
XmBaseClassExt *pcePtr;
|
|
Packit |
b099d7 |
XmWidgetExtData extData;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
wcePtr = _XmGetBaseClassExtPtr(ec, XmQmotif);
|
|
Packit |
b099d7 |
pcePtr = _XmGetBaseClassExtPtr(pec, XmQmotif);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((*wcePtr)->use_sub_resources)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmProcessLock();
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* get a uncompiled resource list to use with
|
|
Packit |
b099d7 |
* XtGetSubresources. We can't do this in
|
|
Packit |
b099d7 |
* ClassPartInitPosthook because Xt doesn't set class_inited at
|
|
Packit |
b099d7 |
* the right place and thereby mishandles the
|
|
Packit |
b099d7 |
* XtGetResourceList call
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((*wcePtr)->ext_resources == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ec->object_class.resources =
|
|
Packit |
b099d7 |
(*wcePtr)->compiled_ext_resources;
|
|
Packit |
b099d7 |
ec->object_class.num_resources =
|
|
Packit |
b099d7 |
(*wcePtr)->num_ext_resources;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtGetResourceList((WidgetClass) ec,
|
|
Packit |
b099d7 |
&((*wcePtr)->ext_resources),
|
|
Packit |
b099d7 |
&((*wcePtr)->num_ext_resources));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if ((*pcePtr)->ext_resources == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtGetResourceList((WidgetClass) pec,
|
|
Packit |
b099d7 |
&((*pcePtr)->ext_resources),
|
|
Packit |
b099d7 |
&((*pcePtr)->num_ext_resources));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XtGetSubresources(parent,
|
|
Packit |
b099d7 |
(XtPointer)new_w,
|
|
Packit |
b099d7 |
NULL, NULL,
|
|
Packit |
b099d7 |
(*wcePtr)->ext_resources,
|
|
Packit |
b099d7 |
(*wcePtr)->num_ext_resources,
|
|
Packit |
b099d7 |
args, *num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extData = (XmWidgetExtData) XtCalloc(1, sizeof(XmWidgetExtDataRec));
|
|
Packit |
b099d7 |
_XmPushWidgetExtData(parent, extData, ne->ext.extensionType);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extData->widget = new_w;
|
|
Packit |
b099d7 |
extData->reqWidget = (Widget)
|
|
Packit |
b099d7 |
XtMalloc(XtClass(new_w)->core_class.widget_size);
|
|
Packit |
b099d7 |
memcpy( extData->reqWidget, req,
|
|
Packit |
b099d7 |
XtClass(new_w)->core_class.widget_size);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Convert the fields from unit values to pixel values */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtGetSubresources(parent,
|
|
Packit |
b099d7 |
(XtPointer)parent,
|
|
Packit |
b099d7 |
NULL, NULL,
|
|
Packit |
b099d7 |
(*pcePtr)->ext_resources,
|
|
Packit |
b099d7 |
(*pcePtr)->num_ext_resources,
|
|
Packit |
b099d7 |
args, *num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmExtImportArgs(new_w, args, num_args);
|
|
Packit |
b099d7 |
_XmProcessUnlock();
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Destroy
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This needs to be in the ext object because the extension gets
|
|
Packit |
b099d7 |
* blown away before the primary does since it's a child. Otherwise
|
|
Packit |
b099d7 |
* we'd have it in the primary.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Destroy(
|
|
Packit |
b099d7 |
Widget wid )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmVendorShellExtObject ve = (XmVendorShellExtObject) wid ;
|
|
Packit |
b099d7 |
if (ve->vendor.mwm_menu)
|
|
Packit |
b099d7 |
XtFree(ve->vendor.mwm_menu);
|
|
Packit |
b099d7 |
if (ve->vendor.input_method_string)
|
|
Packit |
b099d7 |
XtFree(ve->vendor.input_method_string);
|
|
Packit |
b099d7 |
if (ve->vendor.preedit_type_string)
|
|
Packit |
b099d7 |
XtFree(ve->vendor.preedit_type_string);
|
|
Packit |
b099d7 |
if (ve->vendor.label)
|
|
Packit |
b099d7 |
XtDestroyWidget(ve->vendor.label);
|
|
Packit |
b099d7 |
if (ve->vendor.slider)
|
|
Packit |
b099d7 |
XtDestroyWidget(ve->vendor.slider);
|
|
Packit |
b099d7 |
if (ve->vendor.timer)
|
|
Packit |
b099d7 |
XtRemoveTimeOut(ve->vendor.timer);
|
|
Packit |
b099d7 |
if (ve->vendor.duration_timer)
|
|
Packit |
b099d7 |
XtRemoveTimeOut(ve->vendor.duration_timer);
|
|
Packit |
b099d7 |
_XmDestroyFocusData(ve->vendor.focus_data);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* XmRCallProc routine for checking VendorShell render table resources
|
|
Packit |
b099d7 |
* before setting them to NULL if no value is specified
|
|
Packit |
b099d7 |
* for both XmN<foo>renderTable and XmN<foo>fontList.
|
|
Packit |
b099d7 |
* If the appropriate bit in "mapStyle" has been set, then the
|
|
Packit |
b099d7 |
* function has been called twice on same widget and resource offset, thus
|
|
Packit |
b099d7 |
* resource needs to be set NULL, otherwise leave it alone.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CheckSetRenderTables(Widget wid,
|
|
Packit |
b099d7 |
int offset,
|
|
Packit |
b099d7 |
XrmValue *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmVendorShellExtObject ve;
|
|
Packit |
b099d7 |
XmWidgetExtData extData;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define SET_BFL(state) (state |= 0x01)
|
|
Packit |
b099d7 |
#define IS_SET_BFL(state) (state & 0x01)
|
|
Packit |
b099d7 |
#define SET_LFL(state) (state |= 0x02)
|
|
Packit |
b099d7 |
#define IS_SET_LFL(state) (state & 0x02)
|
|
Packit |
b099d7 |
#define SET_TFL(state) (state |= 0x04)
|
|
Packit |
b099d7 |
#define IS_SET_TFL(state) (state & 0x04)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extData = _XmGetWidgetExtData(wid, XmSHELL_EXTENSION);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if(extData == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
XmeWarning(NULL, "_XmGetWidgetExtData() returned NULL pointer.");
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ve = (XmVendorShellExtObject)(extData->widget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (((char *)ve + offset) == (char *) &(ve->vendor.button_font_list)) {
|
|
Packit |
b099d7 |
if (IS_SET_BFL(ve->vendor.mapStyle))
|
|
Packit |
b099d7 |
value->addr = NULL;
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
SET_BFL(ve->vendor.mapStyle);
|
|
Packit |
b099d7 |
value->addr = ((char *)ve + offset);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (((char *)ve + offset) == (char *) &(ve->vendor.label_font_list)) {
|
|
Packit |
b099d7 |
if (IS_SET_LFL(ve->vendor.mapStyle))
|
|
Packit |
b099d7 |
value->addr = NULL;
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
SET_LFL(ve->vendor.mapStyle);
|
|
Packit |
b099d7 |
value->addr = ((char *)ve + offset);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (((char *)ve + offset) == (char *) &(ve->vendor.text_font_list)) {
|
|
Packit |
b099d7 |
if (IS_SET_TFL(ve->vendor.mapStyle))
|
|
Packit |
b099d7 |
value->addr = NULL;
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
SET_TFL(ve->vendor.mapStyle);
|
|
Packit |
b099d7 |
value->addr = ((char *)ve + offset);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* _XmGetAudibleWarning
|
|
Packit |
b099d7 |
* This function is called by a widget to get the audibleWarning
|
|
Packit |
b099d7 |
* value. This is done by checking to see if any of the widgets,
|
|
Packit |
b099d7 |
* in the widget's parent hierarchy is a subclass of VendorShell widget
|
|
Packit |
b099d7 |
* class, and if it is, returning the VendorShell resource value.
|
|
Packit |
b099d7 |
* If no VendorShell is found, returns XmBELL, since it is the default
|
|
Packit |
b099d7 |
* value for this resource.
|
|
Packit |
b099d7 |
*************************************************************************/
|
|
Packit |
b099d7 |
unsigned char
|
|
Packit |
b099d7 |
_XmGetAudibleWarning(Widget w)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmWidgetExtData extData ;
|
|
Packit |
b099d7 |
XmVendorShellExtObject vendorExt;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (w) {
|
|
Packit |
b099d7 |
if (XmIsVendorShell (w))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
extData = _XmGetWidgetExtData(w, XmSHELL_EXTENSION);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if(extData == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
XmeWarning(NULL, "_XmGetWidgetExtData() returned NULL pointer.");
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
return XmBELL;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vendorExt = (XmVendorShellExtObject) extData->widget;
|
|
Packit |
b099d7 |
return vendorExt->vendor.audible_warning;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
w = XtParent(w);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return (XmBELL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMWMFunctionsFromProperty(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Atom actual_type;
|
|
Packit |
b099d7 |
int actual_format;
|
|
Packit |
b099d7 |
unsigned long num_items, bytes_after;
|
|
Packit |
b099d7 |
PropMwmHints *prop = NULL ;
|
|
Packit |
b099d7 |
XmVendorShellExtObject ve = (XmVendorShellExtObject) wid ;
|
|
Packit |
b099d7 |
Widget shell = ve->ext.logicalParent ;
|
|
Packit |
b099d7 |
Atom mwm_hints_atom ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XtIsRealized( shell) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*value = (XtArgVal) ve->vendor.mwm_hints.functions ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
mwm_hints_atom = XInternAtom( XtDisplay( shell), _XA_MWM_HINTS, FALSE);
|
|
Packit |
b099d7 |
XGetWindowProperty( XtDisplay( shell), XtWindow( shell), mwm_hints_atom, 0,
|
|
Packit |
b099d7 |
(long) PROP_MWM_HINTS_ELEMENTS, FALSE, mwm_hints_atom,
|
|
Packit |
b099d7 |
&actual_type, &actual_format, &num_items, &bytes_after,
|
|
Packit |
b099d7 |
(unsigned char **) &prop);
|
|
Packit |
b099d7 |
if( (actual_type != mwm_hints_atom)
|
|
Packit |
b099d7 |
|| (actual_format != 32)
|
|
Packit |
b099d7 |
|| (num_items < PROP_MWM_HINTS_ELEMENTS)
|
|
Packit |
b099d7 |
|| (prop == NULL) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( prop != NULL )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XFree( (char *)prop) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*value = (XtArgVal) ve->vendor.mwm_hints.functions ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*value = (XtArgVal) prop->functions ;
|
|
Packit |
b099d7 |
XFree( (char *) prop) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******* XmeFunctions ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
XmeAddFocusChangeCallback(Widget w,
|
|
Packit |
b099d7 |
XtCallbackProc proc,
|
|
Packit |
b099d7 |
XtPointer data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmWidgetExtData extData ;
|
|
Packit |
b099d7 |
XmVendorShellExtObject vendorExt;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmIsVendorShell(w) == False) {
|
|
Packit |
b099d7 |
XmeWarning(w, NOTVENDORSHELL);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extData = _XmGetWidgetExtData(w, XmSHELL_EXTENSION);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if(extData == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
XmeWarning(NULL, "_XmGetWidgetExtData() returned NULL pointer.");
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vendorExt = (XmVendorShellExtObject) extData->widget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAddCallback((InternalCallbackList *)
|
|
Packit |
b099d7 |
&(vendorExt->vendor.focus_moved_callback), proc, data);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
XmeRemoveFocusChangeCallback(Widget w,
|
|
Packit |
b099d7 |
XtCallbackProc proc,
|
|
Packit |
b099d7 |
XtPointer data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmWidgetExtData extData ;
|
|
Packit |
b099d7 |
XmVendorShellExtObject vendorExt;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmIsVendorShell(w) == False) {
|
|
Packit |
b099d7 |
XmeWarning(w, NOTVENDORSHELL);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extData = _XmGetWidgetExtData(w, XmSHELL_EXTENSION);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if(extData == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
XmeWarning(NULL, "_XmGetWidgetExtData() returned NULL pointer.");
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vendorExt = (XmVendorShellExtObject) extData->widget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmRemoveCallback((InternalCallbackList *)
|
|
Packit |
b099d7 |
&(vendorExt->vendor.focus_moved_callback), proc, data);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
}
|