-/* xscreensaver, Copyright (c) 1991-2014, 2016
- * -Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1991-2017 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
static void do_help (saver_screen_info *ssi);
+XFontStruct *
+splash_load_font (Display *dpy, char *name, char *class)
+{
+ /* Try RES, RES2, etc. */
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ char *name2 = (char *) malloc (strlen(name) + 2);
+ char *s;
+ if (i)
+ sprintf (name2, "%s%d", name, i+1);
+ else
+ strcpy (name2, name);
+ s = get_string_resource (dpy, name2, class);
+ free (name2);
+ if (s && *s)
+ {
+ XFontStruct *f = XLoadQueryFont (dpy, s);
+ if (f) return f;
+ }
+ }
+ return XLoadQueryFont (dpy, "fixed");
+}
+
+
struct splash_dialog_data {
saver_screen_info *prompt_screen;
splash_dialog_data *sp;
saver_screen_info *ssi;
Colormap cmap;
- char *f;
Bool whine = decrepit_p ();
sp->heading_label = s;
}
- f = get_string_resource (si->dpy, "splash.headingFont", "Dialog.Font");
- sp->heading_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
- if (!sp->heading_font) sp->heading_font = XLoadQueryFont (si->dpy, "fixed");
- if (f) free (f);
-
- f = get_string_resource(si->dpy, "splash.bodyFont", "Dialog.Font");
- sp->body_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
- if (!sp->body_font) sp->body_font = XLoadQueryFont (si->dpy, "fixed");
- if (f) free (f);
-
- f = get_string_resource(si->dpy, "splash.buttonFont", "Dialog.Font");
- sp->button_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
- if (!sp->button_font) sp->button_font = XLoadQueryFont (si->dpy, "fixed");
- if (f) free (f);
+ sp->heading_font =
+ splash_load_font (si->dpy, "splash.headingFont", "Dialog.Font");
+ sp->body_font =
+ splash_load_font (si->dpy, "splash.bodyFont", "Dialog.Font");
+ sp->button_font =
+ splash_load_font (si->dpy, "splash.buttonFont", "Dialog.Font");
sp->foreground = get_pixel_resource (si->dpy, cmap,
"splash.foreground",
{
int sx = 0, sy = 0, w, h;
- int mouse_x = 0, mouse_y = 0;
-
- {
- Window pointer_root, pointer_child;
- int root_x, root_y, win_x, win_y;
- unsigned int mask;
- if (XQueryPointer (si->dpy,
- RootWindowOfScreen (ssi->screen),
- &pointer_root, &pointer_child,
- &root_x, &root_y, &win_x, &win_y, &mask))
- {
- mouse_x = root_x;
- mouse_y = root_y;
- }
- }
x = ssi->x;
y = ssi->y;
splash_dialog_data *sp = si->sp_data;
XGCValues gcv;
GC gc1, gc2;
- int hspacing, vspacing, height;
+ int vspacing, height;
int x1, x2, x3, y1, y2;
int sw;
#ifdef PREFS_BUTTON
+ int hspacing;
int nbuttons = 3;
-#else /* !PREFS_BUTTON */
- int nbuttons = 2;
#endif /* !PREFS_BUTTON */
height = (sp->heading_font->ascent + sp->heading_font->descent +
(sp->button_font->ascent + sp->button_font->descent))
/ 2)
+ sp->button_font->ascent);
+#ifdef PREFS_BUTTON
hspacing = ((sp->width - x1 - (sp->shadow_width * 2) -
sp->internal_border - (sp->button_width * nbuttons))
/ 2);
+#endif
x2 = x1 + ((sp->button_width - string_width(sp->button_font, sp->demo_label))
/ 2);