wmbutton: wmbutton.h and wmb_libs.c code clean
This patch is a code clean patch: - Removes spaces and tabs at end of line. - Remove curly brackets not needed. - Change spaces by tabs. - Add spaces after and before operators. - Removes spaces not needed. - Better code style. - Added void as function argument.
This commit is contained in:
		
							parent
							
								
									cc68392ccb
								
							
						
					
					
						commit
						1400c7f7a6
					
				
					 2 changed files with 603 additions and 573 deletions
				
			
		| 
						 | 
					@ -15,7 +15,6 @@
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include "wmbutton.h"
 | 
					#include "wmbutton.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/****** ToolTip Globals ***********************************************/
 | 
					/****** ToolTip Globals ***********************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct timeval _tStart;
 | 
					static struct timeval _tStart;
 | 
				
			||||||
| 
						 | 
					@ -25,11 +24,12 @@ int _bTooltip = 0;
 | 
				
			||||||
XFontStruct* _fTooltip;
 | 
					XFontStruct* _fTooltip;
 | 
				
			||||||
int _nFontHeight, _nFontY;
 | 
					int _nFontHeight, _nFontY;
 | 
				
			||||||
int _nScreenWidth, _nScreenHeight;
 | 
					int _nScreenWidth, _nScreenHeight;
 | 
				
			||||||
GC _gcMono= 0;
 | 
					GC _gcMono = 0;
 | 
				
			||||||
Window _wTooltip;
 | 
					Window _wTooltip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/****** Parse Command Line ********************************************/
 | 
					/****** Parse Command Line ********************************************/
 | 
				
			||||||
void parseargs(int argc, char **argv) {
 | 
					void parseargs(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	int current;
 | 
						int current;
 | 
				
			||||||
	char *Home = getenv("HOME");
 | 
						char *Home = getenv("HOME");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,16 +71,16 @@ void parseargs(int argc, char **argv) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!Config.configfile) {
 | 
						if (!Config.configfile) {
 | 
				
			||||||
		if (Home != NULL) {
 | 
							if (Home != NULL) {
 | 
				
			||||||
      Config.configfile = malloc(
 | 
								Config.configfile = malloc(strlen(Home) +
 | 
				
			||||||
          strlen(Home) + strlen(CONFFILENAME) + 1);
 | 
											   strlen(CONFFILENAME) + 1);
 | 
				
			||||||
			sprintf(Config.configfile, "%s%s", Home, CONFFILENAME);
 | 
								sprintf(Config.configfile, "%s%s", Home, CONFFILENAME);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!Config.buttonfile) {
 | 
						if (!Config.buttonfile) {
 | 
				
			||||||
		if (Home != NULL) {
 | 
							if (Home != NULL) {
 | 
				
			||||||
      Config.buttonfile = malloc(
 | 
								Config.buttonfile = malloc(strlen(Home) +
 | 
				
			||||||
          strlen(Home) + strlen(BUTTONFILENAME) + 1);
 | 
											   strlen(BUTTONFILENAME) + 1);
 | 
				
			||||||
			sprintf(Config.buttonfile, "%s%s", Home, BUTTONFILENAME);
 | 
								sprintf(Config.buttonfile, "%s%s", Home, BUTTONFILENAME);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -100,51 +100,52 @@ void parseargs(int argc, char **argv) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/****** Show Usage Information ****************************************/
 | 
					/****** Show Usage Information ****************************************/
 | 
				
			||||||
void show_usage() {
 | 
					void show_usage(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern char *app_name;
 | 
						extern char *app_name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fprintf(stderr,"\n");
 | 
						fprintf(stderr, "\n");
 | 
				
			||||||
  fprintf(stderr,"usage: %s [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] "\
 | 
						fprintf(stderr, "usage: %s [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] "\
 | 
				
			||||||
		"[-F <font>] [-v] [-s] [-n]\n",app_name);
 | 
							"[-F <font>] [-v] [-s] [-n]\n",app_name);
 | 
				
			||||||
  fprintf(stderr,"\n");
 | 
						fprintf(stderr, "\n");
 | 
				
			||||||
  fprintf(stderr," wmbutton version %s\n", VER_STR);
 | 
						fprintf(stderr, " wmbutton version %s\n", VER_STR);
 | 
				
			||||||
  fprintf(stderr,"\n");
 | 
						fprintf(stderr, "\n");
 | 
				
			||||||
  fprintf(stderr,"-g <geometry>  Window Geometry - ie: 64x64+10+10\n");
 | 
						fprintf(stderr, "-g <geometry>  Window Geometry - ie: 64x64+10+10\n");
 | 
				
			||||||
  fprintf(stderr,"-d <display>   Display -  ie: 127.0.0.1:0.0\n"); 
 | 
						fprintf(stderr, "-d <display>   Display - ie: 127.0.0.1:0.0\n");
 | 
				
			||||||
  fprintf(stderr,"-f <filename>  Full path to configuration file.\n");
 | 
						fprintf(stderr, "-f <filename>  Full path to configuration file.\n");
 | 
				
			||||||
  fprintf(stderr,"-b <filename>  Full path to button xpm.\n");
 | 
						fprintf(stderr, "-b <filename>  Full path to button xpm.\n");
 | 
				
			||||||
  fprintf(stderr,"-F <font>      Custom tooltip font (e.g. -b\\&h-lucidatypewriter-medium-*-*-*-12-*)\n");
 | 
						fprintf(stderr, "-F <font>      Custom tooltip font (e.g. -b\\&h-lucidatypewriter-medium-*-*-*-12-*)\n");
 | 
				
			||||||
  fprintf(stderr,"-v             Verbose Mode.\n");
 | 
						fprintf(stderr, "-v             Verbose Mode.\n");
 | 
				
			||||||
  fprintf(stderr,"-h             Help. This message.\n");
 | 
						fprintf(stderr, "-h             Help. This message.\n");
 | 
				
			||||||
  fprintf(stderr,"-m             Disable Middle Mouse functionality.\n");
 | 
						fprintf(stderr, "-m             Disable Middle Mouse functionality.\n");
 | 
				
			||||||
  fprintf(stderr,"-s             Swap tooltip colors.\n");
 | 
						fprintf(stderr, "-s             Swap tooltip colors.\n");
 | 
				
			||||||
  fprintf(stderr,"-n             Turn off tooltips.\n");
 | 
						fprintf(stderr, "-n             Turn off tooltips.\n");
 | 
				
			||||||
  fprintf(stderr,"\n");
 | 
						fprintf(stderr, "\n");
 | 
				
			||||||
	exit(0);
 | 
						exit(0);
 | 
				
			||||||
}/***********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/***********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/****** Error Handler Routine *****************************************/
 | 
					/****** Error Handler Routine *****************************************/
 | 
				
			||||||
void err_mess(int err, char *str) {
 | 
					void err_mess(int err, char *str)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	switch (err) {
 | 
						switch (err) {
 | 
				
			||||||
	case FAILDISP:
 | 
						case FAILDISP:
 | 
				
			||||||
    fprintf(stderr,"Fail: XOpenDisplay for %s\n", str);	
 | 
							fprintf(stderr, "Fail: XOpenDisplay for %s\n", str);
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	case FAILSWIN:
 | 
						case FAILSWIN:
 | 
				
			||||||
    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
 | 
							fprintf(stderr, "Fail: XCreateSimpleWindow\n");
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	case FAILICON:
 | 
						case FAILICON:
 | 
				
			||||||
    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
 | 
							fprintf(stderr, "Fail: XCreateSimpleWindow\n");
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	case FAILXPM:
 | 
						case FAILXPM:
 | 
				
			||||||
    fprintf(stderr,"Fail: XCreateBitmapFromData\n");
 | 
							fprintf(stderr, "Fail: XCreateBitmapFromData\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case FAILWNAM:
 | 
						case FAILWNAM:
 | 
				
			||||||
    fprintf(stderr,"%s: Can't set up window name\n", str);
 | 
							fprintf(stderr, "%s: Can't set up window name\n", str);
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	case FAILGC:
 | 
						case FAILGC:
 | 
				
			||||||
    fprintf(stderr,"Fail: XCreateGC\n");	
 | 
							fprintf(stderr, "Fail: XCreateGC\n");
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	case FAILCONF:
 | 
						case FAILCONF:
 | 
				
			||||||
		fprintf(stderr, "Fail: Can't Find user or system configuration file.\n");
 | 
							fprintf(stderr, "Fail: Can't Find user or system configuration file.\n");
 | 
				
			||||||
| 
						 | 
					@ -161,38 +162,42 @@ void err_mess(int err, char *str) {
 | 
				
			||||||
		fprintf(stderr, "Fail: Can't Create 'buttons' Pixmap\n");
 | 
							fprintf(stderr, "Fail: Can't Create 'buttons' Pixmap\n");
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
    fprintf(stderr, "Fail:  UnSpecified Error: %d\n",err);
 | 
							fprintf(stderr, "Fail: UnSpecified Error: %d\n", err);
 | 
				
			||||||
    fprintf(stderr, "Fail:  %s\n",str);
 | 
							fprintf(stderr, "Fail: %s\n", str);
 | 
				
			||||||
		exit(err);
 | 
							exit(err);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
}/***********************************************************************/
 | 
					/***********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
 * RunAppN(int app)
 | 
					 * RunAppN(int app)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Run the command given in the configuration file 'configfile'
 | 
					 * Run the command given in the configuration file 'configfile'
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
void RunAppN( int app ) {
 | 
					void RunAppN(int app)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	char *cmndstr;
 | 
						char *cmndstr;
 | 
				
			||||||
	extern struct Config_t Config;
 | 
						extern struct Config_t Config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cmndstr = Parse(app);                  // Get command to pass to system
 | 
						cmndstr = Parse(app); /* Get command to pass to system */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Config.Verbose) fprintf(stderr, "Command String: %s", cmndstr);
 | 
						if (Config.Verbose)
 | 
				
			||||||
 | 
							fprintf(stderr, "Command String: %s", cmndstr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (cmndstr != NULL) {
 | 
						if (cmndstr != NULL) {
 | 
				
			||||||
    system(cmndstr);  // if there's a command, run it
 | 
							system(cmndstr); /* if there's a command, run it */
 | 
				
			||||||
		free(cmndstr);
 | 
							free(cmndstr);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}/***********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/***********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
 * Parse(int app)
 | 
					 * Parse(int app)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Parses the file 'configfile' for command to execute.
 | 
					 * Parses the file 'configfile' for command to execute.
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
char *Parse(int app) {
 | 
					char *Parse(int app)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	FILE *fp;
 | 
						FILE *fp;
 | 
				
			||||||
	char Buf[BUFFER_SIZE];
 | 
						char Buf[BUFFER_SIZE];
 | 
				
			||||||
	char *Ptr;
 | 
						char *Ptr;
 | 
				
			||||||
| 
						 | 
					@ -211,15 +216,19 @@ char *Parse(int app) {
 | 
				
			||||||
	if (!Ptr)
 | 
						if (!Ptr)
 | 
				
			||||||
		return Ptr;
 | 
							return Ptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Ptr = strchr(Buf, '\t');                      // find first tab
 | 
						Ptr = strchr(Buf, '\t');        /* find first tab */
 | 
				
			||||||
  if (Ptr == NULL) Ptr = strchr(Buf, ' ');      // or space charater
 | 
						if (Ptr == NULL)
 | 
				
			||||||
  if (Ptr == NULL) return(NULL);
 | 
							Ptr = strchr(Buf, ' '); /* or space charater */
 | 
				
			||||||
  Ptr++;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (Ptr == NULL)
 | 
				
			||||||
 | 
							return(NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Ptr++;
 | 
				
			||||||
	Ptr = strdup(Ptr);
 | 
						Ptr = strdup(Ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return(Ptr);
 | 
						return Ptr;
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
 * initTime
 | 
					 * initTime
 | 
				
			||||||
| 
						 | 
					@ -227,43 +236,45 @@ char *Parse(int app) {
 | 
				
			||||||
 * Copyright (c) 2001 Bruno Essmann <essmann@users.sourceforge.net>
 | 
					 * Copyright (c) 2001 Bruno Essmann <essmann@users.sourceforge.net>
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void initTime () {
 | 
					void initTime(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern struct Config_t Config;
 | 
						extern struct Config_t Config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Config.Verbose) {
 | 
						if (Config.Verbose)
 | 
				
			||||||
		fprintf(stdout, "[        ] initializing time\n");
 | 
							fprintf(stdout, "[        ] initializing time\n");
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gettimeofday(&_tStart, NULL);
 | 
						gettimeofday(&_tStart, NULL);
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
long currentTimeMillis () {
 | 
					long currentTimeMillis(void)
 | 
				
			||||||
  struct timeval tNow;
 | 
					{
 | 
				
			||||||
  struct timeval tElapsed;
 | 
						struct timeval tNow, tElapsed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gettimeofday(&tNow, NULL);
 | 
						gettimeofday(&tNow, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (_tStart.tv_usec > tNow.tv_usec) {
 | 
						if (_tStart.tv_usec > tNow.tv_usec) {
 | 
				
			||||||
    tNow.tv_usec+= 1000000;
 | 
							tNow.tv_usec += 1000000;
 | 
				
			||||||
		tNow.tv_sec--;
 | 
							tNow.tv_sec--;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  tElapsed.tv_sec= tNow.tv_sec - _tStart.tv_sec;
 | 
					
 | 
				
			||||||
  tElapsed.tv_usec= tNow.tv_usec - _tStart.tv_usec;
 | 
						tElapsed.tv_sec = tNow.tv_sec - _tStart.tv_sec;
 | 
				
			||||||
 | 
						tElapsed.tv_usec = tNow.tv_usec - _tStart.tv_usec;
 | 
				
			||||||
	return (tElapsed.tv_sec * 1000) + (tElapsed.tv_usec / 1000);
 | 
						return (tElapsed.tv_sec * 1000) + (tElapsed.tv_usec / 1000);
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void getWindowOrigin(Window w, int *nX, int *nY)
 | 
				
			||||||
void getWindowOrigin (Window w, int* nX, int* nY) {
 | 
					{
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
	Window wWindow, wParent, wRoot;
 | 
						Window wWindow, wParent, wRoot;
 | 
				
			||||||
	Window* wChildren;
 | 
						Window* wChildren;
 | 
				
			||||||
  unsigned int nChildren;
 | 
						unsigned int nChildren, ww, wh, wb, wd;
 | 
				
			||||||
  unsigned int ww, wh, wb, wd;
 | 
					 | 
				
			||||||
	int wx, wy;
 | 
						int wx, wy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  wParent= w;
 | 
						wParent = w;
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
    wWindow= wParent;
 | 
							wWindow = wParent;
 | 
				
			||||||
		if (!XQueryTree(display, wParent, &wRoot, &wParent, &wChildren, &nChildren))
 | 
							if (!XQueryTree(display, wParent, &wRoot, &wParent, &wChildren, &nChildren))
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -273,48 +284,54 @@ void getWindowOrigin (Window w, int* nX, int* nY) {
 | 
				
			||||||
	} while (wParent != wRoot);
 | 
						} while (wParent != wRoot);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (XGetGeometry(display, wWindow, &wRoot, &wx, &wy, &ww, &wh, &wb, &wd)) {
 | 
						if (XGetGeometry(display, wWindow, &wRoot, &wx, &wy, &ww, &wh, &wb, &wd)) {
 | 
				
			||||||
    if (nX) {
 | 
							if (nX)
 | 
				
			||||||
      *nX= wx;
 | 
								*nX = wx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (nY)
 | 
				
			||||||
 | 
								*nY = wy;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    if (nY) {
 | 
					}
 | 
				
			||||||
      *nY= wy;
 | 
					/**********************************************************************/
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}/**********************************************************************/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
 * getButtonLocation
 | 
					 * getButtonLocation
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * compute location for each button's tooltip (not perfect)
 | 
					 * compute location for each button's tooltip (not perfect)
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
void getButtonLocation (int nButton, int* nLocationX, int* nLocationY) {
 | 
					void getButtonLocation (int nButton, int *nLocationX, int *nLocationY)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	*nLocationX = 0;
 | 
						*nLocationX = 0;
 | 
				
			||||||
	*nLocationY = 8;
 | 
						*nLocationY = 8;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (nButton > BUTTON_COLS) {
 | 
						while (nButton > BUTTON_COLS) {
 | 
				
			||||||
		*nLocationY += BUTTON_SIZE;
 | 
							*nLocationY += BUTTON_SIZE;
 | 
				
			||||||
		nButton -= BUTTON_COLS;
 | 
							nButton -= BUTTON_COLS;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (nButton > 0) {
 | 
						while (nButton > 0) {
 | 
				
			||||||
		*nLocationX += BUTTON_SIZE - 1;
 | 
							*nLocationX += BUTTON_SIZE - 1;
 | 
				
			||||||
		nButton--;
 | 
							nButton--;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* SkipWord & SkipSpaces: utility functions for getNicenedString */
 | 
					/* SkipWord & SkipSpaces: utility functions for getNicenedString */
 | 
				
			||||||
char *SkipWord(char *Text) {
 | 
					char *SkipWord(char *Text) {
 | 
				
			||||||
	char *Result = Text;
 | 
						char *Result = Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((*Result != ' ')&&(*Result != '\t')&&
 | 
						while ((*Result != ' ') && (*Result != '\t') &&
 | 
				
			||||||
         (*Result != '\n')&&(*Result != 0x00))
 | 
						       (*Result != '\n') && (*Result != 0x00))
 | 
				
			||||||
		Result++;
 | 
							Result++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return Result;
 | 
						return Result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *SkipSpaces(char *Text) {
 | 
					char *SkipSpaces(char *Text) {
 | 
				
			||||||
	char *Result = Text;
 | 
						char *Result = Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while ((*Result == ' ')||(*Result == '\t')||(*Result == '\n'))
 | 
						while ((*Result == ' ') || (*Result == '\t') || (*Result == '\n'))
 | 
				
			||||||
		Result++;
 | 
							Result++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return Result;
 | 
						return Result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -325,13 +342,9 @@ char *SkipSpaces(char *Text) {
 | 
				
			||||||
 *  - cut if too long
 | 
					 *  - cut if too long
 | 
				
			||||||
 *  - remove parameters, whitespace and the '&'...
 | 
					 *  - remove parameters, whitespace and the '&'...
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
char* getNicenedString (char *old, int andAddSeparator) {
 | 
					char *getNicenedString(char *old, int andAddSeparator)
 | 
				
			||||||
  char *WorkStr;
 | 
					{
 | 
				
			||||||
  char *WorkStrEnd;
 | 
						char *WorkStr, *WorkStrEnd, *StartPtr, *EndPtr, *RetStr;
 | 
				
			||||||
  char *StartPtr;
 | 
					 | 
				
			||||||
  char *EndPtr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  char *RetStr;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!old) {
 | 
						if (!old) {
 | 
				
			||||||
		if (andAddSeparator)
 | 
							if (andAddSeparator)
 | 
				
			||||||
| 
						 | 
					@ -340,31 +353,30 @@ char* getNicenedString (char *old, int andAddSeparator) {
 | 
				
			||||||
			return strdup("--");
 | 
								return strdup("--");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RetStr = malloc(strlen(old) + 3 + 1); // 3 for Seperator
 | 
						RetStr = malloc(strlen(old) + 3 + 1); /* 3 for Seperator */
 | 
				
			||||||
	*RetStr = 0x00;
 | 
						*RetStr = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	WorkStr = strdup(old);
 | 
						WorkStr = strdup(old);
 | 
				
			||||||
	WorkStrEnd = strchr(WorkStr, 0x00);
 | 
						WorkStrEnd = strchr(WorkStr, 0x00);
 | 
				
			||||||
	StartPtr = WorkStr;
 | 
						StartPtr = WorkStr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while(StartPtr < WorkStrEnd) {
 | 
						while (StartPtr < WorkStrEnd) {
 | 
				
			||||||
		StartPtr = SkipSpaces(StartPtr);
 | 
							StartPtr = SkipSpaces(StartPtr);
 | 
				
			||||||
		EndPtr = SkipWord(StartPtr);
 | 
							EndPtr = SkipWord(StartPtr);
 | 
				
			||||||
		*EndPtr = 0x00;
 | 
							*EndPtr = 0x00;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((*StartPtr == '&')||(*StartPtr == '-'))
 | 
							if ((*StartPtr == '&') || (*StartPtr == '-'))
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		strcat(RetStr, StartPtr);
 | 
							strcat(RetStr, StartPtr);
 | 
				
			||||||
		strcat(RetStr, " ");
 | 
							strcat(RetStr, " ");
 | 
				
			||||||
    StartPtr = EndPtr+1;
 | 
							StartPtr = EndPtr + 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	free(WorkStr);
 | 
						free(WorkStr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (andAddSeparator) {
 | 
						if (andAddSeparator)
 | 
				
			||||||
		strcat(RetStr, "| ");
 | 
							strcat(RetStr, "| ");
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return RetStr;
 | 
						return RetStr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -372,16 +384,16 @@ char* getNicenedString (char *old, int andAddSeparator) {
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
 * getButtonAppNames
 | 
					 * getButtonAppNames
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *  returns the 1..3 application names / commands to be shown in tooltip
 | 
					 *returns the 1..3 application names / commands to be shown in tooltip
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
char* getButtonAppNames (int nButton) {
 | 
					char *getButtonAppNames(int nButton)
 | 
				
			||||||
  char *str = NULL;
 | 
					{
 | 
				
			||||||
  char *tmp1,*tmp2;
 | 
						char *tmp1, *tmp2, *str = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!( nButton < 0 || nButton > 9 )) {
 | 
						if (!( nButton < 0 || nButton > 9 )) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // FIXME: _Might_ overflow, but it's unlikely.
 | 
							/* FIXME: _Might_ overflow, but it's unlikely.
 | 
				
			||||||
    // Perhaps one should fix this sometime ;)
 | 
							 * Perhaps one should fix this sometime ;) */
 | 
				
			||||||
		str = (char*) calloc (sizeof(char), BUFFER_SIZE);
 | 
							str = (char*) calloc (sizeof(char), BUFFER_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		tmp1 = Parse(nButton + LMASK);
 | 
							tmp1 = Parse(nButton + LMASK);
 | 
				
			||||||
| 
						 | 
					@ -403,15 +415,19 @@ char* getButtonAppNames (int nButton) {
 | 
				
			||||||
		free(tmp2);
 | 
							free(tmp2);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return(str);
 | 
						return str;
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int hasTooltipSupport () {
 | 
					int hasTooltipSupport(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	return !Config.bTooltipDisable;
 | 
						return !Config.bTooltipDisable;
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void showTooltip (int nButton, int nMouseX, int nMouseY) {
 | 
					void showTooltip (int nButton, int nMouseX, int nMouseY)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	Pixmap pixmap, mask;
 | 
						Pixmap pixmap, mask;
 | 
				
			||||||
	int nMainWinX, nMainWinY;
 | 
						int nMainWinX, nMainWinY;
 | 
				
			||||||
	int nButtonX = 0, nButtonY = 0, nButtonWidth = 0, nButtonHeight = 0;
 | 
						int nButtonX = 0, nButtonY = 0, nButtonWidth = 0, nButtonHeight = 0;
 | 
				
			||||||
| 
						 | 
					@ -423,71 +439,66 @@ void showTooltip (int nButton, int nMouseX, int nMouseY) {
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
	extern GC gc;
 | 
						extern GC gc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Config.bTooltipDisable ||  nButton == -1) {
 | 
						if (Config.bTooltipDisable || nButton == -1)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
  if (_bTooltip) {
 | 
						if (_bTooltip)
 | 
				
			||||||
		hideTooltip();
 | 
							hideTooltip();
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (Config.Verbose)
 | 
				
			||||||
  if (Config.Verbose) { 
 | 
							fprintf(stdout,
 | 
				
			||||||
    fprintf(stdout, "[%8ld] showing tooltip for button %d at %d, %d\n", 
 | 
								"[%8ld] showing tooltip for button %d at %d, %d\n",
 | 
				
			||||||
	    currentTimeMillis(),
 | 
								currentTimeMillis(), nButton, nMouseX, nMouseY);
 | 
				
			||||||
	    nButton, nMouseX, nMouseY);
 | 
					 | 
				
			||||||
  } 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	szText = getButtonAppNames(nButton);
 | 
						szText = getButtonAppNames(nButton);
 | 
				
			||||||
	if(!szText)
 | 
						if(!szText)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _bTooltip= 1;
 | 
						_bTooltip = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  nWidth= XTextWidth(_fTooltip, szText, strlen(szText)) + 16;
 | 
						nWidth = XTextWidth(_fTooltip, szText, strlen(szText)) + 16;
 | 
				
			||||||
  nHeight= _nFontHeight + 4;
 | 
						nHeight = _nFontHeight + 4;
 | 
				
			||||||
  if (nHeight < 16) {
 | 
						if (nHeight < 16)
 | 
				
			||||||
    nHeight= 16;
 | 
							nHeight = 16;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
  if (nWidth < nHeight) {
 | 
						if (nWidth < nHeight)
 | 
				
			||||||
    nWidth= nHeight;
 | 
							nWidth = nHeight;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
  if (Config.Verbose) { 
 | 
						if (Config.Verbose)
 | 
				
			||||||
		fprintf(stdout, "[%8ld] tooltip size: %d, %d\n",
 | 
							fprintf(stdout, "[%8ld] tooltip size: %d, %d\n",
 | 
				
			||||||
			currentTimeMillis(), nWidth, nHeight);
 | 
								currentTimeMillis(), nWidth, nHeight);
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	getWindowOrigin(iconwin, &nMainWinX, &nMainWinY);
 | 
						getWindowOrigin(iconwin, &nMainWinX, &nMainWinY);
 | 
				
			||||||
	getButtonLocation(nButton, &nButtonX, &nButtonY);
 | 
						getButtonLocation(nButton, &nButtonX, &nButtonY);
 | 
				
			||||||
  nButtonX+= nMainWinX;
 | 
						nButtonX += nMainWinX;
 | 
				
			||||||
  nButtonY+= nMainWinY;
 | 
						nButtonY += nMainWinY;
 | 
				
			||||||
	nButtonWidth = BUTTON_SIZE;
 | 
						nButtonWidth = BUTTON_SIZE;
 | 
				
			||||||
	nButtonHeight = BUTTON_SIZE;
 | 
						nButtonHeight = BUTTON_SIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (nButtonX + nWidth > _nScreenWidth) {
 | 
						if (nButtonX + nWidth > _nScreenWidth) {
 | 
				
			||||||
    nSide= TOOLTIP_RIGHT;
 | 
							nSide = TOOLTIP_RIGHT;
 | 
				
			||||||
    nX= nButtonX - nWidth + nButtonWidth / 2;
 | 
							nX = nButtonX - nWidth + nButtonWidth / 2;
 | 
				
			||||||
    if (nX < 0) {
 | 
							if (nX < 0)
 | 
				
			||||||
      nX= 0;
 | 
								nX = 0;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
    nSide= TOOLTIP_LEFT;
 | 
							nSide = TOOLTIP_LEFT;
 | 
				
			||||||
    nX= nButtonX + nButtonWidth / 2;
 | 
							nX = nButtonX + nButtonWidth / 2;
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  if (nX + nWidth > _nScreenWidth) {
 | 
					 | 
				
			||||||
    nX= _nScreenWidth - nWidth;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (nX + nWidth > _nScreenWidth)
 | 
				
			||||||
 | 
							nX = _nScreenWidth - nWidth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (nButtonY - (nHeight + TOOLTIP_SPACE) < 0) {
 | 
						if (nButtonY - (nHeight + TOOLTIP_SPACE) < 0) {
 | 
				
			||||||
    nSide|= TOOLTIP_TOP;
 | 
							nSide |= TOOLTIP_TOP;
 | 
				
			||||||
    nY= nButtonY + nButtonHeight - 1;
 | 
							nY = nButtonY + nButtonHeight - 1;
 | 
				
			||||||
    nTextY= TOOLTIP_SPACE;
 | 
							nTextY = TOOLTIP_SPACE;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
    nSide|= TOOLTIP_BOTTOM;
 | 
							nSide |= TOOLTIP_BOTTOM;
 | 
				
			||||||
    nY= nButtonY - (nHeight + TOOLTIP_SPACE);
 | 
							nY = nButtonY - (nHeight + TOOLTIP_SPACE);
 | 
				
			||||||
    nTextY= 0;
 | 
							nTextY = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pixmap= createTooltipPixmap(nWidth, nHeight, nSide, &mask);
 | 
						pixmap = createTooltipPixmap(nWidth, nHeight, nSide, &mask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
 | 
						XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
 | 
				
			||||||
	XSetFont(display, gc, _fTooltip->fid);
 | 
						XSetFont(display, gc, _fTooltip->fid);
 | 
				
			||||||
| 
						 | 
					@ -505,32 +516,38 @@ void showTooltip (int nButton, int nMouseX, int nMouseY) {
 | 
				
			||||||
	XFreePixmap(display, pixmap);
 | 
						XFreePixmap(display, pixmap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	free(szText);
 | 
						free(szText);
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void hideTooltip () {
 | 
					void hideTooltip(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern struct Config_t Config;
 | 
						extern struct Config_t Config;
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Config.bTooltipDisable) {
 | 
						if (Config.bTooltipDisable)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
	if (_bTooltip) {
 | 
						if (_bTooltip) {
 | 
				
			||||||
    if (Config.Verbose) {
 | 
							if (Config.Verbose)
 | 
				
			||||||
			fprintf(stdout, "[%8ld] hiding tooltip\n", currentTimeMillis());
 | 
								fprintf(stdout, "[%8ld] hiding tooltip\n", currentTimeMillis());
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
		XUnmapWindow(display, _wTooltip);
 | 
							XUnmapWindow(display, _wTooltip);
 | 
				
			||||||
    _bTooltip= 0;
 | 
							_bTooltip = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int hasTooltip () {
 | 
					int hasTooltip(void)
 | 
				
			||||||
  if (Config.bTooltipDisable) {
 | 
					{
 | 
				
			||||||
 | 
						if (Config.bTooltipDisable)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return _bTooltip;
 | 
					 | 
				
			||||||
}/**********************************************************************/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void initTooltip () {
 | 
						return _bTooltip;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void initTooltip(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	XSetWindowAttributes attribs;
 | 
						XSetWindowAttributes attribs;
 | 
				
			||||||
	unsigned long vmask;
 | 
						unsigned long vmask;
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
| 
						 | 
					@ -539,28 +556,28 @@ void initTooltip () {
 | 
				
			||||||
	extern Window rootwin, win;
 | 
						extern Window rootwin, win;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (Config.bTooltipDisable) {
 | 
						if (Config.bTooltipDisable) {
 | 
				
			||||||
    if (Config.Verbose) {
 | 
							if (Config.Verbose)
 | 
				
			||||||
			fprintf(stdout, "[%8ld] initializing tooltips (disabled)\n",
 | 
								fprintf(stdout, "[%8ld] initializing tooltips (disabled)\n",
 | 
				
			||||||
				currentTimeMillis());
 | 
									currentTimeMillis());
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  if (Config.Verbose) {
 | 
						if (Config.Verbose)
 | 
				
			||||||
		fprintf(stdout, "[%8ld] initializing tooltips\n", currentTimeMillis());
 | 
							fprintf(stdout, "[%8ld] initializing tooltips\n", currentTimeMillis());
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
  _fTooltip= XLoadQueryFont(display, Config.szTooltipFont);
 | 
						_fTooltip = XLoadQueryFont(display, Config.szTooltipFont);
 | 
				
			||||||
	if (!_fTooltip) {
 | 
						if (!_fTooltip) {
 | 
				
			||||||
		fprintf(stderr, "%s: couldn't allocate font '%s'.\n", app_name, Config.szTooltipFont);
 | 
							fprintf(stderr, "%s: couldn't allocate font '%s'.\n", app_name, Config.szTooltipFont);
 | 
				
			||||||
		if (!strcmp(Config.szTooltipFont, TOOLTIP_FONT))
 | 
							if (!strcmp(Config.szTooltipFont, TOOLTIP_FONT))
 | 
				
			||||||
			fprintf(stderr, "%s: Use option -F <font>\n", app_name);
 | 
								fprintf(stderr, "%s: Use option -F <font>\n", app_name);
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  _nFontHeight= _fTooltip->ascent + _fTooltip->descent;
 | 
					
 | 
				
			||||||
  _nFontY= _fTooltip->ascent;
 | 
						_nFontHeight = _fTooltip->ascent + _fTooltip->descent;
 | 
				
			||||||
  _nScreenWidth= WidthOfScreen(ScreenOfDisplay(display, screen));
 | 
						_nFontY = _fTooltip->ascent;
 | 
				
			||||||
  _nScreenHeight= HeightOfScreen(ScreenOfDisplay(display, screen));
 | 
						_nScreenWidth = WidthOfScreen(ScreenOfDisplay(display, screen));
 | 
				
			||||||
  if (Config.Verbose) {
 | 
						_nScreenHeight = HeightOfScreen(ScreenOfDisplay(display, screen));
 | 
				
			||||||
 | 
						if (Config.Verbose)
 | 
				
			||||||
		fprintf(stdout, "[%8ld] configuring tooltip font:\n" \
 | 
							fprintf(stdout, "[%8ld] configuring tooltip font:\n" \
 | 
				
			||||||
			"[%8ld] - '%s'\n" \
 | 
								"[%8ld] - '%s'\n" \
 | 
				
			||||||
			"[%8ld] - font-height= %d, font-ascent= %d\n" \
 | 
								"[%8ld] - font-height= %d, font-ascent= %d\n" \
 | 
				
			||||||
| 
						 | 
					@ -568,101 +585,109 @@ void initTooltip () {
 | 
				
			||||||
			currentTimeMillis(),
 | 
								currentTimeMillis(),
 | 
				
			||||||
			currentTimeMillis(), Config.szTooltipFont,
 | 
								currentTimeMillis(), Config.szTooltipFont,
 | 
				
			||||||
			currentTimeMillis(), _nFontHeight, _nFontY,
 | 
								currentTimeMillis(), _nFontHeight, _nFontY,
 | 
				
			||||||
	    currentTimeMillis(), _nScreenWidth, _nScreenHeight  );
 | 
								currentTimeMillis(), _nScreenWidth, _nScreenHeight);
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vmask= CWSaveUnder | CWOverrideRedirect | CWBorderPixel;
 | 
						vmask = CWSaveUnder | CWOverrideRedirect | CWBorderPixel;
 | 
				
			||||||
  attribs.save_under= True;
 | 
						attribs.save_under = True;
 | 
				
			||||||
  attribs.override_redirect= True;
 | 
						attribs.override_redirect = True;
 | 
				
			||||||
  attribs.border_pixel= 0;
 | 
						attribs.border_pixel = 0;
 | 
				
			||||||
  _wTooltip= XCreateWindow(display, rootwin, 1, 1, 10, 10, 1,
 | 
						_wTooltip = XCreateWindow(display, rootwin, 1, 1, 10, 10, 1,
 | 
				
			||||||
				  CopyFromParent, CopyFromParent,
 | 
									  CopyFromParent, CopyFromParent,
 | 
				
			||||||
				  CopyFromParent, vmask, &attribs);
 | 
									  CopyFromParent, vmask, &attribs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (win == 0) {
 | 
						if (win == 0) {
 | 
				
			||||||
		fprintf(stderr, "Cannot create tooltip window.\n");
 | 
							fprintf(stderr, "Cannot create tooltip window.\n");
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}/**********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void destroyTooltip () {
 | 
					void destroyTooltip(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Config.bTooltipDisable) {
 | 
						if (Config.bTooltipDisable)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
	if (_gcMono) {
 | 
						if (_gcMono) {
 | 
				
			||||||
		XFreeGC(display, _gcMono);
 | 
							XFreeGC(display, _gcMono);
 | 
				
			||||||
    _gcMono= 0;
 | 
							_gcMono = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  XDestroyWindow(display, _wTooltip);
 | 
					 | 
				
			||||||
}/**********************************************************************/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side) {
 | 
						XDestroyWindow(display, _wTooltip);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void drawTooltipBalloon(Pixmap pix, GC gc, int x, int y, int w, int h, int side)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
  int rad = h*3/10;
 | 
						int rad = h * 3 / 10;
 | 
				
			||||||
	XPoint pt[3];
 | 
						XPoint pt[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  XFillArc(display, pix, gc, x, y, rad, rad, 90*64, 90*64);
 | 
						XFillArc(display, pix, gc, x, y, rad, rad, 90 * 64, 90 * 64);
 | 
				
			||||||
  XFillArc(display, pix, gc, x, y+h-1-rad, rad, rad, 180*64, 90*64);
 | 
						XFillArc(display, pix, gc, x, y + h - 1 - rad, rad, rad, 180 * 64, 90 * 64);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  XFillArc(display, pix, gc, x+w-1-rad, y, rad, rad, 0*64, 90*64);
 | 
						XFillArc(display, pix, gc, x + w - 1 - rad, y, rad, rad, 0 * 64, 90 * 64);
 | 
				
			||||||
  XFillArc(display, pix, gc, x+w-1-rad, y+h-1-rad, rad, rad, 270*64, 90*64);
 | 
						XFillArc(display, pix, gc, x + w - 1 - rad, y + h - 1 - rad, rad, rad, 270 * 64, 90 * 64);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  XFillRectangle(display, pix, gc, x, y+rad/2, w, h-rad);
 | 
						XFillRectangle(display, pix, gc, x, y + rad / 2, w, h - rad);
 | 
				
			||||||
  XFillRectangle(display, pix, gc, x+rad/2, y, w-rad, h);
 | 
						XFillRectangle(display, pix, gc, x + rad / 2, y, w - rad, h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (side & TOOLTIP_BOTTOM) {
 | 
						if (side & TOOLTIP_BOTTOM) {
 | 
				
			||||||
    pt[0].y = y+h-1;
 | 
							pt[0].y = y + h - 1;
 | 
				
			||||||
    pt[1].y = y+h-1+TOOLTIP_SPACE;
 | 
							pt[1].y = y + h - 1 + TOOLTIP_SPACE;
 | 
				
			||||||
    pt[2].y = y+h-1;
 | 
							pt[2].y = y + h - 1;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		pt[0].y = y;
 | 
							pt[0].y = y;
 | 
				
			||||||
		pt[1].y = y-TOOLTIP_SPACE;
 | 
							pt[1].y = y-TOOLTIP_SPACE;
 | 
				
			||||||
		pt[2].y = y;
 | 
							pt[2].y = y;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  if (side & TOOLTIP_RIGHT) {
 | 
					 | 
				
			||||||
    pt[0].x = x+w-h+2*h/16;
 | 
					 | 
				
			||||||
    pt[1].x = x+w-h+11*h/16;
 | 
					 | 
				
			||||||
    pt[2].x = x+w-h+7*h/16;
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    pt[0].x = x+h-2*h/16;
 | 
					 | 
				
			||||||
    pt[1].x = x+h-11*h/16;
 | 
					 | 
				
			||||||
    pt[2].x = x+h-7*h/16;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  XFillPolygon(display, pix, gc, pt, 3, Convex, CoordModeOrigin);
 | 
					 | 
				
			||||||
}/**********************************************************************/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask) {
 | 
						if (side & TOOLTIP_RIGHT) {
 | 
				
			||||||
 | 
							pt[0].x = x + w - h +  2 * h / 16;
 | 
				
			||||||
 | 
							pt[1].x = x + w - h + 11 * h / 16;
 | 
				
			||||||
 | 
							pt[2].x = x + w - h +  7 * h / 16;
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							pt[0].x = x + h -  2 * h /16;
 | 
				
			||||||
 | 
							pt[1].x = x + h - 11 * h /16;
 | 
				
			||||||
 | 
							pt[2].x = x + h -  7 * h /16;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						XFillPolygon(display, pix, gc, pt, 3, Convex, CoordModeOrigin);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/**********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Pixmap createTooltipPixmap(int width, int height, int side, Pixmap *mask)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
	extern GC gc;
 | 
						extern GC gc;
 | 
				
			||||||
	extern Pixel bg_pixel, fg_pixel;
 | 
						extern Pixel bg_pixel, fg_pixel;
 | 
				
			||||||
	extern int depth;
 | 
						extern int depth;
 | 
				
			||||||
	extern Window rootwin;
 | 
						extern Window rootwin;
 | 
				
			||||||
  Pixmap bitmap;
 | 
						Pixmap bitmap, pixmap;
 | 
				
			||||||
  Pixmap pixmap;
 | 
					 | 
				
			||||||
	int x, y;
 | 
						int x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bitmap = XCreatePixmap(display, rootwin,
 | 
						bitmap = XCreatePixmap(display, rootwin,
 | 
				
			||||||
			       width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, 1);
 | 
								       width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!_gcMono) {
 | 
						if (!_gcMono)
 | 
				
			||||||
    _gcMono= XCreateGC(display, bitmap, 0, NULL);
 | 
							_gcMono = XCreateGC(display, bitmap, 0, NULL);
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
	XSetForeground(display, _gcMono, 0);
 | 
						XSetForeground(display, _gcMono, 0);
 | 
				
			||||||
	XFillRectangle(display, bitmap, _gcMono, 0, 0,
 | 
						XFillRectangle(display, bitmap, _gcMono, 0, 0,
 | 
				
			||||||
		       width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
 | 
							       width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pixmap = XCreatePixmap(display, rootwin, 
 | 
						pixmap = XCreatePixmap(display, rootwin, width+TOOLTIP_SPACE,
 | 
				
			||||||
			 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, depth);
 | 
								       height+TOOLTIP_SPACE, depth);
 | 
				
			||||||
	XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
 | 
						XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
 | 
				
			||||||
  XFillRectangle(display, pixmap, gc, 0, 0, 
 | 
						XFillRectangle(display, pixmap, gc, 0, 0, width+TOOLTIP_SPACE,
 | 
				
			||||||
		 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
 | 
							       height+TOOLTIP_SPACE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (side & TOOLTIP_BOTTOM) {
 | 
						if (side & TOOLTIP_BOTTOM)
 | 
				
			||||||
		y = 0;
 | 
							y = 0;
 | 
				
			||||||
  } else {
 | 
						else
 | 
				
			||||||
		y = TOOLTIP_SPACE;
 | 
							y = TOOLTIP_SPACE;
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
	x = 0;
 | 
						x = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XSetForeground(display, _gcMono, 1);
 | 
						XSetForeground(display, _gcMono, 1);
 | 
				
			||||||
| 
						 | 
					@ -673,7 +698,8 @@ Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask) {
 | 
				
			||||||
	*mask = bitmap;
 | 
						*mask = bitmap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return pixmap;
 | 
						return pixmap;
 | 
				
			||||||
}/***********************************************************************/
 | 
					}
 | 
				
			||||||
 | 
					/***********************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
| 
						 | 
					@ -681,11 +707,15 @@ Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask) {
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Everyone else has one of these... Can't hurt to throw it in.
 | 
					 * Everyone else has one of these... Can't hurt to throw it in.
 | 
				
			||||||
 ***********************************************************************/
 | 
					 ***********************************************************************/
 | 
				
			||||||
int flush_expose(Window w) {
 | 
					int flush_expose(Window w)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	extern Display *display;
 | 
						extern Display *display;
 | 
				
			||||||
	XEvent dummy;
 | 
						XEvent dummy;
 | 
				
			||||||
  int            i=0;
 | 
						int i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) i++;
 | 
						while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
 | 
				
			||||||
  return(i);
 | 
							i++;
 | 
				
			||||||
}/***********************************************************************/
 | 
					
 | 
				
			||||||
 | 
						return i;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/***********************************************************************/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,29 +78,29 @@ struct Config_t {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/******  Function Prototyes  *******************************************/
 | 
					/******  Function Prototyes  *******************************************/
 | 
				
			||||||
void RunAppN(int app);             // function to run app N as found in conf file
 | 
					void RunAppN(int app);             /* function to run app N as found in conf file */
 | 
				
			||||||
char *Parse(int app);              // parse data in config file
 | 
					char *Parse(int app);              /* parse data in config file */
 | 
				
			||||||
void parseargs(int argc, char **argv);
 | 
					void parseargs(int argc, char **argv);
 | 
				
			||||||
char *readln(FILE *fp);            // read line from file, return pointer to it
 | 
					char *readln(FILE *fp);            /* read line from file, return pointer to it */
 | 
				
			||||||
void err_mess(int err, char *str); // Error Handling Routine
 | 
					void err_mess(int err, char *str); /* Error Handling Routine */
 | 
				
			||||||
void show_usage(void);            // show usage message to stderr
 | 
					void show_usage(void);             /* show usage message to stderr */
 | 
				
			||||||
int flush_expose(Window w);
 | 
					int flush_expose(Window w);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/******  Tooltip Function Prototypes  **********************************/
 | 
					/******  Tooltip Function Prototypes  **********************************/
 | 
				
			||||||
void initTooltip();
 | 
					void initTooltip();
 | 
				
			||||||
void destroyTooltip ();
 | 
					void destroyTooltip(void);
 | 
				
			||||||
int hasTooltipSupport ();
 | 
					int hasTooltipSupport(void);
 | 
				
			||||||
void showTooltip (int nButton, int nMouseX, int nMouseY);
 | 
					void showTooltip(int nButton, int nMouseX, int nMouseY);
 | 
				
			||||||
void hideTooltip ();
 | 
					void hideTooltip(void);
 | 
				
			||||||
int hasTooltip ();
 | 
					int hasTooltip(void);
 | 
				
			||||||
void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side);
 | 
					void drawTooltipBalloon(Pixmap pix, GC gc, int x, int y, int w, int h, int side);
 | 
				
			||||||
Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask);
 | 
					Pixmap createTooltipPixmap(int width, int height, int side, Pixmap *mask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void initTime ();
 | 
					void initTime(void);
 | 
				
			||||||
long currentTimeMillis ();
 | 
					long currentTimeMillis(void);
 | 
				
			||||||
void getWindowOrigin (Window w, int* nX, int* nY);
 | 
					void getWindowOrigin(Window w, int *nX, int *nY);
 | 
				
			||||||
void getButtonLocation (int nButton, int* nLocationX, int* nLocationY);
 | 
					void getButtonLocation(int nButton, int *nLocationX, int *nLocationY);
 | 
				
			||||||
char *getButtonAppNames (int nButton);
 | 
					char *getButtonAppNames(int nButton);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**********************************************************************/
 | 
					/**********************************************************************/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue