--- a/Border.C +++ b/Border.C @@ -183,7 +183,7 @@ if (m_label) free(m_label); m_label = m_client->iconName() ? - NewString(m_client->iconName()) : NewString("incognito"); + NewString(m_client->iconName()) : NewString(CONFIG_INCOGNITO); int len = strlen(m_label); m_tabHeight = XRotTextWidth(m_tabFont, m_label, len) + 6 + m_tabWidth; --- a/Buttons.C +++ b/Buttons.C @@ -139,7 +139,11 @@ (allowExit && ((n) > clients.count())) ? "[Exit wm2]" \ : clients.item((n)-1)->label()) +#ifdef CONFIG_MENU_REVERSE + for (i = m_hiddenClients.count() - 1; i>=0; --i) { +#else for (i = 0; i < m_hiddenClients.count(); ++i) { +#endif clients.append(m_hiddenClients.item(i)); } int nh = clients.count() + 1; --- a/Client.C +++ b/Client.C @@ -4,7 +4,7 @@ #include -const char *const Client::m_defaultLabel = "incognito"; +const char *const Client::m_defaultLabel = CONFIG_INCOGNITO; @@ -400,7 +400,7 @@ } -int Client::getAtomProperty(Atom a, Atom type) +uintptr_t Client::getAtomProperty(Atom a, Atom type) { char **p, *x; if (getProperty_aux(display(), m_window, a, type, 1L, @@ -410,7 +410,7 @@ x = *p; XFree((void *)p); - return (int)x; + return (uintptr_t)x; } --- a/Client.h +++ b/Client.h @@ -2,6 +2,8 @@ #ifndef _CLIENT_H_ #define _CLIENT_H_ +#include + #include "General.h" #include "Manager.h" #include "Border.h" @@ -125,7 +127,7 @@ WindowManager *const m_windowManager; char *getProperty(Atom); - int getAtomProperty(Atom, Atom); + uintptr_t getAtomProperty(Atom, Atom); int getIntegerProperty(Atom); // accessors --- a/Config.h +++ b/Config.h @@ -39,6 +39,9 @@ #define CONFIG_FRAME_THICKNESS 7 +#define CONFIG_INCOGNITO "incognito" +#define CONFIG_MENU_REVERSE + // If CONFIG_PROD_SHAPE is True, all frame element shapes will be // recalculated afresh every time their focus changes. This will // probably slow things down hideously, but has been reported as @@ -46,4 +49,3 @@ #define CONFIG_PROD_SHAPE False #endif - --- a/General.h +++ b/General.h @@ -32,7 +32,7 @@ #define NewString(x) (strcpy((char *)malloc(strlen(x)+1),(x))) #ifndef SIGNAL_CALLBACK_TYPE -#define SIGNAL_CALLBACK_TYPE (void (*)(...)) +#define SIGNAL_CALLBACK_TYPE (void (*)(int)) #endif #define signal(x,y) \ --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ -LIBS = -L/usr/X11/lib -lXext -lX11 -lXmu -lm +LIBS = -L/usr/X11R6/lib -lXext -lX11 -lXmu -lm CC = gcc -CCC = gcc +CCC = g++ CFLAGS = -O2 OBJECTS = Border.o Buttons.o Client.o Events.o Main.o Manager.o Rotated.o --- a/Manager.C +++ b/Manager.C @@ -368,7 +368,7 @@ return m_currentTime; } -void WindowManager::sigHandler() +void WindowManager::sigHandler(int n) { m_signalled = True; } --- a/Manager.h +++ b/Manager.h @@ -85,7 +85,7 @@ static Boolean m_initialising; static int errorHandler(Display *, XErrorEvent *); - static void sigHandler(); + static void sigHandler(int); static int m_signalled; void initialiseScreen();