1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/* Start ;-) button handling */
#include <string.h>
#include <X11/Xlib.h>
#include <fvwm/fvwmlib.h>
#include <stdio.h>
#include "ButtonArray.h"
#include "FvwmTaskBar.h"
#include "Mallocs.h"
extern Display *dpy;
extern Window Root, win;
extern XFontStruct *ButtonFont;
#ifdef I18N
extern XFontSet ButtonFontset;
#ifdef __STDC__
#define XTextWidth(x,y,z) XmbTextEscapement(x ## set,y,z)
#else
#define XTextWidth(x,y,z) XmbTextEscapement(x/**/set,y,z)
#endif
#endif
extern int Clength;
extern char *PixmapPath;
extern char *IconPath;
Button *StartButton;
int StartButtonWidth, StartButtonHeight;
char *StartName = NULL,
*StartPopup = NULL,
*StartIconName = NULL;
void StartButtonParseConfig(char *tline, char *Module) {
if(strncasecmp(tline,CatString3(Module,"StartName",""), Clength+9)==0)
CopyString(&StartName,&tline[Clength+9]);
else if(strncasecmp(tline,CatString3(Module,"StartMenu",""), Clength+9)==0)
CopyString(&StartPopup,&tline[Clength+9]);
else if(strncasecmp(tline,CatString3(Module,"StartIcon",""), Clength+9)==0)
CopyString(&StartIconName,&tline[Clength+9]);
}
void StartButtonInit(int height)
{
Picture *p = NULL;
int pw;
/* some defaults */
if (StartName == NULL) UpdateString(&StartName, "Start");
if (StartPopup == NULL) UpdateString(&StartPopup, "StartMenu");
if (StartIconName == NULL) UpdateString(&StartIconName, "mini-start.xpm");
p = GetPicture(dpy, Root, IconPath, PixmapPath, StartIconName);
StartButton = (Button *)ButtonNew(StartName, p, BUTTON_UP, 0);
if (p != NULL) pw = p->width+3; else pw = 0;
StartButtonWidth = XTextWidth(ButtonFont, StartName, strlen(StartName)) + pw + 14;
StartButtonHeight = height;
}
void StartButtonUpdate(char *title, int state)
{
if (title != NULL) ConsoleMessage("Updating StartTitle not supported yet...\n");
ButtonUpdate(StartButton, title, state);
}
void StartButtonDraw(int force)
{
if (StartButton->needsupdate || force)
ButtonDraw(StartButton, 0, 0, StartButtonWidth, StartButtonHeight);
}
int MouseInStartButton(int x, int y)
{
return (x > 0 && x < StartButtonWidth &&
y > 0 && y < StartButtonHeight);
}
|