Blame clients/mwm/WmGlobal.h

Packit b099d7
#ifndef _WmGlobal_h
Packit b099d7
#define _WmGlobal_h
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
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
 * Motif Release 1.2.4
Packit b099d7
*/ 
Packit b099d7
/*   $XConsortium: WmGlobal.h /main/16 1996/10/30 11:55:23 drk $ */
Packit b099d7
/*
Packit b099d7
 * (c) Copyright 1987,1988,1989,1990,1992,1993,1994 HEWLETT-PACKARD COMPANY 
Packit b099d7
 * (c) Copyright 1993, 1994 International Business Machines Corp.
Packit b099d7
 * (c) Copyright 1993, 1994 Sun Microsystems, Inc.
Packit b099d7
 * (c) Copyright 1993, 1994 Novell, Inc.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/* ANSI C definitions,  This should be the first thing in WmGlobal.h */
Packit b099d7
#ifdef __STDC__
Packit b099d7
#define Const const
Packit b099d7
#else
Packit b099d7
#define Const /**/
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Included Files:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <X11/Xlib.h>
Packit b099d7
#include <X11/Xutil.h>
Packit b099d7
#ifndef NO_SHAPE
Packit b099d7
#include <X11/extensions/shape.h>
Packit b099d7
#endif /* NO_SHAPE  */
Packit b099d7
#include <X11/IntrinsicP.h>
Packit b099d7
#include <X11/Intrinsic.h>
Packit b099d7
#include <X11/StringDefs.h>
Packit b099d7
#include <Xm/MwmUtil.h>
Packit b099d7
#include <Xm/Xm.h>
Packit b099d7
#ifdef WSM
Packit b099d7
#include <Xm/ColorObjP.h>
Packit b099d7
#include 
Packit b099d7
#include 
Packit b099d7
#include 
Packit b099d7
#include "WmParse.h"
Packit b099d7
#ifdef PANELIST
Packit b099d7
#include 
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
#if defined(sun) && defined(ALLPLANES)
Packit b099d7
#include <X11/extensions/allplanes.h>
Packit b099d7
#endif /* defined(sun) && defined(ALLPLANES) */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Value definitions and macros:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#ifdef MOTIF_ONE_DOT_ONE
Packit b099d7
#define XmFONTLIST_DEFAULT_TAG	"XmSTRING_DEFAULT_CHARSET"
Packit b099d7
#endif
Packit b099d7
#ifdef WSM
Packit b099d7
Packit b099d7
extern int WmIdentity;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Color server defines
Packit b099d7
 */
Packit b099d7
#define CSERVE_NORMAL		   0
Packit b099d7
#define CSERVE_NOT_AVAILABLE       1
Packit b099d7
#define CSERVE_FAILURE             2
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* window manager name and class used to get resources: */
Packit b099d7
#define	WM_RESOURCE_CLASS	"Mwm"
Packit b099d7
#define WM_RESOURCE_NAME	"mwm"
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
#define	DT_WM_RESOURCE_CLASS	"Dtwm"
Packit b099d7
#define DT_WM_RESOURCE_NAME	"dtwm"
Packit b099d7
Packit b099d7
Packit b099d7
extern Pixel		FPbackground;
Packit b099d7
extern Pixel		FPforeground;
Packit b099d7
extern Pixel		FPtopshadow;
Packit b099d7
extern Pixel		FPbottomshadow;
Packit b099d7
extern Pixel		FPselectcolor;
Packit b099d7
Packit b099d7
#define  USE_ACTIVE_PIXELSET		0
Packit b099d7
#define  USE_INACTIVE_PIXELSET		1
Packit b099d7
#define  USE_PRIMARY_PIXELSET		2
Packit b099d7
#define  USE_SECONDARY_PIXELSET		3
Packit b099d7
Packit b099d7
#define MWM	        	     0
Packit b099d7
#define DT_MWM		 	     1
Packit b099d7
Packit b099d7
#define MwmBehavior		(WmIdentity == MWM)
Packit b099d7
#define DtwmBehavior		(WmIdentity == DT_MWM)
Packit b099d7
Packit b099d7
#else
Packit b099d7
#define MwmBehavior		(True)
Packit b099d7
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* ICCC atom names: */
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
# define _XA_TARGETS		"TARGETS"
Packit b099d7
# define _XA_MULTIPLE		"MULTIPLE"
Packit b099d7
# define _XA_TIMESTAMP		"TIMESTAMP"
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
#define _XA_WM_STATE		"WM_STATE"
Packit b099d7
#define _XA_WM_PROTOCOLS	"WM_PROTOCOLS"
Packit b099d7
#define _XA_WM_CHANGE_STATE	"WM_CHANGE_STATE"
Packit b099d7
#define _XA_WM_SAVE_YOURSELF	"WM_SAVE_YOURSELF"
Packit b099d7
#define _XA_WM_DELETE_WINDOW	"WM_DELETE_WINDOW"
Packit b099d7
#define _XA_WM_TAKE_FOCUS	"WM_TAKE_FOCUS"
Packit b099d7
#define _XA_WM_COLORMAP_WINDOWS	"WM_COLORMAP_WINDOWS"
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
/* original set of query targets */
Packit b099d7
# define _XA_MOTIF_WM_CLIENT_WINDOW		"_MOTIF_WM_CLIENT_WINDOW"
Packit b099d7
# define _XA_MOTIF_WM_POINTER_WINDOW		"_MOTIF_WM_POINTER_WINDOW"
Packit b099d7
# define _XA_MOTIF_WM_ALL_CLIENTS		"_MOTIF_WM_ALL_CLIENTS"
Packit b099d7
	  
Packit b099d7
/* menu command interface support */
Packit b099d7
# define _XA_MOTIF_WM_DEFINE_COMMAND		"_MOTIF_WM_DEFINE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_INCLUDE_COMMAND		"_MOTIF_WM_INCLUDE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_REMOVE_COMMAND		"_MOTIF_WM_REMOVE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_ENABLE_COMMAND		"_MOTIF_WM_ENABLE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_DISABLE_COMMAND		"_MOTIF_WM_DISABLE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_RENAME_COMMAND		"_MOTIF_WM_RENAME_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_INVOKE_COMMAND		"_MOTIF_WM_INVOKE_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_REQUEST_COMMAND		"_MOTIF_WM_REQUEST_COMMAND"
Packit b099d7
# define _XA_MOTIF_WM_WINDOW_FLAGS		"_MOTIF_WM_WINDOW_FLAGS"
Packit b099d7
Packit b099d7
/* automation support */
Packit b099d7
# define _XA_MOTIF_WM_AUTOMATION 		"_MOTIF_WM_AUTOMATION"
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
/* window manager exit value on fatal errors: */
Packit b099d7
#define WM_ERROR_EXIT_VALUE	1
Packit b099d7
Packit b099d7
/* built-in button bindings for window manager actions: */
Packit b099d7
#define SELECT_BUTTON			Button1
Packit b099d7
#define SELECT_BUTTON_MASK		Button1Mask
Packit b099d7
#define SELECT_BUTTON_MOTION_MASK	Button1MotionMask
Packit b099d7
Packit b099d7
#define FOCUS_SELECT_BUTTON	SELECT_BUTTON
Packit b099d7
#define FOCUS_SELECT_MODIFIERS	0
Packit b099d7
Packit b099d7
/* direct manipulation button */
Packit b099d7
#define DMANIP_BUTTON			Button2
Packit b099d7
#define DMANIP_BUTTON_MASK		Button2Mask
Packit b099d7
#define DMANIP_BUTTON_MOTION_MASK	Button2MotionMask
Packit b099d7
Packit b099d7
/* menu button */
Packit b099d7
#define BMENU_BUTTON			Button3
Packit b099d7
#define BMENU_BUTTON_MASK		Button3Mask
Packit b099d7
Packit b099d7
/* max number of buttons on a mouse */
Packit b099d7
#define NUM_BUTTONS			5
Packit b099d7
Packit b099d7
/* Needed by PostMenu() to specify key post: */
Packit b099d7
#define NoButton		0
Packit b099d7
Packit b099d7
/* manage window flags: */
Packit b099d7
#define MANAGEW_WM_STARTUP	(1L << 0)
Packit b099d7
#define MANAGEW_WM_RESTART	(1L << 1)
Packit b099d7
#define MANAGEW_NORMAL		(1L << 2)
Packit b099d7
#define MANAGEW_ICON_BOX	(1L << 3)
Packit b099d7
#define MANAGEW_CONFIRM_BOX	(1L << 4)
Packit b099d7
#define MANAGEW_WM_RESTART_ICON	(1L << 5)
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
#define MANAGEW_WM_CLIENTS	(MANAGEW_ICON_BOX | \
Packit b099d7
				 MANAGEW_CONFIRM_BOX )
Packit b099d7
#else /* WSM */
Packit b099d7
#define MANAGEW_WM_CLIENTS	(MANAGEW_ICON_BOX | MANAGEW_CONFIRM_BOX)
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* keyboard input focus flag values (for calls to SetKeyboardFocus) */
Packit b099d7
#define ALWAYS_SET_FOCUS	(1L << 0)
Packit b099d7
#define REFRESH_LAST_FOCUS	(1L << 1)
Packit b099d7
#define CLIENT_AREA_FOCUS	(1L << 2)
Packit b099d7
#define SCREEN_SWITCH_FOCUS	(1L << 3)
Packit b099d7
/* special value for use for Do_Focus_Key to set to internal window */
Packit b099d7
#define WORKSPACE_IF_NULL	(1L << 4)
Packit b099d7
Packit b099d7
/* Menu posting flag values (for calls to PostMenu) */
Packit b099d7
#define POST_AT_XY		(1L << 0)
Packit b099d7
#define POST_TRAVERSAL_ON	(1L << 1)
Packit b099d7
#define POST_STICKY		(1L << 2)
Packit b099d7
Packit b099d7
/* feedback box styles */
Packit b099d7
#define FB_OFF			(0)
Packit b099d7
#define FB_SIZE			(1L << 0)
Packit b099d7
#define FB_POSITION		(1L << 1)
Packit b099d7
Packit b099d7
/* confirmbox and waitbox indexes */
Packit b099d7
#define DEFAULT_BEHAVIOR_ACTION		0
Packit b099d7
#define CUSTOM_BEHAVIOR_ACTION		1
Packit b099d7
#define RESTART_ACTION		2
Packit b099d7
#define QUIT_MWM_ACTION		3
Packit b099d7
Packit b099d7
/* extract text height in pixels from a (XFontStruct *) */
Packit b099d7
#define TEXT_HEIGHT(pfs) (((pfs)->ascent)+((pfs)->descent))
Packit b099d7
Packit b099d7
/* icon frame shadow widths */
Packit b099d7
#ifdef WSM
Packit b099d7
#define ICON_EXTERNAL_SHADOW_WIDTH	(wmGD.iconExternalShadowWidth)
Packit b099d7
#else /* WSM */
Packit b099d7
#define ICON_EXTERNAL_SHADOW_WIDTH	2
Packit b099d7
#endif /* WSM */
Packit b099d7
#define ICON_INTERNAL_SHADOW_WIDTH	1
Packit b099d7
Packit b099d7
/* padding widths */
Packit b099d7
#define ICON_IMAGE_TOP_PAD	2
Packit b099d7
#define ICON_IMAGE_BOTTOM_PAD	2
Packit b099d7
#define ICON_IMAGE_LEFT_PAD	2
Packit b099d7
#define ICON_IMAGE_RIGHT_PAD	2
Packit b099d7
Packit b099d7
/* image offsets */
Packit b099d7
#define ICON_INNER_X_OFFSET	\
Packit b099d7
	    (ICON_IMAGE_LEFT_PAD+ICON_EXTERNAL_SHADOW_WIDTH)
Packit b099d7
#define ICON_INNER_Y_OFFSET	\
Packit b099d7
	    (ICON_IMAGE_TOP_PAD+ICON_EXTERNAL_SHADOW_WIDTH)
Packit b099d7
Packit b099d7
Packit b099d7
#define ICON_IMAGE_X_OFFSET ICON_INNER_X_OFFSET+ICON_INTERNAL_SHADOW_WIDTH
Packit b099d7
#define ICON_IMAGE_Y_OFFSET ICON_INNER_Y_OFFSET+ICON_INTERNAL_SHADOW_WIDTH
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/* number of rectangles to allocate */
Packit b099d7
#define NUM_MATTE_TS_RECTS	(6)
Packit b099d7
#define NUM_MATTE_BS_RECTS	(6)
Packit b099d7
Packit b099d7
#define NUM_IMAGE_TOP_RECTS	\
Packit b099d7
	    ((2*ICON_EXTERNAL_SHADOW_WIDTH)+(2*ICON_INTERNAL_SHADOW_WIDTH)) 
Packit b099d7
Packit b099d7
Packit b099d7
#define NUM_IMAGE_BOTTOM_RECTS	\
Packit b099d7
	    ((2*ICON_EXTERNAL_SHADOW_WIDTH)+(2*ICON_INTERNAL_SHADOW_WIDTH)) 
Packit b099d7
Packit b099d7
Packit b099d7
#define NUM_LABEL_TOP_RECTS	(2*ICON_EXTERNAL_SHADOW_WIDTH)
Packit b099d7
#define NUM_LABEL_BOTTOM_RECTS	(2*ICON_EXTERNAL_SHADOW_WIDTH)
Packit b099d7
Packit b099d7
#define NUM_BOTH_TOP_RECTS	\
Packit b099d7
	    ((3*ICON_EXTERNAL_SHADOW_WIDTH)+(3*ICON_INTERNAL_SHADOW_WIDTH)) 
Packit b099d7
Packit b099d7
Packit b099d7
#define NUM_BOTH_BOTTOM_RECTS	\
Packit b099d7
	    ((3*ICON_EXTERNAL_SHADOW_WIDTH)+(3*ICON_INTERNAL_SHADOW_WIDTH)) 
Packit b099d7
Packit b099d7
Packit b099d7
#define NUM_STATIC_TOP_RECTS	(2*ICON_INTERNAL_SHADOW_WIDTH)
Packit b099d7
#define NUM_STATIC_BOTTOM_RECTS	(2*ICON_INTERNAL_SHADOW_WIDTH)
Packit b099d7
Packit b099d7
Packit b099d7
/* client frame shadow widths */
Packit b099d7
#ifdef WSM
Packit b099d7
#define FRAME_EXTERNAL_SHADOW_WIDTH	(wmGD.frameExternalShadowWidth)
Packit b099d7
#else /* WSM */
Packit b099d7
#define FRAME_EXTERNAL_SHADOW_WIDTH	2
Packit b099d7
#endif /* WSM */
Packit b099d7
#define FRAME_INTERNAL_SHADOW_WIDTH	1
Packit b099d7
#define FRAME_CLIENT_SHADOW_WIDTH	1
Packit b099d7
#define FRAME_MATTE_SHADOW_WIDTH	1
Packit b099d7
Packit b099d7
/* padding around text in title bar */
Packit b099d7
#define WM_TOP_TITLE_PADDING	1
Packit b099d7
#define WM_BOTTOM_TITLE_PADDING	1
Packit b099d7
#define WM_TOP_TITLE_SHADOW	FRAME_INTERNAL_SHADOW_WIDTH
Packit b099d7
#define WM_BOTTOM_TITLE_SHADOW	FRAME_INTERNAL_SHADOW_WIDTH
Packit b099d7
Packit b099d7
#define WM_TITLE_BAR_PADDING	(WM_TOP_TITLE_PADDING \
Packit b099d7
				 +WM_BOTTOM_TITLE_PADDING \
Packit b099d7
				 +WM_TOP_TITLE_SHADOW \
Packit b099d7
				 +WM_BOTTOM_TITLE_SHADOW)
Packit b099d7
Packit b099d7
/* stretch directions  - (starts at NW and goes clockwise) */
Packit b099d7
#define STRETCH_NO_DIRECTION	-1
Packit b099d7
#define STRETCH_NORTH_WEST	0
Packit b099d7
#define STRETCH_NORTH		1
Packit b099d7
#define STRETCH_NORTH_EAST	2
Packit b099d7
#define STRETCH_EAST		3
Packit b099d7
#define STRETCH_SOUTH_EAST	4 
Packit b099d7
#define STRETCH_SOUTH 		5
Packit b099d7
#define STRETCH_SOUTH_WEST	6
Packit b099d7
#define STRETCH_WEST		7
Packit b099d7
Packit b099d7
#define STRETCH_COUNT		8
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
Packit b099d7
/* Workspace allocation granularity */
Packit b099d7
#define WS_ALLOC_AMOUNT			8
Packit b099d7
Packit b099d7
/* Window list allocation granularity */
Packit b099d7
#define WINDOW_ALLOC_AMOUNT		16
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* function flag masks */
Packit b099d7
#define WM_FUNC_DEFAULT		MWM_FUNC_ALL
Packit b099d7
#define WM_FUNC_NONE		0
Packit b099d7
#define WM_FUNC_ALL		(MWM_FUNC_RESIZE | MWM_FUNC_MOVE |\
Packit b099d7
				 MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE |\
Packit b099d7
				 MWM_FUNC_CLOSE)
Packit b099d7
Packit b099d7
/* decorations flag masks */
Packit b099d7
#define WM_DECOR_DEFAULT	MWM_DECOR_ALL
Packit b099d7
#define WM_DECOR_NONE		0
Packit b099d7
#define WM_DECOR_BORDER		(MWM_DECOR_BORDER)
Packit b099d7
#define WM_DECOR_TITLE		(MWM_DECOR_TITLE)
Packit b099d7
#define WM_DECOR_SYSTEM		(WM_DECOR_TITLE | MWM_DECOR_MENU)
Packit b099d7
#define WM_DECOR_MINIMIZE	(WM_DECOR_TITLE | MWM_DECOR_MINIMIZE)
Packit b099d7
#define WM_DECOR_MAXIMIZE	(WM_DECOR_TITLE | MWM_DECOR_MAXIMIZE)
Packit b099d7
#define WM_DECOR_TITLEBAR	(WM_DECOR_SYSTEM | WM_DECOR_MINIMIZE |\
Packit b099d7
				 WM_DECOR_MAXIMIZE)
Packit b099d7
#define WM_DECOR_RESIZEH	(WM_DECOR_BORDER | MWM_DECOR_RESIZEH)
Packit b099d7
#define WM_DECOR_RESIZE		(WM_DECOR_RESIZEH)
Packit b099d7
#define WM_DECOR_ALL		(WM_DECOR_TITLEBAR | WM_DECOR_RESIZEH)
Packit b099d7
Packit b099d7
#ifdef PANELIST
Packit b099d7
#define WM_DECOR_PANEL_DEFAULT	WM_DECOR_BORDER
Packit b099d7
#endif /* PANELIST */
Packit b099d7
Packit b099d7
/* icon box definitions */
Packit b099d7
#define ICON_BOX_FUNCTIONS	(MWM_FUNC_RESIZE | MWM_FUNC_MOVE |\
Packit b099d7
				 MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE)
Packit b099d7
Packit b099d7
#ifdef PANELIST
Packit b099d7
/* accessory panel definitions */
Packit b099d7
#define WM_FUNC_PANEL_DEFAULT	(MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE)
Packit b099d7
#define WM_FUNC_SUBPANEL_DEFAULT (MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE|\
Packit b099d7
				MWM_FUNC_CLOSE)
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#ifdef WSM
Packit b099d7
/* workspace controller definitions */
Packit b099d7
#define CONTROL_BOX_FUNCTIONS	(MWM_FUNC_MOVE)
Packit b099d7
Packit b099d7
/* workspace presence definitions */
Packit b099d7
#define PRESENCE_BOX_FUNCTIONS	(MWM_FUNC_MOVE)
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* show feedback definitions */
Packit b099d7
#define WM_SHOW_FB_BEHAVIOR	(1L << 0)
Packit b099d7
#define WM_SHOW_FB_MOVE		(1L << 1)
Packit b099d7
#define WM_SHOW_FB_PLACEMENT	(1L << 2)
Packit b099d7
#define WM_SHOW_FB_RESIZE	(1L << 3)
Packit b099d7
#define WM_SHOW_FB_RESTART	(1L << 4)
Packit b099d7
#define WM_SHOW_FB_QUIT         (1L << 5)
Packit b099d7
#define WM_SHOW_FB_KILL         (1L << 6)
Packit b099d7
Packit b099d7
#define WM_SHOW_FB_ALL		(WM_SHOW_FB_BEHAVIOR  | WM_SHOW_FB_MOVE    |\
Packit b099d7
				 WM_SHOW_FB_PLACEMENT | WM_SHOW_FB_RESIZE  |\
Packit b099d7
				 WM_SHOW_FB_RESTART   | WM_SHOW_FB_QUIT    |\
Packit b099d7
				 WM_SHOW_FB_KILL)
Packit b099d7
Packit b099d7
#define WM_SHOW_FB_NONE		0
Packit b099d7
Packit b099d7
#define WM_SHOW_FB_DEFAULT	WM_SHOW_FB_ALL
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
/* flags identifying resources to save */
Packit b099d7
Packit b099d7
#define WM_RES_WORKSPACE_LIST		(1L << 0)
Packit b099d7
#define WM_RES_BACKDROP_IMAGE		(1L << 1)
Packit b099d7
#define WM_RES_WORKSPACE_TITLE		(1L << 2)
Packit b099d7
#define WM_RES_INITIAL_WORKSPACE	(1L << 3)
Packit b099d7
#define WM_RES_FP_POSITION      	(1L << 4)
Packit b099d7
#define WM_RES_ICONBOX_GEOMETRY      	(1L << 5)
Packit b099d7
#define WM_RES_WORKSPACE_COUNT		(1L << 6)
Packit b099d7
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Miscellaneous utility window manager data structures ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  These data structures are used in resource processing, ...
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WHSize
Packit b099d7
{
Packit b099d7
    int		width;
Packit b099d7
    int		height;
Packit b099d7
Packit b099d7
} WHSize;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _AspectRatio
Packit b099d7
{
Packit b099d7
    int		x;
Packit b099d7
    int		y;
Packit b099d7
Packit b099d7
} AspectRatio;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _WmColorData
Packit b099d7
{
Packit b099d7
    Screen *screen;
Packit b099d7
    Colormap colormap;
Packit b099d7
    Pixel background;
Packit b099d7
    Pixel foreground;
Packit b099d7
    Pixel top_shadow;
Packit b099d7
    Pixel bottom_shadow;
Packit b099d7
Packit b099d7
} WmColorData;
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
typedef Atom WorkspaceID;
Packit b099d7
#endif
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Event processing data structures ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  These data structures are used in saving button and key
Packit b099d7
 *  specifications that are used in processing events that are used to do 
Packit b099d7
 *  window manager functions (e.g., set the colormap focus).
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef unsigned long Context;
Packit b099d7
typedef unsigned long Behavior;
Packit b099d7
typedef unsigned long GroupArg;
Packit b099d7
Packit b099d7
typedef Boolean (*WmFunction) ();
Packit b099d7
Packit b099d7
#define NO_MODIFIER	0		/* value for state field */
Packit b099d7
Packit b099d7
typedef struct _KeySpec
Packit b099d7
{
Packit b099d7
    unsigned int state;
Packit b099d7
    KeyCode      keycode;
Packit b099d7
    Context	 context;
Packit b099d7
    Context	 subContext;
Packit b099d7
    WmFunction	 wmFunction;
Packit b099d7
    String	 wmFuncArgs;
Packit b099d7
    struct _KeySpec *nextKeySpec;
Packit b099d7
Packit b099d7
} KeySpec;
Packit b099d7
Packit b099d7
typedef struct _ButtonSpec
Packit b099d7
{
Packit b099d7
    unsigned int state;
Packit b099d7
    unsigned int button;
Packit b099d7
    unsigned int eventType;
Packit b099d7
    Boolean	click;
Packit b099d7
    Context	context;
Packit b099d7
    Context	subContext;
Packit b099d7
    WmFunction	wmFunction;
Packit b099d7
    String	wmFuncArgs;
Packit b099d7
    struct _ButtonSpec *nextButtonSpec;
Packit b099d7
Packit b099d7
} ButtonSpec;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Context field values:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define F_CONTEXT_NONE		0
Packit b099d7
#define F_CONTEXT_ROOT		(1L << 0)
Packit b099d7
#define F_CONTEXT_ICON		(1L << 1)
Packit b099d7
#define F_CONTEXT_NORMAL	(1L << 2)
Packit b099d7
#define F_CONTEXT_MAXIMIZE	(1L << 3)
Packit b099d7
#define F_CONTEXT_ICONBOX	(1L << 4)
Packit b099d7
#ifdef WSM
Packit b099d7
#define F_CONTEXT_IFKEY		(1L << 7)
Packit b099d7
#endif /* WSM */
Packit b099d7
#define F_CONTEXT_WINDOW	(F_CONTEXT_NORMAL|F_CONTEXT_MAXIMIZE)
Packit b099d7
#define F_CONTEXT_ALL		(F_CONTEXT_ROOT|F_CONTEXT_ICON|F_CONTEXT_WINDOW)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * context field mark for catching menu recursion 
Packit b099d7
 *   (tied to F_CONTEXT_... values):
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define CR_MENU_MARK		(1L << 5)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Part context defines for event processing.  The part context is used
Packit b099d7
 * to make a subcontext mask.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/* window (frame and client) part contexts */
Packit b099d7
#define WINDOW_PART_NONE	0
Packit b099d7
#define FRAME_NONE		WINDOW_PART_NONE
Packit b099d7
#define FRAME_CLIENT		1
Packit b099d7
#define FRAME_SYSTEM		2
Packit b099d7
#define FRAME_TITLE		3
Packit b099d7
#define FRAME_MINIMIZE		4
Packit b099d7
#define FRAME_MAXIMIZE		5
Packit b099d7
#define FRAME_RESIZE_NW		6
Packit b099d7
#define FRAME_RESIZE_N		7
Packit b099d7
#define FRAME_RESIZE_NE		8
Packit b099d7
#define FRAME_RESIZE_E		9
Packit b099d7
#define FRAME_RESIZE_SE		10
Packit b099d7
#define FRAME_RESIZE_S 		11
Packit b099d7
#define FRAME_RESIZE_SW		12
Packit b099d7
#define FRAME_RESIZE_W		13
Packit b099d7
#define FRAME_NBORDER		14
Packit b099d7
#define FRAME_MATTE		15
Packit b099d7
#define FRAME_MISC		FRAME_MATTE
Packit b099d7
#ifdef WSM
Packit b099d7
#define FRAME_TITLEBAR		17
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* icon part contexts */
Packit b099d7
#define ICON_PART_NONE		0
Packit b099d7
#define ICON_PART_ALL		16
Packit b099d7
Packit b099d7
/* root part contexts */
Packit b099d7
#define ROOT_PART_NONE		0
Packit b099d7
#define ROOT_PART_ALL		17
Packit b099d7
Packit b099d7
/* iconbox part contexts */
Packit b099d7
#define ICONBOX_PART_NONE	0
Packit b099d7
#define ICONBOX_PART_IBOX	18
Packit b099d7
#define ICONBOX_PART_IICON	19
Packit b099d7
#define ICONBOX_PART_WICON	20
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Subcontext field values:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_NONE		(1L << WINDOW_PART_NONE)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_I_ALL		(1L << ICON_PART_ALL)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_R_ALL		(1L << ROOT_PART_ALL)
Packit b099d7
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_IB_IBOX		(1L << ICONBOX_PART_IBOX)
Packit b099d7
#define F_SUBCONTEXT_IB_IICON		(1L << ICONBOX_PART_IICON)
Packit b099d7
#define F_SUBCONTEXT_IB_WICON		(1L << ICONBOX_PART_WICON)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_IB_ICONS		(F_SUBCONTEXT_IB_IICON |\
Packit b099d7
					 F_SUBCONTEXT_IB_WICON)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_IB_ALL		(F_SUBCONTEXT_IB_IBOX |\
Packit b099d7
					 F_SUBCONTEXT_IB_IICON |\
Packit b099d7
					 F_SUBCONTEXT_IB_WICON)
Packit b099d7
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_CLIENT		(1L << FRAME_CLIENT)
Packit b099d7
#define F_SUBCONTEXT_W_APP		F_SUBCONTEXT_W_CLIENT
Packit b099d7
#define F_SUBCONTEXT_W_SYSTEM		(1L << FRAME_SYSTEM)
Packit b099d7
#define F_SUBCONTEXT_W_TITLE		(1L << FRAME_TITLE)
Packit b099d7
#define F_SUBCONTEXT_W_MINIMIZE		(1L << FRAME_MINIMIZE)
Packit b099d7
#define F_SUBCONTEXT_W_MAXIMIZE		(1L << FRAME_MAXIMIZE)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_NW	(1L << FRAME_RESIZE_NW)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_N		(1L << FRAME_RESIZE_N)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_NE	(1L << FRAME_RESIZE_NE)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_E		(1L << FRAME_RESIZE_E)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_SE	(1L << FRAME_RESIZE_SE)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_S		(1L << FRAME_RESIZE_S)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_SW	(1L << FRAME_RESIZE_SW)
Packit b099d7
#define F_SUBCONTEXT_W_RESIZE_W		(1L << FRAME_RESIZE_W)
Packit b099d7
#define F_SUBCONTEXT_W_NBORDER		(1L << FRAME_NBORDER)
Packit b099d7
#define F_SUBCONTEXT_W_MATTE		(1L << FRAME_MATTE)
Packit b099d7
#define F_SUBCONTEXT_W_MISC		F_SUBCONTEXT_W_MATTE
Packit b099d7
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_RBORDER		(F_SUBCONTEXT_W_RESIZE_NW |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_N |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_NE |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_E |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_SE |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_S |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_SW |\
Packit b099d7
					 F_SUBCONTEXT_W_RESIZE_W)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_BORDER		(F_SUBCONTEXT_W_RBORDER |\
Packit b099d7
					 F_SUBCONTEXT_W_NBORDER)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_TITLEBAR		(F_SUBCONTEXT_W_SYSTEM |\
Packit b099d7
					 F_SUBCONTEXT_W_TITLE |\
Packit b099d7
					 F_SUBCONTEXT_W_MINIMIZE |\
Packit b099d7
					 F_SUBCONTEXT_W_MAXIMIZE)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_FRAME		(F_SUBCONTEXT_W_BORDER |\
Packit b099d7
					 F_SUBCONTEXT_W_TITLEBAR)
Packit b099d7
Packit b099d7
#define F_SUBCONTEXT_W_ALL		(F_SUBCONTEXT_W_FRAME |\
Packit b099d7
					 F_SUBCONTEXT_W_MATTE |\
Packit b099d7
					 F_SUBCONTEXT_W_CLIENT)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Click / double-click processing data:
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct _ClickData
Packit b099d7
{
Packit b099d7
    Boolean	clickPending;
Packit b099d7
    Boolean	doubleClickPending;
Packit b099d7
#ifdef WSM
Packit b099d7
    Boolean	bReplayed;
Packit b099d7
#endif /* WSM */
Packit b099d7
    unsigned int button;
Packit b099d7
    unsigned int state;
Packit b099d7
    unsigned int releaseState;
Packit b099d7
    struct _ClientData *pCD;
Packit b099d7
    Context	context;
Packit b099d7
    Context	subContext;
Packit b099d7
    Context	clickContext;
Packit b099d7
    Context	doubleClickContext;
Packit b099d7
    Time	time;
Packit b099d7
Packit b099d7
} ClickData;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Frame part identification aids:
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct _Gadget_Rectangle
Packit b099d7
{
Packit b099d7
    short	id;
Packit b099d7
    XRectangle  rect;
Packit b099d7
Packit b099d7
} GadgetRectangle;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Behavior function argument field values:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define F_BEHAVIOR_DEFAULT	(1L << 0)
Packit b099d7
#define F_BEHAVIOR_CUSTOM	(1L << 1)
Packit b099d7
#define F_BEHAVIOR_SWITCH	(1L << 2)
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Window/icon group function argument field values:
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define F_GROUP_WINDOW		(1L << 0)
Packit b099d7
#define F_GROUP_ICON		(1L << 1)
Packit b099d7
#define F_GROUP_DEFAULT		(F_GROUP_WINDOW | F_GROUP_ICON)
Packit b099d7
#define F_GROUP_TRANSIENT	(1L << 2)
Packit b099d7
#define F_GROUP_ALL		(F_GROUP_DEFAULT | F_GROUP_TRANSIENT)
Packit b099d7
#define F_GROUP_GROUP		(1L << 3)
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Workspace data structures ...
Packit b099d7
 *
Packit b099d7
 ***************************************************************************/
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Specific data for workspacePresence dialog box
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct _WsPresenceData
Packit b099d7
{
Packit b099d7
    XmString		title;			/* resource */
Packit b099d7
Packit b099d7
    Widget		shellW;
Packit b099d7
    Widget		formW;
Packit b099d7
    Widget		windowLabelW;
Packit b099d7
    Widget		windowNameW;
Packit b099d7
    Widget		workspaceLabelW;
Packit b099d7
    Widget		workspaceScrolledListW;
Packit b099d7
    Widget		workspaceListW;
Packit b099d7
    Widget		allWsW;
Packit b099d7
    Widget		sepW;
Packit b099d7
    Widget		OkW;
Packit b099d7
    Widget		CancelW;
Packit b099d7
    Widget		HelpW;
Packit b099d7
Packit b099d7
    struct _ClientData 	*pCDforClient;
Packit b099d7
    Context 		contextForClient;
Packit b099d7
Packit b099d7
    Boolean 		*ItemSelected;		/* workspaces in list */
Packit b099d7
    XmStringTable 	ItemStrings;		/* workspace names */
Packit b099d7
    int 		currentWsItem;
Packit b099d7
    Boolean		onScreen;
Packit b099d7
    Boolean             userDismissed;
Packit b099d7
    int			numWorkspaces;
Packit b099d7
Packit b099d7
} WsPresenceData;
Packit b099d7
Packit b099d7
#define NUM_WSP_WIDGETS 	11
Packit b099d7
Packit b099d7
typedef struct _WsPresenceData *PtrWsPresenceData;
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef PANELIST
Packit b099d7
/*
Packit b099d7
 * Specific data for top level help dialog 
Packit b099d7
 */
Packit b099d7
Packit b099d7
typedef struct _WsDtHelpData
Packit b099d7
{
Packit b099d7
    XmString		title;			/* resource */
Packit b099d7
    Widget		shell;
Packit b099d7
    Widget		dialog;
Packit b099d7
    Widget		errorDialog;
Packit b099d7
    Position            xPos;
Packit b099d7
    Position            yPos;
Packit b099d7
    Boolean             restored;
Packit b099d7
    Boolean		onScreen;
Packit b099d7
    Boolean             userDismissed;
Packit b099d7
    Boolean		bMapped;
Packit b099d7
    struct _ClientData 	*pCDforClient;
Packit b099d7
} WsDtHelpData;
Packit b099d7
Packit b099d7
typedef struct _WsDtHelpData *PtrWsDtHelpData;
Packit b099d7
#endif /*  PANELIST */
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  DtSessionItems
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _DtSessionItem
Packit b099d7
{
Packit b099d7
    Boolean                processed;
Packit b099d7
    int                    clientState;
Packit b099d7
    String                 workspaces;
Packit b099d7
    String                 clientMachine;
Packit b099d7
    String                 command;
Packit b099d7
    int                    commandArgc;
Packit b099d7
    char                   **commandArgv;
Packit b099d7
    struct _SessionGeom    *sessionGeom;
Packit b099d7
} DtSessionItem;
Packit b099d7
Packit b099d7
typedef struct _SessionGeom
Packit b099d7
{
Packit b099d7
    int          flags;
Packit b099d7
    int          clientX;
Packit b099d7
    int          clientY;
Packit b099d7
    int          clientWidth;
Packit b099d7
    int          clientHeight;
Packit b099d7
} SessionGeom;
Packit b099d7
Packit b099d7
/*      
Packit b099d7
 *  Status of Session Manager Contention Management
Packit b099d7
 */
Packit b099d7
#define  SM_UNITIALIZED			 0
Packit b099d7
#define  SM_START_ACK			 1
Packit b099d7
#define  SM_STOP_ACK                	 2
Packit b099d7
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Menu specification data structures ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  These data structures are used in creating window manager menus that
Packit b099d7
 *  are specified using resource files.  A list of menu specifications
Packit b099d7
 *  (MenuSpec) is made when the resource files are parsed.  The desktop
Packit b099d7
 *  menu and system menus are created as needed using the menu specification
Packit b099d7
 *  list.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
/*
Packit b099d7
 * Used to denote where the separators belong in a pair of separators
Packit b099d7
 * used to surround a client command.
Packit b099d7
 */
Packit b099d7
Packit b099d7
enum { TOP_SEPARATOR, BOTTOM_SEPARATOR };
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Used to denote what kind of change to make to a client command. 
Packit b099d7
 */
Packit b099d7
typedef enum { ENABLE, DISABLE, REMOVE, RENAME } CmdModifier;
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
typedef struct _MenuItem
Packit b099d7
{
Packit b099d7
    int		 labelType;
Packit b099d7
    String	 label;
Packit b099d7
    int          labelBitmapIndex;
Packit b099d7
    KeySym	 mnemonic;
Packit b099d7
    unsigned int accelState;
Packit b099d7
    KeyCode      accelKeyCode;
Packit b099d7
    String	 accelText;
Packit b099d7
    WmFunction	 wmFunction;
Packit b099d7
    String	 wmFuncArgs;
Packit b099d7
    Context	 greyedContext;
Packit b099d7
    long         mgtMask;
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    String       clientCommandName; /* as specified by the user in
Packit b099d7
				       his .mwmrc file. */
Packit b099d7
    CARD32	 clientCommandID;
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
    struct _MenuItem *nextMenuItem;
Packit b099d7
Packit b099d7
} MenuItem;
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * We use the top part of mgtMask for workspace function bits.
Packit b099d7
 * When OSF MWM outgrows the lower 16 bits, we'll have to
Packit b099d7
 * change how we do things.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#define MWM_MGT_MASK	0x0000FFFF
Packit b099d7
#define DTWM_MGT_MASK	0xFFFF0000
Packit b099d7
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
typedef struct _MenuButton
Packit b099d7
{
Packit b099d7
    MenuItem	*menuItem;
Packit b099d7
    Widget	buttonWidget;
Packit b099d7
    Boolean     managed;
Packit b099d7
Packit b099d7
} MenuButton;
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
typedef struct _MenuExclusion
Packit b099d7
{
Packit b099d7
  String                 command_string;
Packit b099d7
  struct _MenuExclusion *nextExclusion;
Packit b099d7
} MenuExclusion;
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
typedef struct _MenuSpec
Packit b099d7
{
Packit b099d7
    String	  name;
Packit b099d7
    Context	  currentContext;
Packit b099d7
    Widget	  menuWidget;      /* RowColumn widget */
Packit b099d7
    unsigned int  whichButton;    /* tracks whichButton resource for top menu */
Packit b099d7
    unsigned int  height;          /* height of top menu */
Packit b099d7
    MenuItem	 *menuItems;       /* linked list of MenuItem structures */
Packit b099d7
    MenuButton   *menuButtons;     /* array of MenuButton structures */
Packit b099d7
    unsigned int  menuButtonSize;  /* size of menuButtons array */
Packit b099d7
    unsigned int  menuButtonCount; /* number of menuButtons elements in use */
Packit b099d7
    Context	  accelContext;    /* accelerator context */
Packit b099d7
    KeySpec	 *accelKeySpecs;   /* list of accelerator KeySpecs */
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    MenuExclusion *exclusions;      /* list of client commands to be
Packit b099d7
				       excluded from this menu. */
Packit b099d7
    Boolean        clientLocal;     /* this menu is owned by a client and not 
Packit b099d7
				       shared with any other clients */
Packit b099d7
    CARD32         commandID;       /* if this is a client command, then this
Packit b099d7
				       its id value - globally unique. */
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
    struct _MenuSpec *nextMenuSpec;
Packit b099d7
Packit b099d7
} MenuSpec;
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
/* The range to which a client command operation should apply. */
Packit b099d7
typedef enum { SINGLE, ROOT, ALL } OpRange;
Packit b099d7
Packit b099d7
typedef struct _CmdTree {
Packit b099d7
  CARD32           commandID;   /* unique identifier for this command. */
Packit b099d7
  CARD32           notifyWindow;/* window to receive InvokeCommand request. */
Packit b099d7
  char            *name;        /* name of command refered to in .mwmrc. */
Packit b099d7
  char            *defaultName; /* default label of menu. */
Packit b099d7
  struct _CmdTree *subTrees;    /* list of child commands or command sets. */
Packit b099d7
  struct _CmdTree *next;
Packit b099d7
Packit b099d7
} CmdTree;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _matchlist {
Packit b099d7
    MenuSpec          *menuspec;
Packit b099d7
    MenuItem          *menuitem;
Packit b099d7
    String             command_string;
Packit b099d7
    CmdTree           *treenode;
Packit b099d7
    WmFunction         function;
Packit b099d7
    String             funcargs;
Packit b099d7
    Context            greyed_context;
Packit b099d7
    struct _matchlist *next;
Packit b099d7
Packit b099d7
} MatchList;
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Window and function specification data structures ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WindowItem
Packit b099d7
{
Packit b099d7
    String              window;
Packit b099d7
    struct _WindowItem *nextWindowItem;
Packit b099d7
Packit b099d7
} WindowItem;
Packit b099d7
Packit b099d7
typedef struct _WindowSet
Packit b099d7
{
Packit b099d7
    String             name;
Packit b099d7
    WindowItem        *windowItems;
Packit b099d7
    struct _WindowSet *nextWindowSet;
Packit b099d7
Packit b099d7
} WindowSet;
Packit b099d7
Packit b099d7
typedef struct _FunctionItem
Packit b099d7
{
Packit b099d7
    WmFunction		  wmFunction;
Packit b099d7
    String                wmFuncArgs;
Packit b099d7
    struct _FunctionItem *nextFunctionItem;
Packit b099d7
Packit b099d7
} FunctionItem;
Packit b099d7
Packit b099d7
typedef struct _FunctionSet
Packit b099d7
{
Packit b099d7
    String               name;
Packit b099d7
    FunctionItem        *functionItems;
Packit b099d7
    struct _FunctionSet *nextFunctionSet;
Packit b099d7
Packit b099d7
} FunctionSet;
Packit b099d7
Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Window manager timer data structure ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This data stucture is used to keep track of window manager timers.  Each
Packit b099d7
 *  active timer has an instance of the data structure.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WmTimer
Packit b099d7
{
Packit b099d7
    XtIntervalId	timerId;
Packit b099d7
    struct _ClientData	*timerCD;
Packit b099d7
    unsigned int	timerType;
Packit b099d7
    struct _WmTimer	*nextWmTimer;
Packit b099d7
Packit b099d7
} WmTimer;
Packit b099d7
Packit b099d7
/* Timer types: */
Packit b099d7
#define TIMER_NONE		0
Packit b099d7
#define TIMER_QUIT		1
Packit b099d7
#define TIMER_RAISE		2
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Window manager frame component data structures
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This data stucture is used for drawing frame component graphics.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _RList
Packit b099d7
{
Packit b099d7
    int		allocated;		/* number of allocated XRectangles */
Packit b099d7
    int		used;			/* number currently in use */
Packit b099d7
    XRectangle	*prect;			/* array of XRectangles */
Packit b099d7
} RList;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Window manager component appearance data structure ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure is used to hold component appearance data for client,
Packit b099d7
 *  icon, and feedback subparts. 
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _AppearanceData
Packit b099d7
{
Packit b099d7
    XmFontList	fontList;			/* resource */
Packit b099d7
    XFontStruct	*font;
Packit b099d7
#ifndef NO_MULTIBYTE
Packit b099d7
    unsigned int	titleHeight;		/* title bar's height */
Packit b099d7
#endif
Packit b099d7
    Boolean	saveUnder;			/* resource */
Packit b099d7
    Pixel	background;			/* resource */
Packit b099d7
    Pixel	foreground;			/* resource */
Packit b099d7
    String	backgroundPStr;			/* resource */
Packit b099d7
    Pixmap	backgroundPixmap;
Packit b099d7
    Pixel	bottomShadowColor;		/* resource */
Packit b099d7
    String	bottomShadowPStr;		/* resource */
Packit b099d7
    Pixmap	bottomShadowPixmap;
Packit b099d7
    Pixel	topShadowColor;			/* resource */
Packit b099d7
    String	topShadowPStr;			/* resource */
Packit b099d7
    Pixmap	topShadowPixmap;
Packit b099d7
    Pixel	activeBackground;		/* resource */
Packit b099d7
    String	activeBackgroundPStr;		/* resource */
Packit b099d7
    Pixmap	activeBackgroundPixmap;
Packit b099d7
    Pixel	activeBottomShadowColor;	/* resource */
Packit b099d7
    String	activeBottomShadowPStr;		/* resource */
Packit b099d7
    Pixmap	activeBottomShadowPixmap;
Packit b099d7
    Pixel	activeForeground;		/* resource */
Packit b099d7
    Pixel	activeTopShadowColor;		/* resource */
Packit b099d7
    String	activeTopShadowPStr;		/* resource */
Packit b099d7
    Pixmap	activeTopShadowPixmap;
Packit b099d7
Packit b099d7
    GC		inactiveGC;
Packit b099d7
    GC		inactiveTopShadowGC;
Packit b099d7
    GC		inactiveBottomShadowGC;
Packit b099d7
    GC		activeGC;
Packit b099d7
    GC		activeTopShadowGC;
Packit b099d7
    GC		activeBottomShadowGC;
Packit b099d7
Packit b099d7
} AppearanceData;
Packit b099d7
Packit b099d7
Packit b099d7
typedef struct _AppearanceData *PtrAppearanceData;
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  IconInfo
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _IconInfo
Packit b099d7
{
Packit b099d7
        Widget theWidget;
Packit b099d7
        struct _ClientData *pCD;
Packit b099d7
} IconInfo;
Packit b099d7
Packit b099d7
typedef struct _IconInfo *PtrIconInfo;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  IconPlacement
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _IconPlacementData
Packit b099d7
{
Packit b099d7
    Boolean	onRootWindow;		/* true if icons on root window */
Packit b099d7
    unsigned 	iconPlacement;		/* style of placement */
Packit b099d7
    int		placementRows;		/* number of rows in placement space */
Packit b099d7
    int		placementCols;		/* number of cols in placement space */
Packit b099d7
    int		totalPlaces;		/* total number of placment slots */
Packit b099d7
    int		iPlaceW;		/* width increment (to next place) */
Packit b099d7
    int		iPlaceH;		/* height increment (to next place) */
Packit b099d7
    IconInfo	*placeList;		/* list of icon info */
Packit b099d7
    int		placeIconX;
Packit b099d7
    int		placeIconY;
Packit b099d7
    int		*placementRowY;
Packit b099d7
    int		*placementColX;
Packit b099d7
} IconPlacementData;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  IconBoxData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure is used to hold window and widget information for
Packit b099d7
 *  each icon box.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _IconBoxData
Packit b099d7
{
Packit b099d7
    Widget	shellWidget;
Packit b099d7
    Widget	frameWidget;
Packit b099d7
    Widget      scrolledWidget;
Packit b099d7
    Widget	vScrollBar;
Packit b099d7
    Widget	hScrollBar;
Packit b099d7
    Widget      bBoardWidget;
Packit b099d7
    Widget	clipWidget; 
Packit b099d7
    int		numberOfIcons;
Packit b099d7
    int		currentRow;
Packit b099d7
    int		currentCol;
Packit b099d7
    int		lastRow;
Packit b099d7
    int		lastCol;
Packit b099d7
#ifdef WSM
Packit b099d7
    WorkspaceID		wsID;		/* workspace identifier */
Packit b099d7
#endif /* WSM */
Packit b099d7
    struct _ClientData	*pCD_iconBox;	/* ptr to its own clientdata */
Packit b099d7
    struct _IconBoxData *pNextIconBox;	/* ptr to next icon box */
Packit b099d7
    struct _IconPlacementData IPD;	/* icon placement data */
Packit b099d7
} IconBoxData;
Packit b099d7
Packit b099d7
typedef struct _IconBoxData *PtrIconBoxData;
Packit b099d7
Packit b099d7
#define IB_SPACING		0
Packit b099d7
#define IB_MARGIN_HEIGHT	3 
Packit b099d7
#define IB_MARGIN_WIDTH		3 
Packit b099d7
#define IB_HIGHLIGHT_BORDER	3
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Bitmap/Pixmap cache data
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  These structures are used for the bitmap and pixmap caches held
Packit b099d7
 *  on a per-screen basis. (This is per-screen because you can't do
Packit b099d7
 *  XCopyPlane from one pixmap to another when they have different
Packit b099d7
 *  roots.)
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
#define NO_PIXMAP    0
Packit b099d7
#define LABEL_PIXMAP 1
Packit b099d7
#define ICON_PIXMAP  2
Packit b099d7
Packit b099d7
typedef struct _PixmapCache
Packit b099d7
{
Packit b099d7
   unsigned int  pixmapType;   /* icon or label? */
Packit b099d7
   Pixel         foreground;
Packit b099d7
   Pixel         background;
Packit b099d7
   Pixmap        pixmap;
Packit b099d7
   struct _PixmapCache *next;
Packit b099d7
Packit b099d7
} PixmapCache;
Packit b099d7
Packit b099d7
typedef struct _BitmapCache
Packit b099d7
{
Packit b099d7
   char         *path;
Packit b099d7
   Pixmap        bitmap;
Packit b099d7
   unsigned int  width;
Packit b099d7
   unsigned int  height;
Packit b099d7
   PixmapCache  *pixmapCache;
Packit b099d7
Packit b099d7
} BitmapCache;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/******************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Client window list entry data structure ...
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure provides the data for an entry in the client window list.
Packit b099d7
 *  The client window list has an entry for each non-transient client
Packit b099d7
 *  window and each non-iconbox icon.
Packit b099d7
 * 
Packit b099d7
 ******************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _ClientListEntry
Packit b099d7
{
Packit b099d7
    struct _ClientListEntry *nextSibling;
Packit b099d7
    struct _ClientListEntry *prevSibling;
Packit b099d7
    int		type;
Packit b099d7
    struct _ClientData *pCD;
Packit b099d7
Packit b099d7
} ClientListEntry;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  Frame information
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure contains geometry information for the window manager 
Packit b099d7
 *  frame.
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _FrameInfo
Packit b099d7
{
Packit b099d7
    int			x;
Packit b099d7
    int			y;
Packit b099d7
    unsigned int	width;
Packit b099d7
    unsigned int	height;
Packit b099d7
    unsigned int	upperBorderWidth;
Packit b099d7
    unsigned int	lowerBorderWidth;
Packit b099d7
    unsigned int	cornerWidth;
Packit b099d7
    unsigned int	cornerHeight;
Packit b099d7
    unsigned int	titleBarHeight;
Packit b099d7
Packit b099d7
} FrameInfo;
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  WmScreenData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This is the data structure for holding the window manager's
Packit b099d7
 *  screen data. There is one instantiation of the structure for
Packit b099d7
 *  each screen.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WmScreenData
Packit b099d7
{
Packit b099d7
    int		dataType;
Packit b099d7
    int		screen;			/* number for this screen */
Packit b099d7
    Boolean	managed;
Packit b099d7
    Window	rootWindow;
Packit b099d7
    Widget	screenTopLevelW;
Packit b099d7
    Widget	screenTopLevelW1;       /* for internal WM components */
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    Widget	utmShell;		/* DrawingArea used for UTM */
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
    Widget      confirmboxW[4];
Packit b099d7
#ifdef PANELIST
Packit b099d7
    Widget	wPanelist;		/* panel object */
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#ifdef WSM
Packit b099d7
    WsPresenceData	presence;	/* workspace presence dialog*/
Packit b099d7
    Widget	switcherW;		/* workspace switcher */
Packit b099d7
    Widget	switcherShellW;		/* shell for ws switcher */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Window	wmWorkspaceWin;		/* holds wm properties */
Packit b099d7
    Window	feedbackWin;
Packit b099d7
    Window	activeIconTextWin;
Packit b099d7
    Window	activeLabelParent;
Packit b099d7
    String	displayString;		/* used for putenv in F_Exec */
Packit b099d7
#ifdef WSM
Packit b099d7
    int displayResolutionType;
Packit b099d7
#endif /* WSM */
Packit b099d7
#ifdef PANELIST
Packit b099d7
    struct _WmFpEmbeddedClientData  *pECD; /* clients living in front panel */
Packit b099d7
    int		numEmbeddedClients;
Packit b099d7
    struct _WmFpPushRecallClientData  *pPRCD; /* push_recall clients */
Packit b099d7
    int		numPushRecallClients;
Packit b099d7
#endif /* PANELIST */
Packit b099d7
Packit b099d7
    /* wm state info: */
Packit b099d7
Packit b099d7
    unsigned long clientCounter;
Packit b099d7
    long	focusPriority;
Packit b099d7
    Window	inputScreenWindow;
Packit b099d7
    struct _ClientData	*colormapFocus;
Packit b099d7
    Colormap	workspaceColormap;
Packit b099d7
    Colormap	lastInstalledColormap;
Packit b099d7
    struct _WmWorkspaceData	*pActiveWS;	/* for this screen */
Packit b099d7
#ifdef WSM
Packit b099d7
    struct _WmWorkspaceData	*pLastWS;	/* previously active WS */
Packit b099d7
#endif /* WSM */
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    CmdTree     *cciTree;               /* pointer to cci definitions */
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
    /* per screen caches */
Packit b099d7
    BitmapCache *bitmapCache;
Packit b099d7
    unsigned int bitmapCacheSize;
Packit b099d7
    unsigned int bitmapCacheCount;
Packit b099d7
Packit b099d7
    /* per screen icon info */
Packit b099d7
    Boolean	fadeNormalIcon;			/* resource */
Packit b099d7
    int		iconPlacement;			/* resource */
Packit b099d7
    int		iconPlacementMargin;		/* resource */
Packit b099d7
    int		iconDecoration;			/* resource */
Packit b099d7
    WHSize	iconImageMaximum;		/* resource */
Packit b099d7
    WHSize	iconImageMinimum;		/* resource */
Packit b099d7
    Pixmap	builtinIconPixmap;
Packit b099d7
    int		iconWidth;
Packit b099d7
    int		iconHeight;
Packit b099d7
    int		iconImageHeight;
Packit b099d7
    int		iconLabelHeight;
Packit b099d7
    GC		shrinkWrapGC;
Packit b099d7
    GC		fadeIconGC;
Packit b099d7
    GC		fadeIconTextGC;
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
    
Packit b099d7
    /* per screen configuration outline windows */
Packit b099d7
    Window	woN;		/* North outline window */
Packit b099d7
    Window	woS;		/* South outline window */
Packit b099d7
    Window	woE;		/* East outline window */
Packit b099d7
    Window	woW;		/* West outline window */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
    /* per screen feedback data */
Packit b099d7
    unsigned long fbStyle;
Packit b099d7
    unsigned int fbWinWidth;
Packit b099d7
    unsigned int fbWinHeight;
Packit b099d7
    char fbLocation[20];
Packit b099d7
    char fbSize[20];
Packit b099d7
    int fbLocX;
Packit b099d7
    int fbLocY;
Packit b099d7
    int fbSizeX;
Packit b099d7
    int fbSizeY;
Packit b099d7
    int fbLastX;
Packit b099d7
    int fbLastY;
Packit b099d7
    unsigned int fbLastWidth;
Packit b099d7
    unsigned int fbLastHeight;
Packit b099d7
    RList *fbTop;
Packit b099d7
    RList *fbBottom;
Packit b099d7
    int     actionNbr;
Packit b099d7
Packit b099d7
    /* resource description file data: */
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    String	rootMenu;			/* resource */
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
    String	buttonBindings;			/* resource */
Packit b099d7
    ButtonSpec	*buttonSpecs;
Packit b099d7
    String	keyBindings;			/* resource */
Packit b099d7
    KeySpec	*keySpecs;
Packit b099d7
    MenuSpec   **acceleratorMenuSpecs;
Packit b099d7
    unsigned int acceleratorMenuCount;
Packit b099d7
    MenuSpec	*menuSpecs;
Packit b099d7
Packit b099d7
    Boolean	defaultSystemMenuUseBuiltin;
Packit b099d7
Packit b099d7
    Pixmap	defaultPixmap;
Packit b099d7
    GC		xorGC;
Packit b099d7
Packit b099d7
    /* per screen appearance resources */
Packit b099d7
Packit b099d7
    Boolean	cleanText;			/* resource */
Packit b099d7
    Boolean	decoupleTitleAppearance;	/* see clientTitleAppearance */
Packit b099d7
    int		frameBorderWidth;		/* resource */
Packit b099d7
    String	feedbackGeometry;		/* resource */
Packit b099d7
#ifndef WSM
Packit b099d7
    String	iconBoxGeometry;		/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    String	iconBoxName;			/* resource */
Packit b099d7
    String      iconBoxSBDisplayPolicy;         /* resource */
Packit b099d7
    int		iconBoxScheme;			/* resource - testing */
Packit b099d7
    XmString    iconBoxTitle;			/* resource */
Packit b099d7
    int		externalBevel;
Packit b099d7
    int		joinBevel;
Packit b099d7
    Boolean	limitResize;			/* resource */
Packit b099d7
    WHSize	maximumMaximumSize;		/* resource */
Packit b099d7
    int		resizeBorderWidth;		/* resource */
Packit b099d7
    Boolean	resizeCursors;			/* resource */
Packit b099d7
    int		transientDecoration;		/* resource */
Packit b099d7
    int		transientFunctions;		/* resource */
Packit b099d7
    Boolean	useIconBox;			/* resource */
Packit b099d7
#ifdef PANELIST
Packit b099d7
    int		subpanelDecoration;		/* resource */
Packit b099d7
    String      subpanelResources;              /*to restore subpanels */
Packit b099d7
    Boolean	iconBoxControl;			/* FP control for icon box */
Packit b099d7
#endif /* PANELIST */
Packit b099d7
    Boolean     moveOpaque;                     /* move window not outlines */
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
Packit b099d7
    /* pixel set info (from color object) */
Packit b099d7
    XmPixelSet	*pPixelData;		/* all pixel data */
Packit b099d7
    XmPixelSet	*pActivePixelSet;	/* ptr into pPixelData */
Packit b099d7
    XmPixelSet	*pInactivePixelSet;	/* ptr into pPixelData */
Packit b099d7
    XmPixelSet	*pPrimaryPixelSet;	/* ptr into pPixelData */
Packit b099d7
    XmPixelSet	*pSecondaryPixelSet;	/* ptr into pPixelData */
Packit b099d7
    XmPixelSet	*pTextPixelSet;		/* ptr into pPixelData */
Packit b099d7
    int		colorUse;		/* indication from color obj */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
    /* client frame component appearance resources and data: */
Packit b099d7
Packit b099d7
    AppearanceData clientAppearance;		/* resources ... */
Packit b099d7
    AppearanceData clientTitleAppearance;	/* resources ... */
Packit b099d7
    XPoint	transientOffset;
Packit b099d7
    int		Num_Resize_Ts_Elements;
Packit b099d7
    int		Num_Resize_Bs_Elements;
Packit b099d7
    int		Num_Title_Ts_Elements;
Packit b099d7
    int		Num_Title_Bs_Elements;
Packit b099d7
Packit b099d7
    /* icon component appearance resources and data: */
Packit b099d7
Packit b099d7
    AppearanceData iconAppearance;		/* resources ... */
Packit b099d7
Packit b099d7
    /* feedback component appearance resources and data: */
Packit b099d7
Packit b099d7
    AppearanceData feedbackAppearance;		/* resources ... */
Packit b099d7
Packit b099d7
    /* client list pointers: */
Packit b099d7
Packit b099d7
    ClientListEntry 	*clientList;
Packit b099d7
    ClientListEntry 	*lastClient;
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
    /* DtSessionHints for clients */
Packit b099d7
    struct _DtSessionItem     *pDtSessionItems;
Packit b099d7
    int                        totalSessionItems;
Packit b099d7
    int                        remainingSessionItems;
Packit b099d7
Packit b099d7
Packit b099d7
    /* workspace list for this screen */
Packit b099d7
    String                      initialWorkspace; /* private resource */
Packit b099d7
    String			workspaceList;    /* resource */
Packit b099d7
    int				numWorkspaces;
Packit b099d7
    int				numWsDataAllocated;
Packit b099d7
    struct _WmWorkspaceData	*pWS;
Packit b099d7
    Window			lastBackdropWin;
Packit b099d7
    struct _WsDtHelpData        dtHelp;
Packit b099d7
    struct _CacheListStruct     *cachedHelp;
Packit b099d7
    String                      helpResources;  /* to restore help */
Packit b099d7
    DtSvcHandle	hWsm;		/* WORKSPACEMGR message handle */
Packit b099d7
    Boolean	bMarqueeSelectionInitialized;
Packit b099d7
Packit b099d7
#else /* WSM */
Packit b099d7
    /* workspace for this screen */
Packit b099d7
Packit b099d7
    struct _WmWorkspaceData	*pWS;
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
} WmScreenData;
Packit b099d7
Packit b099d7
typedef struct _WmScreenData *PtrScreenData;
Packit b099d7
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 * Convenience macros for data access
Packit b099d7
 */
Packit b099d7
#define ROOT_FOR_CLIENT(pcd) ((pcd)->pSD->rootWindow)
Packit b099d7
#define SCREEN_FOR_CLIENT(pcd) ((pcd)->pSD->screen)
Packit b099d7
#define PSD_FOR_CLIENT(pcd) ((pcd)->pSD)
Packit b099d7
#define BUTTON_SPECS(pcd) ((pcd)->pSD->buttonSpecs)
Packit b099d7
#define KEY_SPECS(pcd) ((pcd)->pSD->keySpecs)
Packit b099d7
#define ACCELERATOR_MENU_COUNT(pcd) ((pcd)->pSD->acceleratorMenuCount)
Packit b099d7
#define ACCELERATOR_MENU_SPECS(pcd) ((pcd)->pSD->acceleratorMenuSpecs)
Packit b099d7
#define WORKSPACE_COLORMAP(pcd) ((pcd)->pSD->workspaceColormap)
Packit b099d7
#define FADE_NORMAL_ICON(pcd) ((pcd)->pSD->fadeNormalIcon)
Packit b099d7
/*
Packit b099d7
#define ICON_DEFAULT_TITLE(pcd) ((pcd)->iconDefaultTitle)
Packit b099d7
*/
Packit b099d7
#define ICON_DECORATION(pcd) ((pcd)->pSD->iconDecoration)
Packit b099d7
#define ICON_HEIGHT(pcd) ((pcd)->pSD->iconHeight)
Packit b099d7
#define ICON_WIDTH(pcd) ((pcd)->pSD->iconWidth)
Packit b099d7
#define ICON_IMAGE_HEIGHT(pcd) ((pcd)->pSD->iconImageHeight)
Packit b099d7
#define ICON_LABEL_HEIGHT(pcd) ((pcd)->pSD->iconLabelHeight)
Packit b099d7
#define ICON_IMAGE_MAXIMUM(pcd) ((pcd)->pSD->iconImageMaximum)
Packit b099d7
#define ICON_IMAGE_MINIMUM(pcd) ((pcd)->pSD->iconImageMinimum)
Packit b099d7
#define SHRINK_WRAP_GC(pcd) ((pcd)->pSD->shrinkWrapGC)
Packit b099d7
#define FADE_ICON_GC(pcd) ((pcd)->pSD->fadeIconGC)
Packit b099d7
#define FADE_ICON_TEXT_GC(pcd) ((pcd)->pSD->fadeIconTextGC)
Packit b099d7
#define DEFAULT_PIXMAP(pcd) ((pcd)->pSD->defaultPixmap)
Packit b099d7
#ifdef WSM
Packit b099d7
#define ICON_PLACE(pcd) ((pcd)->pWsList[(pcd)->currentWsc].iconPlace)
Packit b099d7
#define ICON_X(pcd) ((pcd)->pWsList[(pcd)->currentWsc].iconX)
Packit b099d7
#define ICON_Y(pcd) ((pcd)->pWsList[(pcd)->currentWsc].iconY)
Packit b099d7
#define P_ICON_BOX(pcd) ((pcd)->pWsList[(pcd)->currentWsc].pIconBox)
Packit b099d7
#define ICON_FRAME_WIN(pcd) ((pcd)->pWsList[(pcd)->currentWsc].iconFrameWin)
Packit b099d7
#else /* WSM */
Packit b099d7
#define ICON_PLACE(pcd) ((pcd)->iconPlace)
Packit b099d7
#define ICON_X(pcd) ((pcd)->iconX)
Packit b099d7
#define ICON_Y(pcd) ((pcd)->iconY)
Packit b099d7
#define P_ICON_BOX(pcd) ((pcd)->pIconBox)
Packit b099d7
#define ICON_FRAME_WIN(pcd) ((pcd)->iconFrameWin)
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
/*
Packit b099d7
 * Definitions for Screen data
Packit b099d7
 */
Packit b099d7
#define MAX_WORKSPACE_COUNT	64
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  BackdropData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure hold information for the workspace background
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WmBackdropData
Packit b099d7
{
Packit b099d7
    String		image;			/* resource */
Packit b099d7
    Atom		nameAtom;
Packit b099d7
    Pixmap		imagePixmap;
Packit b099d7
    int			colorSet;		/* resource */
Packit b099d7
    Pixel 		background;		/* resource */
Packit b099d7
    Pixel 		foreground;		/* resource */
Packit b099d7
    unsigned int	flags;
Packit b099d7
    Window		window;
Packit b099d7
} BackdropData;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * bit definiton for "flags" member of BackdropData
Packit b099d7
 */
Packit b099d7
#define BACKDROP_NONE		0
Packit b099d7
#define BACKDROP_CLIENT		(1L<<1)
Packit b099d7
#define BACKDROP_BITMAP		(1L<<2)
Packit b099d7
#define BACKDROP_IMAGE_ALLOCED	(1L<<3)	 /* image string can be freed */
Packit b099d7
Packit b099d7
typedef struct _WmBackdropData *PtrBackdropData;
Packit b099d7
Packit b099d7
#define DEFAULT_BACKDROP_DIR CDE_INSTALLATION_TOP "/backdrops"
Packit b099d7
Packit b099d7
#ifdef PANELIST
Packit b099d7
/*
Packit b099d7
 * direction for slide-out panels
Packit b099d7
 */
Packit b099d7
typedef enum _SlideDirection
Packit b099d7
{
Packit b099d7
    SLIDE_NOT, SLIDE_NORTH, SLIDE_EAST, SLIDE_SOUTH, SLIDE_WEST
Packit b099d7
} SlideDirection;
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 * Slide out record for subpanels
Packit b099d7
 */
Packit b099d7
typedef struct _SlideOutRec 
Packit b099d7
{
Packit b099d7
    struct _ClientData	*pCD;
Packit b099d7
    Window		coverWin;
Packit b099d7
    Dimension		incWidth;
Packit b099d7
    Dimension		incHeight;
Packit b099d7
    Dimension		currWidth;
Packit b099d7
    Dimension		currHeight;
Packit b099d7
    Position		currX;
Packit b099d7
    Position		currY;
Packit b099d7
    unsigned int	interval;
Packit b099d7
    SlideDirection	direction;
Packit b099d7
    Boolean		mapping;
Packit b099d7
    Widget		wSubpanel;
Packit b099d7
} SlideOutRec;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Data structure for arguments to f.action
Packit b099d7
 */
Packit b099d7
typedef struct _WmActionArg {
Packit b099d7
    String	  actionName;
Packit b099d7
    int		  numArgs;
Packit b099d7
    DtActionArg * aap;
Packit b099d7
    String	  szExecParms;
Packit b099d7
} WmActionArg;
Packit b099d7
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#endif /* WSM */
Packit b099d7
 
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  WmWorkspaceData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This is the structure for holding the workspace specific data. 
Packit b099d7
 *  (This has been broken out in anticipation of possible future 
Packit b099d7
 *  enhancements.)
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WmWorkspaceData
Packit b099d7
{
Packit b099d7
    int			dataType;
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
    WorkspaceID		id;
Packit b099d7
    int         	map_state;
Packit b099d7
    BackdropData	backdrop;
Packit b099d7
    Widget		buttonW;
Packit b099d7
    XmString		title;		/* resource (visible name) */
Packit b099d7
    String	        iconBoxGeometry;/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    String		name;		/* workspace name */
Packit b099d7
					/* (used for resource fetching) */
Packit b099d7
Packit b099d7
    WmScreenData	*pSD;		/* screen data for this workspace */
Packit b099d7
    IconBoxData 	*pIconBox;	/* icon box data for this workspace */
Packit b099d7
    IconPlacementData 	IPData;
Packit b099d7
Packit b099d7
    Widget		workspaceTopLevelW;
Packit b099d7
Packit b099d7
    /* workspace state information */
Packit b099d7
Packit b099d7
    struct _ClientData	*keyboardFocus;	/* ptr to client with the key focus */
Packit b099d7
    struct _ClientData	*nextKeyboardFocus; /* next client to get focus */
Packit b099d7
#ifdef WSM
Packit b099d7
    struct _ClientData **ppClients;	/* list of client data ptrs */
Packit b099d7
    unsigned int	numClients; 	/* number of client in list */
Packit b099d7
    unsigned int	sizeClientList;	/* size of client list */
Packit b099d7
#endif  /* WSM */
Packit b099d7
Packit b099d7
} WmWorkspaceData;
Packit b099d7
Packit b099d7
typedef struct _WmWorkspaceData *PtrWorkspaceData;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Convenience macros for data access
Packit b099d7
 */
Packit b099d7
#define CLIENT_APPEARANCE(pcd) ((pcd)->pSD->clientAppearance)
Packit b099d7
#define CLIENT_TITLE_APPEARANCE(pcd) ((pcd)->pSD->clientTitleAppearance)
Packit b099d7
#define DECOUPLE_TITLE_APPEARANCE(pcd) ((pcd)->pSD->decoupleTitleAppearance)
Packit b099d7
/*
Packit b099d7
#define CLIENT_DEFAULT_TITLE(pcd) ((pcd)->pSD->clientDefaultTitle)
Packit b099d7
*/
Packit b099d7
#define MAX_MAX_SIZE(pcd) ((pcd)->pSD->maximumMaximumSize)
Packit b099d7
#define SHOW_RESIZE_CURSORS(pcd) ((pcd)->pSD->resizeCursors)
Packit b099d7
#define JOIN_BEVEL(pcd) ((pcd)->pSD->joinBevel)
Packit b099d7
#define EXTERNAL_BEVEL(pcd) ((pcd)->pSD->externalBevel)
Packit b099d7
#define FRAME_BORDER_WIDTH(pcd) ((pcd)->pSD->frameBorderWidth)
Packit b099d7
#define RESIZE_BORDER_WIDTH(pcd) ((pcd)->pSD->resizeBorderWidth)
Packit b099d7
#define NUM_TITLE_TS_ELEMENTS(pcd) ((pcd)->pSD->Num_Title_Ts_Elements)
Packit b099d7
#define NUM_TITLE_BS_ELEMENTS(pcd) ((pcd)->pSD->Num_Title_Bs_Elements)
Packit b099d7
#define NUM_RESIZE_TS_ELEMENTS(pcd) ((pcd)->pSD->Num_Resize_Ts_Elements)
Packit b099d7
#define NUM_RESIZE_BS_ELEMENTS(pcd) ((pcd)->pSD->Num_Resize_Bs_Elements)
Packit b099d7
#define ICON_APPEARANCE(pcd) ((pcd)->pSD->iconAppearance)
Packit b099d7
Packit b099d7
#define ACTIVE_LABEL_PARENT(pcd) ((pcd)->pSD->activeLabelParent)
Packit b099d7
Packit b099d7
#ifndef WSM
Packit b099d7
#define ICON_BOX_GEOMETRY(pcd) ((pcd)->pSD->iconBoxGeometry)
Packit b099d7
#endif /* WSM */
Packit b099d7
#define ICON_BOX_TITLE(pcd) ((pcd)->pSD->iconBoxTitle)
Packit b099d7
Packit b099d7
#define TRANSIENT_DECORATION(pcd) ((pcd)->pSD->transientDecoration)
Packit b099d7
#define TRANSIENT_FUNCTIONS(pcd) ((pcd)->pSD->transientFunctions)
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  ClientData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This data structure is instantiated for every client window that is
Packit b099d7
 *  managed by the window manager.  The information that is saved in the
Packit b099d7
 *  data structure is specific to the associated client window.
Packit b099d7
 *
Packit b099d7
 *  ClientData is instantiated at the time a client window is intially
Packit b099d7
 *  managed and is destroyed when the client window is withdrawn from
Packit b099d7
 *  window management (the ClientData may not be destroyed when a 
Packit b099d7
 *  client window is withdrawn if frame/icons are cached).
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _ClientData
Packit b099d7
{
Packit b099d7
    int		dataType;			/* client data type */
Packit b099d7
Packit b099d7
    Window	client;
Packit b099d7
    long	clientFlags;
Packit b099d7
    int		icccVersion;
Packit b099d7
    int		clientState;			/* WM_HINTS field */
Packit b099d7
    int		inputFocusModel;		/* WM_HINTS field */
Packit b099d7
    int		inputMode;
Packit b099d7
    long	focusPriority;
Packit b099d7
    unsigned long clientID;
Packit b099d7
    int		wmUnmapCount;
Packit b099d7
#ifdef PANELIST
Packit b099d7
    struct _WmFpEmbeddedClientData  *pECD; /* embedded client data */
Packit b099d7
    struct _WmFpPushRecallClientData  *pPRCD; /* embedded client data */
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#ifdef WSM
Packit b099d7
    Atom *	paInitialProperties;	/* initial window properties */
Packit b099d7
    int		numInitialProperties;	/* number of initial properties */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
    /* client supported protocols: */
Packit b099d7
Packit b099d7
    Atom	*clientProtocols;		/* WM_PROTOCOLS */
Packit b099d7
    int		clientProtocolCount;
Packit b099d7
    long	protocolFlags;
Packit b099d7
    long	*mwmMessages;			/* _MWM_MESSAGES */
Packit b099d7
    int		mwmMessagesCount;
Packit b099d7
Packit b099d7
    /* client colormap data: */
Packit b099d7
Packit b099d7
    Colormap	clientColormap;			/* selected client colormap */
Packit b099d7
    Window	*cmapWindows;			/* from WM_COLORMAP_WINDOWS */
Packit b099d7
    Colormap	*clientCmapList;
Packit b099d7
    int		clientCmapCount;		/* len of clientCmapList */
Packit b099d7
    int		clientCmapIndex;		/* current cmap in list */
Packit b099d7
#ifndef OLD_COLORMAP /* colormap */
Packit b099d7
    int		*clientCmapFlags;		/* installed, uninstalled */
Packit b099d7
    Bool	clientCmapFlagsInitialized;	/* Are clientCmapFlags valid? */
Packit b099d7
#endif
Packit b099d7
Packit b099d7
    /* associated window data: */
Packit b099d7
Packit b099d7
    ClientListEntry clientEntry;
Packit b099d7
    ClientListEntry iconEntry;
Packit b099d7
    XID		windowGroup;			/* WM_HINTS field */
Packit b099d7
#ifndef NO_OL_COMPAT
Packit b099d7
    Boolean	bPseudoTransient;		/* transientFor window group */
Packit b099d7
#endif /* NO_OL_COMPAT */
Packit b099d7
#ifndef WSM
Packit b099d7
    IconBoxData *pIconBox;			/* icon box for this win */
Packit b099d7
#endif /* WSM */
Packit b099d7
    IconBoxData *thisIconBox;			/* icon box data for self */
Packit b099d7
    						/*   if this is an icon box */
Packit b099d7
    Context    grabContext;                     /* used to support icon box */
Packit b099d7
                                                /* icon key, button, menus */
Packit b099d7
    Window	transientFor;			/* transient for another win */
Packit b099d7
    struct _ClientData *transientLeader;	/* trans leader of this win */
Packit b099d7
    struct _ClientData *transientChildren;	/* transients of this win */
Packit b099d7
    struct _ClientData *transientSiblings;	/* related transient win's */
Packit b099d7
#ifdef WSM
Packit b099d7
    int		primaryStackPosition;		/* stack pos'n of primary */
Packit b099d7
    Boolean	secondariesOnTop;		/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    int		primaryModalCount;		/* primary modal win count */
Packit b099d7
    int		fullModalCount;			/* full modal win count */
Packit b099d7
Packit b099d7
    /* client resource data */
Packit b099d7
Packit b099d7
    String	clientClass;			/* WM_CLASS field */
Packit b099d7
    String	clientName;			/* WM_CLASS field */
Packit b099d7
    int		clientDecoration;		/* resource */
Packit b099d7
    int		clientFunctions;		/* resource */
Packit b099d7
    Boolean	focusAutoRaise;			/* resource */
Packit b099d7
    Boolean	focusAutoRaiseDisabled;		/* to support f.lower */
Packit b099d7
    Boolean	focusAutoRaiseDisablePending;	/* to support f.lower */
Packit b099d7
    String	iconImage;			/* resource */
Packit b099d7
    Pixel	iconImageBackground;		/* resource */
Packit b099d7
    Pixel	iconImageBottomShadowColor;	/* resource */
Packit b099d7
    String	iconImageBottomShadowPStr;	/* resource */
Packit b099d7
    Pixmap	iconImageBottomShadowPixmap;
Packit b099d7
    Pixel	iconImageForeground;		/* resource */
Packit b099d7
    Pixel	iconImageTopShadowColor;	/* resource */
Packit b099d7
    String	iconImageTopShadowPStr;		/* resource */
Packit b099d7
    Pixmap	iconImageTopShadowPixmap;
Packit b099d7
    Boolean	ignoreWMSaveHints;		/* resource */
Packit b099d7
    int		internalBevel;			/* resource */
Packit b099d7
    Pixel	matteBackground;		/* resource */
Packit b099d7
    Pixel	matteBottomShadowColor;		/* resource */
Packit b099d7
    String	matteBottomShadowPStr;		/* resource */
Packit b099d7
    Pixmap	matteBottomShadowPixmap;
Packit b099d7
    Pixel	matteForeground;		/* resource */
Packit b099d7
    Pixel	matteTopShadowColor;		/* resource */
Packit b099d7
    String	matteTopShadowPStr;		/* resource */
Packit b099d7
    Pixmap	matteTopShadowPixmap;
Packit b099d7
    int		matteWidth;			/* resource */
Packit b099d7
    WHSize	maximumClientSize;		/* resource */
Packit b099d7
    String	smClientID;			/* SM_CLIENT_ID */
Packit b099d7
    String	systemMenu;			/* resource */
Packit b099d7
    MenuItem    *mwmMenuItems;			/* custom menu items or NULL */
Packit b099d7
    MenuSpec	*systemMenuSpec;
Packit b099d7
    Boolean	useClientIcon;			/* resource */
Packit b099d7
    int		wmSaveHintFlags;		/* WMSAVE_HINT */
Packit b099d7
Packit b099d7
    /* client frame data: */
Packit b099d7
Packit b099d7
    long	sizeFlags;			/* WM_NORMAL_HINTS field */
Packit b099d7
    long	decor;				/* client decoration*/
Packit b099d7
    long	decorFlags;			/* depressed gadgets flags */
Packit b099d7
    int		minWidth;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		minHeight;			/* WM_NORMAL_HINTS field */
Packit b099d7
    Boolean	maxConfig;			/* True => use max config */
Packit b099d7
    int		maxX;				/* maximized window X loc */
Packit b099d7
    int		maxY;				/* maximized window Y loc */
Packit b099d7
    int		maxWidthLimit;
Packit b099d7
    int		maxWidth;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		maxHeightLimit;
Packit b099d7
    int		maxHeight;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		oldMaxWidth;			/* for good HPterm behavior */
Packit b099d7
    int		oldMaxHeight;			/* for good HPterm behavior */
Packit b099d7
    int		widthInc;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		heightInc;			/* WM_NORMAL_HINTS field */
Packit b099d7
    AspectRatio	minAspect;			/* WM_NORMAL_HINTS field */
Packit b099d7
    AspectRatio	maxAspect;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		baseWidth;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		baseHeight;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		windowGravity;			/* WM_NORMAL_HINTS field */
Packit b099d7
    int		clientX;			/* normal window X loc */
Packit b099d7
    int		clientY;			/* normal window Y loc */
Packit b099d7
    int		clientWidth;			/* normal window width */
Packit b099d7
    int		clientHeight;			/* normal window height */
Packit b099d7
    XPoint	clientOffset;			/* frame to client window */
Packit b099d7
    XmString	clientTitle;			/* WM_NAME field */
Packit b099d7
    Window	clientFrameWin;			/* top-level, frame window */
Packit b099d7
    Window	clientStretchWin[STRETCH_COUNT];/* for resizing border */
Packit b099d7
    Window	clientTitleWin;			/* for title bar */
Packit b099d7
    Window	clientBaseWin;			/* for matte & reparenting */
Packit b099d7
    int		xBorderWidth;			/* original X border width */
Packit b099d7
    FrameInfo	frameInfo;			/* frame geometry data */
Packit b099d7
Packit b099d7
    /* client window frame graphic data: */
Packit b099d7
Packit b099d7
    RList	*pclientTopShadows;		/* top shadow areas */
Packit b099d7
    RList	*pclientBottomShadows;		/* bottom shadow areas */
Packit b099d7
Packit b099d7
    RList	*pclientTitleTopShadows;	/* top shadow areas */
Packit b099d7
    RList	*pclientTitleBottomShadows;	/* bottom shadow areas */
Packit b099d7
Packit b099d7
    RList	*pclientMatteTopShadows;	/* matte top shadows */
Packit b099d7
    RList	*pclientMatteBottomShadows;	/* matte bottom shadows */
Packit b099d7
Packit b099d7
    /* rectangles for client frame gadgets */
Packit b099d7
Packit b099d7
    XRectangle		titleRectangle;		/* title bar area */
Packit b099d7
    GadgetRectangle	*pTitleGadgets;		/* title bar gadgets */
Packit b099d7
    int			cTitleGadgets;		/* count of title rects */
Packit b099d7
    GadgetRectangle	*pResizeGadgets;	/* resize areas */
Packit b099d7
    XRectangle		matteRectangle;		/* matte / base window area */
Packit b099d7
Packit b099d7
    /* client appearance data: */
Packit b099d7
Packit b099d7
    GC		clientMatteTopShadowGC;
Packit b099d7
    GC		clientMatteBottomShadowGC;
Packit b099d7
    WmScreenData	*pSD;			/* where visuals come from */
Packit b099d7
Packit b099d7
    /* icon data: */
Packit b099d7
Packit b099d7
    long	iconFlags;
Packit b099d7
    XmString	iconTitle;			/* WM_ICON_NAME field */
Packit b099d7
#ifndef WSM
Packit b099d7
    int		iconX;				/* WM_HINTS field */
Packit b099d7
    int		iconY;				/* WM_HINTS field */
Packit b099d7
    int		iconPlace;
Packit b099d7
    Window	iconFrameWin;
Packit b099d7
#endif /* WSM */
Packit b099d7
    Pixmap	iconPixmap;			/* WM_HINTS field */
Packit b099d7
    Pixmap	iconMask;			/* WM_HINTS field */
Packit b099d7
    Window	iconWindow;			/* WM_HINTS field */
Packit b099d7
Packit b099d7
    RList	*piconTopShadows;		/* these change to 	*/
Packit b099d7
    						/* to reflect the 	*/
Packit b099d7
    RList	*piconBottomShadows;		/* depressed icon image */
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
    /* workspace data */
Packit b099d7
Packit b099d7
    int         absentMapBehavior;              /* resource */
Packit b099d7
    int		numInhabited;		/* number of WS's inhabited */
Packit b099d7
    int		sizeWsList;		/* size of wsc data list */
Packit b099d7
    struct _WsClientData *pWsList;	/* list of workspace-client data */
Packit b099d7
    int		currentWsc;		/* index to current wsc data */
Packit b099d7
    WorkspaceID	*pWorkspaceHints;	/* _DT_WORKSPACE_HINTS */
Packit b099d7
    int		numWorkspaceHints;	/* size of pWorkspaceHints */
Packit b099d7
    Boolean	putInAll;		/* persistent window flag */
Packit b099d7
    long	dtwmFunctions;		/* _DT_WM_HINTS */
Packit b099d7
    long	dtwmBehaviors;		/* _DT_WM_HINTS */	
Packit b099d7
    Window	attachWindow;		/* _DT_WM_HINTS */
Packit b099d7
#ifdef PANELIST
Packit b099d7
    SlideDirection	slideDirection;	/* slide-up direction */
Packit b099d7
    SlideOutRec	*pSOR;			/* slide-out record */
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#endif /* WSM */
Packit b099d7
#ifndef NO_SHAPE
Packit b099d7
    short       wShaped;                /* this window has a bounding shape */
Packit b099d7
#endif /* NO_SHAPE  */
Packit b099d7
Packit b099d7
    int		usePPosition;		/* indicate whether to use PPosition */
Packit b099d7
Packit b099d7
    long	window_status;			/* used for Tear-off Menus */
Packit b099d7
Packit b099d7
} ClientData;
Packit b099d7
Packit b099d7
typedef struct _ClientData *PtrClientData;
Packit b099d7
Packit b099d7
/* client data convenience macros */
Packit b099d7
Packit b099d7
#define IS_APP_MODALIZED(pcd) \
Packit b099d7
    (((pcd)->primaryModalCount)||((pcd)->fullModalCount))
Packit b099d7
Packit b099d7
#define IS_MAXIMIZE_VERTICAL(pcd) \
Packit b099d7
  ((pcd->maximumClientSize.height == BIGSIZE) && \
Packit b099d7
   (pcd->maximumClientSize.width == 0))
Packit b099d7
Packit b099d7
#define IS_MAXIMIZE_HORIZONTAL(pcd) \
Packit b099d7
  ((pcd->maximumClientSize.width == BIGSIZE) && \
Packit b099d7
   (pcd->maximumClientSize.height == 0))
Packit b099d7
Packit b099d7
/* window management state of client windows (clientState): */
Packit b099d7
#define WITHDRAWN_STATE		0
Packit b099d7
#define NORMAL_STATE		1
Packit b099d7
#define MINIMIZED_STATE		2
Packit b099d7
#define MAXIMIZED_STATE		3
Packit b099d7
#ifdef WSM
Packit b099d7
#define UNSEEN_STATE            8
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
# define NO_CHANGE              -1
Packit b099d7
# define UNSET                   0
Packit b099d7
# define SET                     1
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
/* clientFlags field values: */
Packit b099d7
#define CLIENT_HINTS_TITLE		(1L << 0)
Packit b099d7
#define CLIENT_REPARENTED		(1L << 1)
Packit b099d7
#define CLIENT_TRANSIENT		(1L << 2)
Packit b099d7
#define CLIENT_CONTEXT_SAVED		(1L << 3)
Packit b099d7
#define CLIENT_IN_SAVE_SET		(1L << 4)
Packit b099d7
#define USERS_MAX_POSITION		(1L << 5)
Packit b099d7
#define WM_INITIALIZATION		(1L << 6)
Packit b099d7
#define CLIENT_DESTROYED		(1L << 7)
Packit b099d7
#define ICON_REPARENTED			(1L << 8)
Packit b099d7
#define ICON_IN_SAVE_SET		(1L << 9)
Packit b099d7
#define CLIENT_TERMINATING		(1L << 10)
Packit b099d7
#define ICON_BOX                        (1L << 11)  /* one of our icon boxes */
Packit b099d7
#define CONFIRM_BOX                     (1L << 12)  /* a confirmation box */
Packit b099d7
Packit b099d7
#ifdef PANELIST
Packit b099d7
#define FRONT_PANEL_BOX                 (1L << 14)  /* a DT 3.0 front panel */
Packit b099d7
#define GOT_DT_WM_HINTS		(1L << 15)
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#ifdef WSM
Packit b099d7
#define SM_LAUNCHED                     (1L << 17) /* launched by dtsession */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
#define SM_X                     	(1L << 18) /* X from DB/dtsession */
Packit b099d7
#define SM_Y                     	(1L << 19) /* Y from DB/dtsession */
Packit b099d7
#define SM_WIDTH                     	(1L << 20) /* width fm DB/dtsession */
Packit b099d7
#define SM_HEIGHT                    	(1L << 21) /* height fm DB/dtsession */
Packit b099d7
#define SM_CLIENT_STATE                	(1L << 22) /* clientState fm DB/dtsession */
Packit b099d7
#define SM_ICON_X                       (1L << 23) /* icon X from DB */
Packit b099d7
#define SM_ICON_Y                       (1L << 24) /* icon Y from DB */
Packit b099d7
Packit b099d7
#define CLIENT_WM_CLIENTS		(ICON_BOX | CONFIRM_BOX)
Packit b099d7
Packit b099d7
/* decorFlags bit fields */
Packit b099d7
#define SYSTEM_DEPRESSED		(1L << 0)
Packit b099d7
#define TITLE_DEPRESSED			(1L << 1)
Packit b099d7
#define MINIMIZE_DEPRESSED		(1L << 2)
Packit b099d7
#define MAXIMIZE_DEPRESSED		(1L << 3)
Packit b099d7
Packit b099d7
/* iconFlags field values: */
Packit b099d7
#define ICON_HINTS_POSITION		(1L << 0)
Packit b099d7
#define ICON_HINTS_TITLE		(1L << 1)
Packit b099d7
#define ICON_HINTS_PIXMAP		(1L << 2)
Packit b099d7
Packit b099d7
/* client protocol flags and sizes: */
Packit b099d7
#define PROTOCOL_WM_SAVE_YOURSELF	(1L << 0)
Packit b099d7
#define PROTOCOL_WM_DELETE_WINDOW	(1L << 1)
Packit b099d7
#define PROTOCOL_WM_TAKE_FOCUS		(1L << 2)
Packit b099d7
#define PROTOCOL_MWM_MESSAGES		(1L << 3)
Packit b099d7
#define PROTOCOL_MWM_OFFSET		(1L << 4)
Packit b099d7
Packit b099d7
#define MAX_CLIENT_PROTOCOL_COUNT	40
Packit b099d7
#define MAX_COLORMAP_WINDOWS_COUNT	40
Packit b099d7
#define MAX_MWM_MESSAGES_COUNT		40
Packit b099d7
Packit b099d7
/* bevel width limits between window manager frame and client window */
Packit b099d7
#define MIN_INTERNAL_BEVEL		0
Packit b099d7
#define MAX_INTERNAL_BEVEL		2
Packit b099d7
Packit b099d7
/* global return buffer */
Packit b099d7
#define MAXWMPATH				1023
Packit b099d7
#define MAXBUF				(MAXWMPATH+1)
Packit b099d7
Packit b099d7
#define PIXMAP_IS_VALID(pix) \
Packit b099d7
  ((pix) != XmUNSPECIFIED_PIXMAP && (pix) != None && (pix) != (Pixmap)NULL)
Packit b099d7
  
Packit b099d7
#ifdef WSM
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  WsClientData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This datum compartmentalizes client data that must be replicated 
Packit b099d7
 *  on a per workspace basis.
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
typedef struct _WsClientData
Packit b099d7
{
Packit b099d7
    WorkspaceID	wsID;			/* workspace identifier */
Packit b099d7
    int		iconPlace;		/* icon placment index */
Packit b099d7
    int		iconX;
Packit b099d7
    int		iconY;
Packit b099d7
    Window	iconFrameWin;
Packit b099d7
    IconBoxData *pIconBox;		/* icon box for this win */
Packit b099d7
Packit b099d7
} WsClientData;
Packit b099d7
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * frame style types
Packit b099d7
 */
Packit b099d7
typedef enum _FrameStyle
Packit b099d7
{
Packit b099d7
    WmRECESSED,
Packit b099d7
    WmSLAB
Packit b099d7
} FrameStyle;
Packit b099d7
Packit b099d7

Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  WmGlobalData
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This is the main data structure for holding the window manager's
Packit b099d7
 *  global data. There is one instantiation of the structure for
Packit b099d7
 *  the window manager.
Packit b099d7
 * 
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _WmGlobalData
Packit b099d7
{
Packit b099d7
    int		dataType;
Packit b099d7
    char	**argv;			/* command line argument vector */
Packit b099d7
    char	**environ;		/* environment vector */	
Packit b099d7
    char	*mwmName;		/* name of our executable */
Packit b099d7
    Widget	topLevelW;
Packit b099d7
#ifdef WSM
Packit b099d7
    Widget	topLevelW1;             /* from which WM components hang */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Boolean     confirmDialogMapped;    /* confirm dialog is mapped */
Packit b099d7
    XtAppContext	mwmAppContext;	/* application context for mwm */
Packit b099d7
    XContext	windowContextType;	/* window context for XSaveContext */
Packit b099d7
    XContext	screenContextType;	/* screen context for XSaveContext */
Packit b099d7
#ifndef	IBM_169380
Packit b099d7
    XContext  cmapWindowContextType;  /* list of pCD's in WM_COLORMAP_WINDOWS                                              context for XSaveContext */
Packit b099d7
#endif
Packit b099d7
#ifdef WSM
Packit b099d7
    XContext	mwmWindowContextType;	/* mwm win context for XSaveContext */
Packit b099d7
    Window      dtSmWindow;            /* used for contention management */
Packit b099d7
    Window      commandWindow;          /* WM_SAVE_YOURSELF win for dtwm */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
    /* presentation resource id's: */
Packit b099d7
Packit b099d7
    String	displayString;		/* used for putenv in F_Exec */
Packit b099d7
    Display	*display;		/* display we are running to */
Packit b099d7
#ifdef WSM
Packit b099d7
    Display	*display1;		/* second display connection */
Packit b099d7
    int         statusColorServer;      /* CSERVE_NORMAL, CSERVE_NOT_AVAILABLE */
Packit b099d7
    DtWmpParseBuf	*pWmPB;		/* global parse buffer */
Packit b099d7
#endif /* WSM */
Packit b099d7
    int		numScreens;		/* number of screens */
Packit b099d7
    unsigned char	**screenNames;	/* default names for screens */
Packit b099d7
    WmScreenData	*Screens;	/* array of screen info */
Packit b099d7
Packit b099d7
    Cursor	workspaceCursor;		/* basic arrow cursor */
Packit b099d7
    Cursor	stretchCursors[STRETCH_COUNT];
Packit b099d7
    Cursor	configCursor;
Packit b099d7
    Cursor	movePlacementCursor;
Packit b099d7
    Cursor	sizePlacementCursor;
Packit b099d7
Packit b099d7
#ifndef NO_MESSAGE_CATALOG
Packit b099d7
    XmString okLabel;
Packit b099d7
    XmString cancelLabel;
Packit b099d7
    XmString helpLabel;
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
    /* wm state info: */
Packit b099d7
Packit b099d7
    WmScreenData *pActiveSD;		/* with keyfocus window */
Packit b099d7
    Boolean	useStandardBehavior;	/* behavior flag */
Packit b099d7
    Boolean	wmRestarted;		/* restart flag */
Packit b099d7
    Boolean	errorFlag;		/* handle on async errors */
Packit b099d7
    XID		errorResource;		/* from XErrorEvent */
Packit b099d7
    unsigned char errorRequestCode;	/* from XErrorEvent */
Packit b099d7
Packit b099d7
		    /* The following are global because pointer is grabbed */
Packit b099d7
    MenuSpec	*menuActive;		/* ptr to currently active menu */
Packit b099d7
    KeySpec	*menuUnpostKeySpec;	/* key to upost current menu */
Packit b099d7
    ClientData	*menuClient;		/* client for which menu is posted */
Packit b099d7
    KeySpec     *F_NextKeySpec;         /* used when travering to windows */
Packit b099d7
    KeySpec     *F_PrevKeySpec;         /* used when travering to windows */
Packit b099d7
Packit b099d7
    Context     grabContext;            /* used in GrabWin when no event */
Packit b099d7
Packit b099d7
    ClickData	clickData;		/* double-click detection data */
Packit b099d7
    int		configAction;		/* none, resize, move */
Packit b099d7
    unsigned int configButton;		/* button used for config */
Packit b099d7
    unsigned int configPart;		/* resize frame part */
Packit b099d7
    Boolean 	configSet;		/* True if configPart set */
Packit b099d7
    Boolean	movingIcon;		/* True if icon being moved */
Packit b099d7
    Boolean	preMove;		/* move threshold support */
Packit b099d7
    int		preMoveX;
Packit b099d7
    int		preMoveY;
Packit b099d7
    ClientData	*gadgetClient;		/* last client with */
Packit b099d7
    int		gadgetDepressed;	/* depressed gadget */
Packit b099d7
    Boolean	checkHotspot;		/* event hotspot flag */
Packit b099d7
    XRectangle	hotspotRectangle;	/* event hotspot area */
Packit b099d7
    WmTimer	*wmTimers;		/* timer data */
Packit b099d7
    Boolean	passKeysActive;		/* flag for pass keys function */
Packit b099d7
    KeySpec	*passKeysKeySpec;	/* key for pass keys function */
Packit b099d7
    Boolean	activeIconTextDisplayed;	/* True if active label up */
Packit b099d7
    Boolean	queryScreen;		/* True if not sure of active screen */
Packit b099d7
Packit b099d7
    /* keyboard focus data: */
Packit b099d7
Packit b099d7
    ClientData	*keyboardFocus;		/* ptr to client with the key focus */
Packit b099d7
    ClientData	*nextKeyboardFocus;	/* next client to get focus */
Packit b099d7
    Boolean	systemModalActive;
Packit b099d7
    ClientData	*systemModalClient;
Packit b099d7
    Window	systemModalWindow;
Packit b099d7
Packit b099d7
    /* Resource database used to restore client geometries, etc. */
Packit b099d7
    XrmDatabase clientResourceDB;
Packit b099d7
#ifndef WSM
Packit b099d7
    char	*dbFileName;
Packit b099d7
    String	sessionClientDB;		/* resource */
Packit b099d7
#endif
Packit b099d7
Packit b099d7
    /* atoms used in inter-client communication: */
Packit b099d7
Packit b099d7
    Atom	xa_WM_STATE;
Packit b099d7
    Atom	xa_WM_PROTOCOLS;
Packit b099d7
    Atom	xa_WM_CHANGE_STATE;
Packit b099d7
    Atom	xa_WM_SAVE_YOURSELF;
Packit b099d7
    Atom	xa_WM_DELETE_WINDOW;
Packit b099d7
    Atom	xa_WM_TAKE_FOCUS;
Packit b099d7
    Atom	xa_WM_COLORMAP_WINDOWS;
Packit b099d7
    Atom	xa_MWM_HINTS;
Packit b099d7
    Atom	xa_MWM_MESSAGES;
Packit b099d7
    Atom	xa_MWM_MENU;
Packit b099d7
    Atom	xa_MWM_INFO;
Packit b099d7
    Atom	xa_MWM_OFFSET;
Packit b099d7
Packit b099d7
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
Packit b099d7
    Atom       *xa_WM;
Packit b099d7
Packit b099d7
    Atom	xa_TARGETS;
Packit b099d7
    Atom	xa_MULTIPLE;
Packit b099d7
    Atom	xa_TIMESTAMP;
Packit b099d7
Packit b099d7
    /* original set of query targets */
Packit b099d7
    Atom	_MOTIF_WM_CLIENT_WINDOW;
Packit b099d7
    Atom	_MOTIF_WM_POINTER_WINDOW;
Packit b099d7
    Atom	_MOTIF_WM_ALL_CLIENTS	;
Packit b099d7
	  
Packit b099d7
    /* menu command interface support */
Packit b099d7
    Atom	_MOTIF_WM_DEFINE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_INCLUDE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_REMOVE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_ENABLE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_DISABLE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_RENAME_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_INVOKE_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_REQUEST_COMMAND;
Packit b099d7
    Atom	_MOTIF_WM_WINDOW_FLAGS;
Packit b099d7
Packit b099d7
    /* automation support */
Packit b099d7
    Atom        _MOTIF_WM_AUTOMATION;
Packit b099d7
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */
Packit b099d7
Packit b099d7
    Atom	xa_MOTIF_BINDINGS;
Packit b099d7
    Atom	xa_COMPOUND_TEXT;
Packit b099d7
    Atom	xa_SM_CLIENT_ID;
Packit b099d7
    Atom	xa_WMSAVE_HINT;
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef WSM
Packit b099d7
Packit b099d7
    /* atoms used for workspace management: */
Packit b099d7
Packit b099d7
    Atom	xa_DT_WORKSPACE_HINTS;
Packit b099d7
    Atom	xa_DT_WORKSPACE_PRESENCE;
Packit b099d7
    Atom	xa_DT_WORKSPACE_INFO;
Packit b099d7
    Atom	xa_DT_EMBEDDED_CLIENTS;
Packit b099d7
    Atom	xa_DT_WORKSPACE_LIST;
Packit b099d7
    Atom	xa_DT_WORKSPACE_CURRENT;
Packit b099d7
Packit b099d7
    Atom	xa_ALL_WORKSPACES;
Packit b099d7
    Atom        xa_DT_SESSION_HINTS;
Packit b099d7
    Atom	xa_DT_WM_REQUEST;
Packit b099d7
Packit b099d7
    Atom        xa_DT_SM_WM_PROTOCOL;
Packit b099d7
    Atom        xa_DT_SM_START_ACK_WINDOWS;
Packit b099d7
    Atom        xa_DT_SM_STOP_ACK_WINDOWS;
Packit b099d7
    Atom        xa_DT_WM_WINDOW_ACK;
Packit b099d7
    Atom        xa_DT_WM_EXIT_SESSION;
Packit b099d7
    Atom        xa_DT_WM_LOCK_DISPLAY;
Packit b099d7
    Atom        xa_DT_WM_READY;
Packit b099d7
#endif /* WSM */
Packit b099d7
#ifndef NO_OL_COMPAT
Packit b099d7
    Atom	xa_OL_WIN_ATTR;
Packit b099d7
    Atom	xa_OL_DECOR_RESIZE;
Packit b099d7
    Atom	xa_OL_DECOR_HEADER;
Packit b099d7
    Atom	xa_OL_DECOR_CLOSE;
Packit b099d7
    Atom	xa_OL_DECOR_PIN;
Packit b099d7
    Atom	xa_OL_DECOR_ADD;
Packit b099d7
    Atom	xa_OL_DECOR_DEL;
Packit b099d7
    Atom	xa_OL_WT_BASE;
Packit b099d7
    Atom	xa_OL_WT_COMMAND;
Packit b099d7
    Atom	xa_OL_WT_HELP;
Packit b099d7
    Atom	xa_OL_WT_NOTICE;
Packit b099d7
    Atom	xa_OL_WT_OTHER;
Packit b099d7
    Atom	xa_OL_PIN_IN;
Packit b099d7
    Atom	xa_OL_PIN_OUT;
Packit b099d7
    Atom	xa_OL_MENU_LIMITED;
Packit b099d7
    Atom	xa_OL_MENU_FULL;
Packit b099d7
#endif /* NO_OL_COMPAT */
Packit b099d7
Packit b099d7
    /* mwm specific appearance and behavior resources and data: */
Packit b099d7
Packit b099d7
    Boolean	autoKeyFocus;			/* resource */
Packit b099d7
    int		autoRaiseDelay;			/* resource */
Packit b099d7
    String	bitmapDirectory;		/* resource */
Packit b099d7
#ifdef WSM
Packit b099d7
    String	backdropDirs;			/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Boolean	clientAutoPlace;		/* resource */
Packit b099d7
    int		colormapFocusPolicy;		/* resource */
Packit b099d7
    String	configFile;			/* resource */
Packit b099d7
#ifdef WSM
Packit b099d7
    String	cppCommand;			/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Boolean	deiconifyKeyFocus;		/* resource */
Packit b099d7
    int		doubleClickTime;		/* resource */
Packit b099d7
    Boolean	enableWarp;			/* resource */
Packit b099d7
    Boolean	enforceKeyFocus;		/* resource */
Packit b099d7
    Boolean	freezeOnConfig;			/* resource - testing */
Packit b099d7
#ifdef WSM
Packit b099d7
    Boolean	useWindowOutline;		/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Boolean	iconAutoPlace;			/* resource */
Packit b099d7
    Boolean	iconClick;			/* resource */
Packit b099d7
    Boolean	interactivePlacement;		/* resource */
Packit b099d7
    int		keyboardFocusPolicy;		/* resource */
Packit b099d7
    Boolean	lowerOnIconify;			/* resource */
Packit b099d7
    int		moveThreshold;			/* resource */
Packit b099d7
    Boolean     passButtonsCheck; /* used to override passButtons */
Packit b099d7
    Boolean	passButtons;			/* resource */
Packit b099d7
    Boolean	passSelectButton;		/* resource */
Packit b099d7
    Boolean	positionIsFrame;		/* resource */
Packit b099d7
    Boolean	positionOnScreen;		/* resource */
Packit b099d7
    int		quitTimeout;			/* resource */
Packit b099d7
    Boolean     raiseKeyFocus;                  /* resource */
Packit b099d7
    Boolean     multiScreen;                  	/* resource */
Packit b099d7
    String	screenList;			/* resource */
Packit b099d7
    int		showFeedback;			/* resource */
Packit b099d7
#ifdef WSM
Packit b099d7
    Boolean	refreshByClearing;		/* resource */
Packit b099d7
    Boolean	rootButtonClick;		/* resource */
Packit b099d7
#endif /* WSM */
Packit b099d7
    Boolean	startupKeyFocus;		/* resource */
Packit b099d7
    Boolean	systemButtonClick;		/* resource */
Packit b099d7
    Boolean	systemButtonClick2;		/* resource */
Packit b099d7
    Boolean	useLargeCursors;
Packit b099d7
#if  defined(PANELIST)
Packit b099d7
    Boolean	useFrontPanel;			/* resource */
Packit b099d7
#endif /* PANELIST */
Packit b099d7
#ifdef WSM
Packit b099d7
    String      helpDirectory;		        /* resource */
Packit b099d7
    Window	requestContextWin;		/* for WmRequest f.fcns */
Packit b099d7
#endif /* WSM */
Packit b099d7
#ifdef MINIMAL_DT
Packit b099d7
    Boolean     dtLite;                        /* resource */
Packit b099d7
    Boolean     blinkOnExec;                    /* resource */
Packit b099d7
#endif /* MINIMAL_DT */
Packit b099d7
#ifdef PANELIST
Packit b099d7
    WmScreenData *dtSD; /* screen for front panel */
Packit b099d7
    int         iSlideUpsInProgress;
Packit b099d7
#endif /*PANELIST  */
Packit b099d7
    Boolean	waitForClicks;			/* resource */
Packit b099d7
    FrameStyle	frameStyle;			/* resource */
Packit b099d7
#ifdef WSM
Packit b099d7
    Dimension	iconExternalShadowWidth;	/* resource */
Packit b099d7
    Dimension	frameExternalShadowWidth;	/* resource */
Packit b099d7
    int		marqueeSelectGranularity;	/* resource */
Packit b099d7
    XButtonEvent evLastButton;			/* for detecting replayed 
Packit b099d7
						   button events */
Packit b099d7
    Boolean	bReplayedButton;		/* true if button replayed */
Packit b099d7
    Boolean	bSuspendSecondaryRestack;	/* overrides transient
Packit b099d7
						   stacking */
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
    XmString	clientDefaultTitle;
Packit b099d7
    XmString	iconDefaultTitle;
Packit b099d7
Packit b099d7
    Window	attributesWindow;
Packit b099d7
    XWindowAttributes	windowAttributes;
Packit b099d7
Packit b099d7
#ifndef NO_SHAPE
Packit b099d7
    Boolean     hasShape;                /* server supports Shape extension */
Packit b099d7
    int         shapeEventBase, shapeErrorBase;
Packit b099d7
#endif /* NO_SHAPE */
Packit b099d7
    /* Need to replay enter notify events on windows with the
Packit b099d7
       pointer that used to be modalized.  This is for pointer focus. */
Packit b099d7
    int         replayEnterEvent;
Packit b099d7
    XEnterWindowEvent savedEnterEvent;
Packit b099d7
Packit b099d7
    unsigned int lockingModMask;	/* mask of locking modifier keys */
Packit b099d7
    unsigned int *pLockMaskSequence;	
Packit b099d7
Packit b099d7
    unsigned char tmpBuffer[MAXBUF];	/* replaces static buffers used */
Packit b099d7
					/* for large return values */
Packit b099d7
Packit b099d7
    int numMouseButtons;		/* num of mouse buttons available */
Packit b099d7
    unsigned int bMenuButton;		/* BMenu binding (button/state) */
Packit b099d7
#if defined(sun) && defined(ALLPLANES)
Packit b099d7
    Bool	allplanes;		/* is SUN_ALLPLANES available? */
Packit b099d7
#endif /* defined(sun) && defined(ALLPLANES) */
Packit b099d7
} WmGlobalData;
Packit b099d7
Packit b099d7
/* quick references to global data: */
Packit b099d7
#define DISPLAY		wmGD.display
Packit b099d7
#ifdef WSM
Packit b099d7
#define DISPLAY1	wmGD.display1
Packit b099d7
#endif /* WSM */
Packit b099d7
#define ACTIVE_PSD	(wmGD.pActiveSD)
Packit b099d7
#define ACTIVE_SCREEN	(wmGD.pActiveSD->screen)
Packit b099d7
#define ACTIVE_WS	(wmGD.pActiveSD->pActiveWS)
Packit b099d7
#define ACTIVE_ROOT	(wmGD.pActiveSD->rootWindow)
Packit b099d7
#define ACTIVE_ICON_TEXT_WIN (wmGD.pActiveSD->activeIconTextWin)
Packit b099d7
Packit b099d7
#define NOLOCKMOD(state)  ((state) & ~wmGD.lockingModMask)
Packit b099d7
#ifdef WSM
Packit b099d7
/* absent map behavior policy values (absentMapBehavior): */
Packit b099d7
#define AMAP_BEHAVIOR_ADD       0
Packit b099d7
#define AMAP_BEHAVIOR_MOVE      1
Packit b099d7
#define AMAP_BEHAVIOR_IGNORE    2 
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* colormap focus policy values (colormapFocus): */
Packit b099d7
#define CMAP_FOCUS_EXPLICIT	0
Packit b099d7
#define CMAP_FOCUS_POINTER	1
Packit b099d7
#define CMAP_FOCUS_KEYBOARD	2
Packit b099d7
Packit b099d7
/* keyboard input focus policy values (keyboardFocus): */
Packit b099d7
#define KEYBOARD_FOCUS_EXPLICIT	0
Packit b099d7
#define KEYBOARD_FOCUS_POINTER	1
Packit b099d7
Packit b099d7
/* icon appearance values (iconAppearance): */
Packit b099d7
#define ICON_LABEL_PART			(1L << 0)
Packit b099d7
#define ICON_IMAGE_PART			(1L << 1)
Packit b099d7
#define ICON_ACTIVE_LABEL_PART		(1L << 2)
Packit b099d7
#define USE_ICON_DEFAULT_APPEARANCE	(1L << 3)
Packit b099d7
#define ICON_APPEARANCE_STANDALONE	(ICON_LABEL_PART | ICON_IMAGE_PART |\
Packit b099d7
					 ICON_ACTIVE_LABEL_PART)
Packit b099d7
#define ICON_APPEARANCE_ICONBOX		(ICON_LABEL_PART | ICON_IMAGE_PART)
Packit b099d7
Packit b099d7
/* icon placement values (iconPlacement, ...): */
Packit b099d7
#define ICON_PLACE_LEFT_PRIMARY		(1L << 0)
Packit b099d7
#define ICON_PLACE_RIGHT_PRIMARY	(1L << 1)
Packit b099d7
#define ICON_PLACE_TOP_PRIMARY		(1L << 2)
Packit b099d7
#define ICON_PLACE_BOTTOM_PRIMARY	(1L << 3)
Packit b099d7
#define ICON_PLACE_LEFT_SECONDARY	(1L << 4)
Packit b099d7
#define ICON_PLACE_RIGHT_SECONDARY	(1L << 5)
Packit b099d7
#define ICON_PLACE_TOP_SECONDARY	(1L << 6)
Packit b099d7
#define ICON_PLACE_BOTTOM_SECONDARY	(1L << 7)
Packit b099d7
#define ICON_PLACE_EDGE			(1L << 8)
Packit b099d7
#define ICON_PLACE_TIGHT		(1L << 9)
Packit b099d7
#define ICON_PLACE_RESERVE		(1L << 10)
Packit b099d7
Packit b099d7
#define NO_ICON_PLACE			-1
Packit b099d7
#define MINIMUM_ICON_SPACING		4
Packit b099d7
#define MAXIMUM_ICON_MARGIN		128
Packit b099d7
#define ICON_IMAGE_MAX_WIDTH		128
Packit b099d7
#define ICON_IMAGE_MAX_HEIGHT		128
Packit b099d7
#define ICON_IMAGE_MIN_WIDTH		16
Packit b099d7
#define ICON_IMAGE_MIN_HEIGHT		16
Packit b099d7
Packit b099d7
/*default client window title: */
Packit b099d7
#define DEFAULT_CLIENT_TITLE	"*****"
Packit b099d7
#define DEFAULT_ICON_TITLE	DEFAULT_CLIENT_TITLE
Packit b099d7
Packit b099d7
/* client decoration parameters */
Packit b099d7
#define MAXIMUM_FRAME_BORDER_WIDTH	64
Packit b099d7
Packit b099d7
/* configuration action (configAction): */
Packit b099d7
#define NO_ACTION			0
Packit b099d7
#define MOVE_CLIENT			1
Packit b099d7
#define RESIZE_CLIENT			2
Packit b099d7
#define PLACE_CLIENT			3
Packit b099d7
#ifdef WSM
Packit b099d7
#define MARQUEE_SELECT			4
Packit b099d7
#endif /* WSM */
Packit b099d7
Packit b099d7
/* Motif input bindings file name */
Packit b099d7
#define MOTIF_BINDINGS_FILE		".motifbind"
Packit b099d7
Packit b099d7
/* Data type definitions */
Packit b099d7
#define GLOBAL_DATA_TYPE		1001
Packit b099d7
#define CLIENT_DATA_TYPE		1002
Packit b099d7
#define SCREEN_DATA_TYPE		1003
Packit b099d7
#define WORKSPACE_DATA_TYPE		1004
Packit b099d7
Packit b099d7
#ifndef NO_MESSAGE_CATALOG
Packit b099d7
/*************************************<->*************************************
Packit b099d7
 *
Packit b099d7
 *  NlsStrings
Packit b099d7
 *
Packit b099d7
 *
Packit b099d7
 *  Description:
Packit b099d7
 *  -----------
Packit b099d7
 *  This structure is used to hold message strings that used to
Packit b099d7
 *  be defines
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
typedef struct _NlsStrings
Packit b099d7
{
Packit b099d7
    char *default_icon_box_title;
Packit b099d7
    char *builtinSystemMenu;
Packit b099d7
    char *defaultKeyBindings;
Packit b099d7
    char *builtinKeyBindings;
Packit b099d7
    char *defaultButtonBindings;
Packit b099d7
    char *defaultVersionTitle;
Packit b099d7
    char *defaultDtwmHelpTitle;
Packit b099d7
    char *defaultHelpTitle;
Packit b099d7
} NlsStrings;
Packit b099d7
Packit b099d7
Packit b099d7
extern NlsStrings wmNLS;
Packit b099d7
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/* Stacking functions */
Packit b099d7
#define STACK_NORMAL			0
Packit b099d7
#define STACK_WITHIN_FAMILY		1
Packit b099d7
#define STACK_FREE_FAMILY		2
Packit b099d7
Packit b099d7
/* UsePPosition values */
Packit b099d7
#define USE_PPOSITION_OFF		0
Packit b099d7
#define USE_PPOSITION_ON		1
Packit b099d7
#define USE_PPOSITION_NONZERO		2
Packit b099d7
Packit b099d7
/* Largest dimension for special casing */
Packit b099d7
#define BIGSIZE 32767
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * External references for global data:
Packit b099d7
 */
Packit b099d7
Packit b099d7
extern WmGlobalData	wmGD;
Packit b099d7
extern char	defaultSystemMenuName[];
Packit b099d7
extern char	defaultKeyBindings[];
Packit b099d7
extern char	defaultKeyBindingsName[];
Packit b099d7
#ifndef NO_MESSAGE_CATALOG
Packit b099d7
extern char	*builtinSystemMenu;
Packit b099d7
#else
Packit b099d7
extern char	builtinSystemMenu[];
Packit b099d7
#endif
Packit b099d7
extern char	builtinKeyBindings[];
Packit b099d7
Packit b099d7
extern Const char	_75_foreground[];
Packit b099d7
extern Const char	_50_foreground[];
Packit b099d7
extern Const char	_25_foreground[];
Packit b099d7
Packit b099d7
Packit b099d7
extern char *_DtGetMessage(char *filename, int set, int n, char *s);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * macro to get message catalog strings
Packit b099d7
 */
Packit b099d7
#ifndef NO_MESSAGE_CATALOG
Packit b099d7
# ifdef __ultrix
Packit b099d7
#  define _CLIENT_CAT_NAME "dtwm.cat"
Packit b099d7
# else  /* __ultrix */
Packit b099d7
#  define _CLIENT_CAT_NAME "dtwm"
Packit b099d7
# endif /* __ultrix */
Packit b099d7
# ifdef WSM
Packit b099d7
#  define GETMESSAGE(set, number, string)\
Packit b099d7
    _DtGetMessage(_CLIENT_CAT_NAME, set, number, string)
Packit b099d7
# else
Packit b099d7
#  define GETMESSAGE(set, number, string) (string)
Packit b099d7
# endif /* WSM */
Packit b099d7
#else
Packit b099d7
# define GETMESSAGE(set, number, string)\
Packit b099d7
    string
Packit b099d7
#endif
Packit b099d7
#endif /* _WmGlobal_h */