--- sapphire-0.15.8.orig/windowmanager.hh
+++ sapphire-0.15.8/windowmanager.hh
@@ -1,216 +1,217 @@
-/*
- * Copyright (C) 1999,2000,2001 Frank Hale
- * frankhale@yahoo.com
- * http://sapphire.sourceforge.net/
- *
- * Updated: 3 Nov 2001
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-
-#ifndef _WM_HH_
-#define _WM_HH_
-
-#include "sapphire.hh"
-
-class WindowManager 
-{
-
-private: /* variables */
-
-	LinkedList<BaseMenu> *menulist;
-	LinkedList<BaseMenu> *extramenulist;
-	LinkedList<Client>   *ClientList;
-
-	Client		*head_client;	
-
-	Toolbar  	*t;
-	IconMenu 	*im;
-	RootMenu 	*rm;	
-	Theme 	 	*theme;
-	BImageControl 	*image_control;
-	BaseMenu 	*menu;
-
-	Atom		xa_wm_state;
-	Atom		xa_wm_change_state;
-	Atom		xa_wm_protos;
-        Atom		xa_wm_delete;
-	Atom		xa_wm_cmapwins;
-	Atom		xa_wm_take_focus;
-	Atom		xa_wm_motif_hints;
-
-	Window		root;
-	
-	Display		*dpy;
-	
-	Visual 		*visual;
-	
-	Pixmap		font_pix;
-		
-	XFontStruct	*xfont;	
-
-	XGCValues 	gv;
-	
-	XColor		xforeground_color;
-	XColor		xbackground_color; 
-	XColor		xborder_color;
-
-	GC		invert_gc;
-	GC		string_gc;
-	GC		border_gc;
-
-	Cursor		move_curs;
-	Cursor		resize_curs;
-	Cursor		left_arrow;
-	
-	char 		*display;
-	char 		*font;
-	char 		*menufont;
-	char 		*foreground_color;
-	char 		*background_color;
-	char 		*border_color;
-
-	int		depth;
-	int		xres;
-	int 		yres;
-	int		shape_event;
-	int 		colors_per_channel;
-	int 		toolbar_position;
-	int 		toolbar_visible;
-	int		screen;
-	int		iheight;
-	int 		font_position;
-
-	bool 		image_dither;
-	bool		shape;
-	bool 		menu_event;
-
-	// Configuration file stuff
-        char		*clock_format;
-	char		*configurationPath;
-	char		*windowmanager_conf;
-
-	static KeySym 	AltKeys[];
-public: 
-
-	// member functions below
-	
-	WindowManager(int argc, char **argv);
-	~WindowManager();
-
-	XColor 	getBorderColor()     	const { return xborder_color; }
-	XColor 	getForegroundColor() 	const { return xforeground_color; }
-	XColor 	getBackgroundColor() 	const { return xbackground_color; }
-	
-	GC 	getInvertGC() 		const { return invert_gc; }
-	GC 	getStringGC() 		const { return string_gc; }
-	GC 	getBorderGC() 		const { return border_gc; }
-	
-	int 	getIHeight() 		const { return iheight; }
-	char*  	getMenuFont() 	    	const { return menufont; }
-	
-	Cursor 	getMoveCursor() 	const { return move_curs; }
-	Cursor 	getResizeCursor() 	const { return resize_curs; }
-	Cursor 	getLeftArrowCursor() 	const { return left_arrow; }
-	
-	XFontStruct* getXFont() 	const { return xfont; }
-
-	bool getShape() 		const { return shape; }
-	
-	void setShape(bool s) { shape=s; }
-	
-	int getFontPosition() const { return font_position; }
-
-	Theme* getTheme() const { return theme; }
-
-	void changeTheme(char* themeFile);
-
-	// Client List member functions
-	void insertClient(Client *c) { ClientList->insert(c); }
-	void removeClient(Client *c) { ClientList->remove(c); }
-
-	unsigned int getClientCount() const { return ClientList->count(); }
-	LinkedList<Client>* getClientListObject() const { return ClientList; }
-
-	// Server Grab member functions	
-	void Grab() { XGrabServer(dpy); }
-	void Ungrab() { XUngrabServer(dpy); }
-	void SyncUngrab() { XSync(dpy, False); XUngrabServer(dpy); }
-
-	void addToMenuList(BaseMenu *m) { menulist->insert(m); }
-	void addToExtraMenuList(BaseMenu *m) { extramenulist->insert(m); }
-	void reconfigureMenu();
-	void removeFromMenuList(BaseMenu *m) { menulist->remove(m); }
-	LinkedList<BaseMenu>* getMenuList() { return menulist; }		
-	BaseMenu* findInMenuList(Window *w);
-		
-  	Atom getWMChangeStateAtom() const { return xa_wm_change_state; }
-  	Atom getWMStateAtom() const       { return xa_wm_state; }
-  	Atom getWMDeleteAtom() const      { return xa_wm_delete; }
- 	Atom getWMProtocolsAtom() const   { return xa_wm_protos; }
-  	Atom getWMFocusAtom() const       { return xa_wm_take_focus; }
-  	Atom getWMColormapAtom() const    { return xa_wm_cmapwins; }
-	Atom getMotifWMHintsAtom() const      { return xa_wm_motif_hints; }
-
-	int 	getDepth() const { return depth; }
-	int	getScreen() const { return screen; }
-	Visual* getVisual() const { return visual; }
-	int	getColorsPerChannel() const { return colors_per_channel; }
-	bool    getImageDither() const { return image_dither; }
-	BImageControl *getImageControl() const { return image_control; }
-
-	Display* getDisplay() const { return dpy; }
-	Window  getRootWindow() const { return root; }
-
-	RootMenu* getRootMenu() const { return rm; }
-	IconMenu* getIconMenu() const { return im; }
-	Toolbar*  getToolbar() const { return t; }
-
-	void grabPointer(Window w, unsigned int mask, Cursor curs);
-	void ungrabPointer();
-
-	void quit_nicely();
-	void restart();
-	
-	int getXRes() const { return xres; }
-	int getYRes() const { return yres; }
-
-	char* getClockFormat() const { return clock_format; }
-	//void handleKeyPress(XEvent *ev);
-
-	// desktop is from 0 to 15, inclusive (not a bit mask like in changeDesktop)
-	void goToDesktop(int desktop);
-	void goToNextDesktop();
-	void goToPreviousDesktop();
-
-	void setMenu(BaseMenu* bm) { menu=bm; }
-	void setMenuEvent(bool me) { menu_event=me; }
-
-private: /* member functions */
-	
-	int QueryShapeExtentions();
-	
-	void scan_windows();
-	void do_event_loop();	
-	void createFontPixmap();
-	void createMenuFontPixmap();
-	void saveCurrentTheme();
-	void getCurrentTheme();
-};
-
-extern WindowManager *wm;
-
-#endif
+/*
+ * Copyright (C) 1999,2000,2001 Frank Hale
+ * frankhale@yahoo.com
+ * http://sapphire.sourceforge.net/
+ *
+ * Updated: 3 Nov 2001
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+
+#ifndef _WM_HH_
+#define _WM_HH_
+
+#include "sapphire.hh"
+
+class WindowManager 
+{
+
+private: /* variables */
+
+	LinkedList<BaseMenu> *menulist;
+	LinkedList<BaseMenu> *extramenulist;
+	LinkedList<Client>   *ClientList;
+
+	Client		*head_client;	
+
+	Toolbar  	*t;
+	IconMenu 	*im;
+	RootMenu 	*rm;	
+	Theme 	 	*theme;
+	BImageControl 	*image_control;
+	BaseMenu 	*menu;
+
+	Atom		xa_wm_state;
+	Atom		xa_wm_change_state;
+	Atom		xa_wm_protos;
+        Atom		xa_wm_delete;
+	Atom		xa_wm_cmapwins;
+	Atom		xa_wm_take_focus;
+	Atom		xa_wm_motif_hints;
+
+	Window		root;
+	
+	Display		*dpy;
+	
+	Visual 		*visual;
+	
+	Pixmap		font_pix;
+		
+	XFontStruct	*xfont;	
+
+	XGCValues 	gv;
+	
+	XColor		xforeground_color;
+	XColor		xbackground_color; 
+	XColor		xborder_color;
+
+	GC		invert_gc;
+	GC		string_gc;
+	GC		border_gc;
+
+	Cursor		move_curs;
+	Cursor		resize_curs;
+	Cursor		left_arrow;
+	
+	char 		*display;
+	char 		*font;
+	char 		*menufont;
+	char 		*foreground_color;
+	char 		*background_color;
+	char 		*border_color;
+
+	int		depth;
+	int		xres;
+	int 		yres;
+	int		shape_event;
+	int 		colors_per_channel;
+	int 		toolbar_position;
+	int 		toolbar_visible;
+	int		screen;
+	int		iheight;
+	int 		font_position;
+
+	bool 		image_dither;
+	bool		shape;
+	bool 		menu_event;
+
+	// Configuration file stuff
+        char		*clock_format;
+	char		*configurationPath;
+	char		*windowmanager_conf;
+
+	static KeySym 	AltKeys[];
+public: 
+
+	// member functions below
+	
+	WindowManager(int argc, char **argv);
+	~WindowManager();
+
+	XColor 	getBorderColor()     	const { return xborder_color; }
+	XColor 	getForegroundColor() 	const { return xforeground_color; }
+	XColor 	getBackgroundColor() 	const { return xbackground_color; }
+	
+	GC 	getInvertGC() 		const { return invert_gc; }
+	GC 	getStringGC() 		const { return string_gc; }
+	GC 	getBorderGC() 		const { return border_gc; }
+	
+	int 	getIHeight() 		const { return iheight; }
+	char*  	getMenuFont() 	    	const { return menufont; }
+	
+	Cursor 	getMoveCursor() 	const { return move_curs; }
+	Cursor 	getResizeCursor() 	const { return resize_curs; }
+	Cursor 	getLeftArrowCursor() 	const { return left_arrow; }
+	
+	XFontStruct* getXFont() 	const { return xfont; }
+
+	bool getShape() 		const { return shape; }
+	
+	void setShape(bool s) { shape=s; }
+	
+	int getFontPosition() const { return font_position; }
+
+	Theme* getTheme() const { return theme; }
+
+	void changeTheme(char* themeFile);
+
+	// Client List member functions
+	void insertClient(Client *c) { ClientList->insert(c); }
+	void removeClient(Client *c) { ClientList->remove(c); }
+
+	unsigned int getClientCount() const { return ClientList->count(); }
+	LinkedList<Client>* getClientListObject() const { return ClientList; }
+
+	// Server Grab member functions	
+	void Grab() { XGrabServer(dpy); }
+	void Ungrab() { XUngrabServer(dpy); }
+	void SyncUngrab() { XSync(dpy, False); XUngrabServer(dpy); }
+
+	void addToMenuList(BaseMenu *m) { menulist->insert(m); }
+	void addToExtraMenuList(BaseMenu *m) { extramenulist->insert(m); }
+	void reconfigureMenu();
+	void removeFromMenuList(BaseMenu *m) { menulist->remove(m); }
+	LinkedList<BaseMenu>* getMenuList() { return menulist; }		
+	BaseMenu* findInMenuList(Window *w);
+		
+  	Atom getWMChangeStateAtom() const { return xa_wm_change_state; }
+  	Atom getWMStateAtom() const       { return xa_wm_state; }
+  	Atom getWMDeleteAtom() const      { return xa_wm_delete; }
+ 	Atom getWMProtocolsAtom() const   { return xa_wm_protos; }
+  	Atom getWMFocusAtom() const       { return xa_wm_take_focus; }
+  	Atom getWMColormapAtom() const    { return xa_wm_cmapwins; }
+	Atom getMotifWMHintsAtom() const      { return xa_wm_motif_hints; }
+
+	int 	getDepth() const { return depth; }
+	int	getScreen() const { return screen; }
+	Visual* getVisual() const { return visual; }
+	int	getColorsPerChannel() const { return colors_per_channel; }
+	bool    getImageDither() const { return image_dither; }
+	BImageControl *getImageControl() const { return image_control; }
+
+	Display* getDisplay() const { return dpy; }
+	Window  getRootWindow() const { return root; }
+
+	RootMenu* getRootMenu() const { return rm; }
+	IconMenu* getIconMenu() const { return im; }
+	Toolbar*  getToolbar() const { return t; }
+
+	void grabPointer(Window w, unsigned int mask, Cursor curs);
+	void ungrabPointer();
+
+	void quit_nicely();
+	void restart();
+	void start_another_windowmanager(char * wmCommand);
+	
+	int getXRes() const { return xres; }
+	int getYRes() const { return yres; }
+
+	char* getClockFormat() const { return clock_format; }
+	//void handleKeyPress(XEvent *ev);
+
+	// desktop is from 0 to 15, inclusive (not a bit mask like in changeDesktop)
+	void goToDesktop(int desktop);
+	void goToNextDesktop();
+	void goToPreviousDesktop();
+
+	void setMenu(BaseMenu* bm) { menu=bm; }
+	void setMenuEvent(bool me) { menu_event=me; }
+
+private: /* member functions */
+	
+	int QueryShapeExtentions();
+	
+	void scan_windows();
+	void do_event_loop();	
+	void createFontPixmap();
+	void createMenuFontPixmap();
+	void saveCurrentTheme();
+	void getCurrentTheme();
+};
+
+extern WindowManager *wm;
+
+#endif
