-/* xscreensaver, Copyright (c) 1991-2006 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski <jwz@netscape.com>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
int
string_width (XFontStruct *font, char *s)
{
- int direction, ascent, descent;
- XCharStruct overall;
- XTextExtents (font, s, strlen(s), &direction, &ascent, &descent, &overall);
- return overall.width;
+ return XTextWidth(font, s, strlen(s));
}
Pixel foreground;
Pixel background;
+ Pixel border;
Pixel button_foreground;
Pixel button_background;
Pixel shadow_top;
return;
ssi = &si->screens[mouse_screen (si)];
+
+ if (!ssi || !ssi->screen)
+ return; /* WTF? Trying to splash while no screens connected? */
+
cmap = DefaultColormapOfScreen (ssi->screen);
sp = (splash_dialog_data *) calloc (1, sizeof(*sp));
sp->background = get_pixel_resource (si->dpy, cmap,
"splash.background",
"Dialog.Background");
+ sp->border = get_pixel_resource (si->dpy, cmap,
+ "splash.borderColor",
+ "Dialog.borderColor");
if (sp->foreground == sp->background)
{
attrs.event_mask = (ExposureMask | ButtonPressMask | ButtonReleaseMask);
{
- int sx, sy, w, h;
+ int sx = 0, sy = 0, w, h;
int mouse_x = 0, mouse_y = 0;
{
}
}
- get_screen_viewport (ssi, &sx, &sy, &w, &h, mouse_x, mouse_y, False);
+ x = ssi->x;
+ y = ssi->y;
+ w = ssi->width;
+ h = ssi->height;
if (si->prefs.debug_p) w /= 2;
x = sx + (((w + sp->width) / 2) - sp->width);
y = sy + (((h + sp->height) / 2) - sp->height);
DefaultVisualOfScreen(ssi->screen),
attrmask, &attrs);
XSetWindowBackground (si->dpy, si->splash_dialog, sp->background);
+ XSetWindowBorder (si->dpy, si->splash_dialog, sp->border);
+
- sp->logo_pixmap = xscreensaver_logo (ssi->screen, ssi->current_visual,
+ sp->logo_pixmap = xscreensaver_logo (ssi->screen,
+ /* same visual as si->splash_dialog */
+ DefaultVisualOfScreen (ssi->screen),
si->splash_dialog, cmap,
sp->background,
&sp->logo_pixels, &sp->logo_npixels,