1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
/****************************************************************************
* This module is based on Twm, but has been siginificantly modified
* by Rob Nation
****************************************************************************/
/*
* Copyright 1989 Massachusetts Institute of Technology
*
* 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 permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES 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 per-screen data include file
*
***********************************************************************/
#ifndef _SCREEN_
#define _SCREEN_
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
#include "misc.h"
#include "menus.h"
#define SIZE_HINDENT 5
#define SIZE_VINDENT 3
#define MAX_WINDOW_WIDTH 32767
#define MAX_WINDOW_HEIGHT 32767
/* Cursor types */
#define POSITION 0 /* upper Left corner cursor */
#define TITLE_CURSOR 1 /* title-bar cursor */
#define DEFAULT 2 /* cursor for apps to inherit */
#define SYS 3 /* sys-menu and iconify boxes cursor */
#define MOVE 4 /* resize cursor */
#if defined(__alpha)
#ifdef WAIT
#undef WAIT
#endif /*WAIT */
#endif /*alpha */
#define WAIT 5 /* wait a while cursor */
#define MENU 6 /* menu cursor */
#define SELECT 7 /* dot cursor for f.move, etc. from menus */
#define DESTROY 8 /* skull and cross bones, f.destroy */
#define TOP 9
#define RIGHT 10
#define BOTTOM 11
#define LEFT 12
#define TOP_LEFT 13
#define TOP_RIGHT 14
#define BOTTOM_LEFT 15
#define BOTTOM_RIGHT 16
#define MAX_CURSORS 18
/* colormap focus styes */
#define COLORMAP_FOLLOWS_MOUSE 1 /* default */
#define COLORMAP_FOLLOWS_FOCUS 2
#ifndef NON_VIRTUAL
typedef struct
{
Window win;
int isMapped;
} PanFrame;
#endif
typedef struct ScreenInfo
{
unsigned long screen;
int d_depth; /* copy of DefaultDepth(dpy, screen) */
int NumberOfScreens; /* number of screens on display */
int MyDisplayWidth; /* my copy of DisplayWidth(dpy, screen) */
int MyDisplayHeight; /* my copy of DisplayHeight(dpy, screen) */
FvwmWindow FvwmRoot; /* the head of the fvwm window list */
Window Root; /* the root window */
Window SizeWindow; /* the resize dimensions window */
Window NoFocusWin; /* Window which will own focus when no other
* windows have it */
#ifndef NON_VIRTUAL
PanFrame PanFrameTop,PanFrameLeft,PanFrameRight,PanFrameBottom;
#endif
Pixmap gray_bitmap; /*dark gray pattern for shaded out menu items*/
Pixmap gray_pixmap; /* dark gray pattern for inactive borders */
Pixmap light_gray_pixmap; /* light gray pattern for inactive borders */
Pixmap sticky_gray_pixmap; /* light gray pattern for sticky borders */
Binding *AllBindings;
MenuRoot *AllMenus;
int root_pushes; /* current push level to install root
colormap windows */
FvwmWindow *pushed_window; /* saved window to install when pushes drops
to zero */
Cursor FvwmCursors[MAX_CURSORS];
name_list *TheList; /* list of window names with attributes */
char *DefaultIcon; /* Icon to use when no other icons are found */
ColorQuad MenuColors;
ColorPair SelColors;
ColorQuad WinColors;
ColorPair TitleColors;
ColorPair ActiveTitleColors;
ColorPair StickyColors; /* sticky windows fore/back title bar colors */
MyFont StdFont; /* font structure */
MyFont WindowFont; /* font structure for window titles */
MyFont IconFont; /* for icon labels */
GC DrawGC; /* GC to draw lines for move and resize */
GC WinGC;
GC WinReliefGC;
GC WinShadowGC;
GC MenuGC;
GC MenuReliefGC;
GC MenuShadowGC;
GC SelGC;
GC HiGC;
GC ScratchGC1;
GC ScratchGC2;
GC ScratchGC3;
GC BlackGC;
int SizeStringWidth; /* minimum width of size window */
int CornerWidth; /* corner width for decoratedwindows */
int BoundaryWidth; /* frame width for decorated windows */
int NoBoundaryWidth; /* frame width for decorated windows */
int TitleHeight; /* height of the title bar window */
FvwmWindow *Hilite; /* the fvwm window that is highlighted
* except for networking delays, this is the
* window which REALLY has the focus */
FvwmWindow *Focus; /* Last window which Fvwm gave the focus to
* NOT the window that really has the focus */
Window UnknownWinFocused; /* None, if the focus is nowhere or on an fvwm
* managed window. Set to id of otherwindow
* with focus otherwise */
FvwmWindow *Ungrabbed;
FvwmWindow *PreviousFocus; /* Window which had focus before fvwm stole it
* to do moves/menus/etc. */
int EntryHeight; /* menu entry height */
int EdgeScrollX; /* #pixels to scroll on screen edge */
int EdgeScrollY; /* #pixels to scroll on screen edge */
unsigned char buttons2grab; /* buttons to grab in click to focus mode */
unsigned long flags;
int NumBoxes;
int randomx; /* values used for randomPlacement */
int randomy;
FvwmWindow *LastWindowRaised; /* Last window which was raised. Used for raise
* lower func. */
int VxMax; /* Max location for top left of virt desk*/
int VyMax;
int Vx; /* Current loc for top left of virt desk */
int Vy;
int nr_left_buttons; /* number of left-side title-bar buttons */
int nr_right_buttons; /* number of right-side title-bar buttons */
int button_width;
int button_height;
Pixmap button_pixmap[10];
int ClickTime; /*Max button-click delay for Function built-in*/
int ScrollResistance; /* resistance to scrolling in desktop */
int MoveResistance; /* res to moving windows over viewport edge */
int OpaqueSize;
int CurrentDesk; /* The current desktop number */
int ColormapFocus; /* colormap focus style */
} ScreenInfo;
extern ScreenInfo Scr;
/* for the titlestyle values: */
#define JUSTIFY_CENTER 0
#define JUSTIFY_LEFT 1
#define JUSTIFY_RIGHT 2
#define TITLE_RAISED 0
#define TITLE_SUNK 1
#define TITLE_FLAT 2
#define TITLE_MWM 3
/* for the flags value - these used to be seperate Bool's */
#define WindowsCaptured (1)
#define EdgeWrapX (64) /* Should EdgeScroll wrap around? */
#define EdgeWrapY (128)
/*#define MWMMenus (1024)*/
#endif /* _SCREEN_ */
|