mirror of
https://github.com/Stichting-MINIX-Research-Foundation/xsrc.git
synced 2025-09-23 19:54:23 -04:00
230 lines
7.5 KiB
C
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_ */
|