/****************************************************************************
* This module is based on Twm, but has been siginificantly modified
* by Rob Nation
****************************************************************************/
/*****************************************************************************/
/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
/** Salt Lake City, Utah **/
/** Portions Copyright 1989 by the Massachusetts Institute of Technology **/
/** Cambridge, Massachusetts **/
/** **/
/** All Rights Reserved **/
/** **/
/** Permission to use, copy, modify, and distribute this software and **/
/** its documentation for any purpose and without fee is hereby **/
/** granted, provided that the above copyright notice appear in all **/
/** copies and that both that copyright notice and this permis- **/
/** sion notice appear in supporting documentation, and that the **/
/** names of Evans & Sutherland and M.I.T. not be used in advertising **/
/** in publicity pertaining to distribution of the software without **/
/** specific, written prior permission. **/
/** **/
/** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/
/** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/
/** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/
/** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/
/** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/
/** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/
/** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/
/** OR PERFORMANCE OF THIS SOFTWARE. **/
/*****************************************************************************/
/***********************************************************************
* fvwm include file
***********************************************************************/
#ifndef _FVWM_
#define _FVWM_
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
#include <fvwm/fvwmlib.h>
#ifndef WithdrawnState
#define WithdrawnState 0
#endif
/* use PanFrames! this replaces the 3 pixel margin with PanFrame windows
it should not be an option, once it works right. HEDU 2/2/94 */
#define PAN_FRAME_THICKNESS 2 /* or just 1 ? */
/* the maximum number of mouse buttons fvwm knows about */
/* don't think that upping this to 5 will make everything
* hunky-dory with 5 button mouses */
#define MAX_BUTTONS 3
#include <X11/Intrinsic.h>
#ifdef SIGNALRETURNSINT
#define SIGNAL_T int
#define SIGNAL_RETURN return 0
#else
#define SIGNAL_T void
#define SIGNAL_RETURN return
#endif
#define BW 1 /* border width */
#define BOUNDARY_WIDTH 7 /* border width */
#define CORNER_WIDTH 16 /* border width */
# define HEIGHT_EXTRA 4 /* Extra height for texts in popus */
# define HEIGHT_EXTRA_TITLE 4 /* Extra height for underlining title */
# define HEIGHT_SEPARATOR 4 /* Height of separator lines */
#define SCROLL_REGION 2 /* region around screen edge that */
/* triggers scrolling */
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
#define NULLSTR ((char *) NULL)
/* contexts for button presses */
#define C_NO_CONTEXT 0
#define C_WINDOW 1
#define C_TITLE 2
#define C_ICON 4
#define C_ROOT 8
#define C_FRAME 16
#define C_SIDEBAR 32
#define C_L1 64
#define C_L2 128
#define C_L3 256
#define C_L4 512
#define C_L5 1024
#define C_R1 2048
#define C_R2 4096
#define C_R3 8192
#define C_R4 16384
#define C_R5 32768
#define C_RALL (C_R1|C_R2|C_R3|C_R4|C_R5)
#define C_LALL (C_L1|C_L2|C_L3|C_L4|C_L5)
#define C_ALL (C_WINDOW|C_TITLE|C_ICON|C_ROOT|C_FRAME|C_SIDEBAR|\
C_L1|C_L2|C_L3|C_L4|C_L5|C_R1|C_R2|C_R3|C_R4|C_R5)
typedef struct MyFont
{
XFontStruct *font; /* font structure */
#ifdef I18N
XFontSet fontset; /* font set */
#endif
int height; /* height of the font */
int y; /* Y coordinate to draw characters */
} MyFont;
typedef struct ColorPair
{
Pixel fore;
Pixel back;
} ColorPair;
typedef struct ColorQuad
{
Pixel fore;
Pixel back;
Pixel hilite;
Pixel shadow;
} ColorQuad;
/* for each window that is on the display, one of these structures
* is allocated and linked into a list
*/
typedef struct FvwmWindow
{
struct FvwmWindow *next; /* next fvwm window */
struct FvwmWindow *prev; /* prev fvwm window */
Window w; /* the child window */
int old_bw; /* border width before reparenting */
Window frame; /* the frame window */
Window Parent; /* Ugly Ugly Ugly - it looks like you
* HAVE to reparent the app window into
* a window whose size = app window,
* or else you can't keep xv and matlab
* happy at the same time! */
Window title_w; /* the title bar window */
Window sides[4];
Window corners[4]; /* Corner pieces */
int nr_left_buttons;
int nr_right_buttons;
Window left_w[5];
Window right_w[5];
Window icon_w; /* the icon window */
Window icon_pixmap_w; /* the icon window */
#ifdef SHAPE
int wShaped; /* is this a shaped window */
#endif
int frame_x; /* x position of frame */
int frame_y; /* y position of frame */
int frame_width; /* width of frame */
int frame_height; /* height of frame */
int boundary_width;
int corner_width;
int bw;
int title_x;
int title_y;
int title_height; /* height of the title bar */
int title_width; /* width of the title bar */
char *title_pixmap_file;
Picture *title_icon;
int icon_x_loc; /* icon window x coordinate */
int icon_xl_loc; /* icon label window x coordinate */
int icon_y_loc; /* icon window y coordiante */
int icon_w_width; /* width of the icon window */
int icon_w_height; /* height of the icon window */
int icon_t_width; /* width of the icon title window */
int icon_p_width; /* width of the icon pixmap window */
int icon_p_height; /* height of the icon pixmap window */
Pixmap iconPixmap; /* pixmap for the icon */
int iconDepth; /* Drawable depth for the icon */
Pixmap icon_maskPixmap; /* pixmap for the icon mask */
char *name; /* name of the window */
char *realname; /* rlr */
char *icon_name; /* name of the icon */
XWindowAttributes attr; /* the child window attributes */
XSizeHints hints; /* normal hints */
XWMHints *wmhints; /* WM hints */
XClassHint class;
int Desk; /* Tells which desktop this window is on */
int FocusDesk; /* Where (if at all) was it focussed */
int DeIconifyDesk; /* Desk to deiconify to, for StubbornIcons */
Window transientfor;
unsigned long flags;
char *icon_bitmap_file;
int orig_x; /* unmaximized x coordinate */
int orig_y; /* unmaximized y coordinate */
int orig_wd; /* unmaximized window width */
int orig_ht; /* unmaximized window height */
int xdiff,ydiff; /* used to restore window position on exit*/
int *mwm_hints;
int ol_hints;
int functions;
Window *cmap_windows; /* Colormap windows property */
int number_cmap_windows; /* Should generally be 0 */
Pixel TextPixel;
Pixel BackPixel;
unsigned long buttons;
int IconBox[4];
int BoxFillMethod;
} FvwmWindow;
/***************************************************************************
* window flags definitions
***************************************************************************/
/* The first 13 items are mapped directly from the style structure's
* flag value, so they MUST correspond to the first 13 entries in misc.h */
#define STARTICONIC (1<<0)
#define ONTOP (1<<1) /* does window stay on top */
#define STICKY (1<<2) /* Does window stick to glass? */
#define WINDOWLISTSKIP (1<<3)
#define SUPPRESSICON (1<<4)
#define NOICON_TITLE (1<<5)
#define Lenience (1<<6)
#define StickyIcon (1<<7)
#define CirculateSkipIcon (1<<8)
#define CirculateSkip (1<<9)
#define ClickToFocus (1<<10)
#define SloppyFocus (1<<11)
#define SHOW_ON_MAP (1<<12) /* switch to desk when it gets mapped? */
#define ALL_COMMON_FLAGS (STARTICONIC|ONTOP|STICKY|WINDOWLISTSKIP| \
SUPPRESSICON|NOICON_TITLE|Lenience|StickyIcon| \
CirculateSkipIcon|CirculateSkip|ClickToFocus| \
SloppyFocus|SHOW_ON_MAP)
#define BORDER (1<<13) /* Is this decorated with border*/
#define TITLE (1<<14) /* Is this decorated with title */
#define MAPPED (1<<15) /* is it mapped? */
#define ICONIFIED (1<<16) /* is it an icon now? */
#define TRANSIENT (1<<17) /* is it a transient window? */
#define RAISED (1<<18) /* if its a sticky window, needs raising? */
#define VISIBLE (1<<19) /* is the window fully visible */
#define ICON_OURS (1<<20) /* is the icon window supplied by the app? */
#define PIXMAP_OURS (1<<21)/* is the icon pixmap ours to free? */
#define SHAPED_ICON (1<<22)/* is the icon shaped? */
#define MAXIMIZED (1<<23)/* is the window maximized? */
#define DoesWmTakeFocus (1<<24)
#define DoesWmDeleteWindow (1<<25)
/* has the icon been moved by the user? */
#define ICON_MOVED (1<<26)
/* was the icon unmapped, even though the window is still iconified
* (Transients) */
#define ICON_UNMAPPED (1<<27)
/* Sent an XMapWindow, but didn't receive a MapNotify yet.*/
#define MAP_PENDING (1<<28)
#define HintOverride (1<<29)
/* not used in fvwm-95
#define MWMButtons (1<<30)
#define MWMBorders (1<<31)
*/
/* flags to suppress/enable title bar buttons */
#define BUTTON1 1
#define BUTTON2 2
#define BUTTON3 4
#define BUTTON4 8
#define BUTTON5 16
#define BUTTON6 32
#define BUTTON7 64
#define BUTTON8 128
#define BUTTON9 256
#define BUTTON10 512
#include <stdlib.h>
extern void Reborder(void);
extern void SigDone(int);
extern void Restart(int nonsense);
extern void Done(int, char *);
extern void BlackoutScreen(void);
extern void UnBlackoutScreen(void);
extern int master_pid;
extern Display *dpy;
extern XContext FvwmContext;
extern Window BlackoutWin;
extern Boolean ShapesSupported;
extern Window JunkRoot, JunkChild;
extern int JunkX, JunkY;
extern unsigned int JunkWidth, JunkHeight, JunkBW, JunkDepth, JunkMask;
#ifdef PAN_FRAMES
extern void checkPanFrames();
extern void raisePanFrames();
#endif
extern Atom _XA_MIT_PRIORITY_COLORS;
extern Atom _XA_WM_CHANGE_STATE;
extern Atom _XA_WM_STATE;
extern Atom _XA_WM_COLORMAP_WINDOWS;
extern Atom _XA_WM_PROTOCOLS;
extern Atom _XA_WM_TAKE_FOCUS;
extern Atom _XA_WM_SAVE_YOURSELF;
extern Atom _XA_WM_DELETE_WINDOW;
extern Atom _XA_WM_DESKTOP;
extern Atom _XA_FVWM_STICKS_TO_GLASS;
extern Atom _XA_FVWM_CLIENT;
extern Atom _XA_OL_WIN_ATTR;
extern Atom _XA_OL_WT_BASE;
extern Atom _XA_OL_WT_CMD;
extern Atom _XA_OL_WT_HELP;
extern Atom _XA_OL_WT_NOTICE;
extern Atom _XA_OL_WT_OTHER;
extern Atom _XA_OL_DECOR_ADD;
extern Atom _XA_OL_DECOR_DEL;
extern Atom _XA_OL_DECOR_CLOSE;
extern Atom _XA_OL_DECOR_RESIZE;
extern Atom _XA_OL_DECOR_HEADER;
extern Atom _XA_OL_DECOR_ICON_NAME;
#endif /* _FVWM_ */
syntax highlighted by Code2HTML, v. 0.9.1