xsrc/external/mit/ctwm/dist/workmgr.h
2015-10-15 21:39:42 +02:00

230 lines
7.5 KiB
C

/*
* [ ctwm ]
*
* Copyright 1992 Claude Lecommandeur.
*
* Permission to use, copy, modify and distribute this software [ctwm] and
* its documentation for any purpose is hereby granted without fee, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting documen-
* tation, and that the name of Claude Lecommandeur not be used in adverti-
* sing or publicity pertaining to distribution of the software without
* specific, written prior permission. Claude Lecommandeur make no represen-
* tations about the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
* Claude Lecommandeur DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL Claude Lecommandeur 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.
*
* Author: Claude Lecommandeur [ lecom@sic.epfl.ch ][ April 1992 ]
*/
#ifdef GNOME
/* 6/19/1999 nhd for GNOME compliance */
#include "gnome.h"
#endif /* GNOME */
#include "vscreen.h"
#ifndef _WORKMGR_
#define _WORKMGR_
#define MAXWORKSPACE 32
#define MAPSTATE 0
#define BUTTONSSTATE 1
#define STYLE_NORMAL 0
#define STYLE_STYLE1 1
#define STYLE_STYLE2 2
#define STYLE_STYLE3 3
struct winList {
struct WorkSpace *wlist;
Window w;
int x, y;
int width, height;
TwmWindow *twm_win;
ColorPair cp;
MyFont font;
struct winList *next;
};
struct WorkSpaceMgr {
struct WorkSpace *workSpaceList;
struct WorkSpaceWindow *workSpaceWindowList;
struct OccupyWindow *occupyWindow;
MyFont buttonFont;
MyFont windowFont;
ColorPair windowcp;
Bool windowcpgiven;
ColorPair cp;
long count;
char *geometry;
int lines, columns;
int noshowoccupyall;
int initialstate;
short buttonStyle;
name_list *windowBackgroundL;
name_list *windowForegroundL;
/* The fields below have been moved from WorkSpaceWindow */
ColorPair curColors;
Image *curImage;
unsigned long curBorderColor;
Bool curPaint;
ColorPair defColors;
Image *defImage;
unsigned long defBorderColor;
int hspace, vspace;
char *name;
char *icon_name;
};
struct WorkSpace {
long number;
char *name;
char *label;
Image *image;
name_list *clientlist;
IconMgr *iconmgr;
ColorPair cp;
ColorPair backcp;
TwmWindow *save_focus; /* Used by SaveWorkspaceFocus feature */
struct WindowRegion *FirstWindowRegion;
struct WorkSpace *next;
};
struct MapSubwindow {
Window w;
int x, y;
WinList wl;
};
struct ButtonSubwindow {
Window w;
};
struct WorkSpaceWindow { /* There is one per virtual screen */
virtualScreen *vs;
Window w;
TwmWindow *twm_win;
MapSubwindow **mswl; /* MapSubWindow List */
ButtonSubwindow **bswl; /* ButtonSubwindow List */
WorkSpace *currentwspc;
int state;
int width, height;
int bwidth, bheight;
int wwidth, wheight;
};
struct OccupyWindow {
Window w;
TwmWindow *twm_win;
char *geometry;
Window *obuttonw;
Window OK, cancel, allworkspc;
int width, height;
char *name;
char *icon_name;
int lines, columns;
int hspace, vspace; /* space between workspaces */
int bwidth, bheight;
int owidth; /* oheight == bheight */
ColorPair cp;
MyFont font;
int tmpOccupation;
};
struct CaptiveCTWM {
Window root;
String name;
};
void InitWorkSpaceManager (void);
void ConfigureWorkSpaceManager (void);
void CreateWorkSpaceManager (void);
void GotoWorkSpaceByName (virtualScreen *vs, char *wname);
void GotoWorkSpaceByNumber (virtualScreen *vs, int workspacenum);
void GotoPrevWorkSpace (virtualScreen *vs);
void GotoNextWorkSpace (virtualScreen *vs);
void GotoRightWorkSpace (virtualScreen *vs);
void GotoLeftWorkSpace (virtualScreen *vs);
void GotoUpWorkSpace (virtualScreen *vs);
void GotoDownWorkSpace (virtualScreen *vs);
void GotoWorkSpace (virtualScreen *vs, WorkSpace *ws);
void AddWorkSpace (char *name,
char *background, char *foreground,
char *backback, char *backfore, char *backpix);
void SetupOccupation (TwmWindow *twm_win, int occupation_hint);
void Occupy (TwmWindow *twm_win);
void OccupyHandleButtonEvent (XEvent *event);
void OccupyAll (TwmWindow *twm_win);
void AddToWorkSpace (char *wname, TwmWindow *twm_win);
void RemoveFromWorkSpace (char *wname, TwmWindow *twm_win);
void ToggleOccupation (char *wname, TwmWindow *twm_win);
void AllocateOthersIconManagers (void);
void ChangeOccupation (TwmWindow *tmp_win, int newoccupation);
void WmgrRedoOccupation (TwmWindow *win);
void WMgrRemoveFromCurrentWorkSpace (virtualScreen *vs, TwmWindow *win);
#ifdef VMS /* Because that name is longer than 31 characters */
#define WMgrAddToCurrentWorkSpaceAndWarp WMgrAddToCurrWorkSpaceAndWarp
#endif
void WMgrAddToCurrentWorkSpaceAndWarp (virtualScreen *vs, char *winname);
void WMgrHandleExposeEvent (virtualScreen *vs, XEvent *event);
void PaintWorkSpaceManager (virtualScreen *vs);
void PaintOccupyWindow (void);
unsigned int GetMaskFromProperty (unsigned char *prop, unsigned long len);
void AddToClientsList (char *workspace, char *client);
void WMapToggleState (virtualScreen *vs);
void WMapSetMapState (virtualScreen *vs);
void WMapSetButtonsState (virtualScreen *vs);
void WMapAddWindow (TwmWindow *win);
void WMapDestroyWindow (TwmWindow *win);
void WMapMapWindow (TwmWindow *win);
void WMapSetupWindow (TwmWindow *win, int x, int y, int w, int h);
void WMapIconify (TwmWindow *win);
void WMapDeIconify (TwmWindow *win);
void WMapRaiseLower (TwmWindow *win);
void WMapLower (TwmWindow *win);
void WMapRaise (TwmWindow *win);
void WMapRestack (WorkSpace *ws);
void WMapUpdateIconName (TwmWindow *win);
void WMgrHandleKeyReleaseEvent (virtualScreen *vs, XEvent *event);
void WMgrHandleKeyPressEvent (virtualScreen *vs, XEvent *event);
void WMgrHandleButtonEvent (virtualScreen *vs, XEvent *event);
void InvertColorPair (ColorPair *cp);
void WMapRedrawName (virtualScreen *vs, WinList wl);
void WMapCreateCurrentBackGround (char *border,
char *background, char *foreground,
char *pixmap);
void WMapCreateDefaultBackGround (char *border,
char *background, char *foreground,
char *pixmap);
char *GetCurrentWorkSpaceName (virtualScreen *vs);
Bool AnimateRoot (void);
void AddToCaptiveList (void);
void RemoveFromCaptiveList (void);
Bool RedirectToCaptive (Window window);
void SetPropsIfCaptiveCtwm (TwmWindow *win);
Window CaptiveCtwmRootWindow (Window window);
void MoveToNextWorkSpace (virtualScreen *vs, TwmWindow *twm_win);
void MoveToPrevWorkSpace (virtualScreen *vs, TwmWindow *twm_win);
void MoveToNextWorkSpaceAndFollow (virtualScreen *vs, TwmWindow *twm_win);
void MoveToPrevWorkSpaceAndFollow (virtualScreen *vs, TwmWindow *twm_win);
CaptiveCTWM GetCaptiveCTWMUnderPointer (void);
void SetNoRedirect (Window window);
extern void ShowBackground (virtualScreen *vs);
Bool visible (TwmWindow *tmp_win);
#endif /* _WORKMGR_ */