- if (passwd_idle_timer_tick == max) /* first time */
- {
- Arg av[10];
- int ac = 0;
- XGCValues gcv;
- unsigned long fg, bg;
-
- XtSetArg (av[ac], XmNheight, &d);
- ac++;
- XtGetValues (passwd_done, av, ac);
- ac = 0;
- XtSetArg (av[ac], XmNwidth, &x);
- ac++;
- XtSetArg (av[ac], XmNheight, &y);
- ac++;
- XtSetArg (av[ac], XmNforeground, &fg);
- ac++;
- XtSetArg (av[ac], XmNbackground, &bg);
- ac++;
- XtGetValues (passwd_form, av, ac);
- x -= d;
- y -= d;
- d -= 4;
- gcv.foreground = fg;
- if (gc)
- XFreeGC (dpy, gc);
- gc = XCreateGC (dpy, window, GCForeground, &gcv);
- s = 360 * 64 / (passwd_idle_timer_tick - 1);
- ss = 90 * 64;
- XFillArc (dpy, window, gc, x, y, d, d, 0, 360 * 64);
- XSetForeground (dpy, gc, bg);
- x += 1;
- y += 1;
- d -= 2;
- }
+ if (passwd_idle_timer_tick == max) /* first time */
+ {
+ XGCValues gcv;
+#ifdef HAVE_MOTIF
+ unsigned long fg = 0, bg = 0, ts = 0, bs = 0;
+ Dimension w = 0, h = 0;
+ XtVaGetValues(XtParent(passwd_done),
+ XmNwidth, &w,
+ 0);
+ XtVaGetValues(passwd_done,
+ XmNheight, &h,
+ XmNy, &y,
+ XtNforeground, &fg,
+ XtNbackground, &bg,
+ XmNtopShadowColor, &ts,
+ XmNbottomShadowColor, &bs,
+ 0);
+
+ if (ts != bg && ts != fg)
+ fg = ts;
+ if (bs != bg && bs != fg)
+ fg = bs;
+
+ d = h / 2;
+ if (d & 1) d++;
+
+ x = (w / 2);
+
+#ifdef __sgi /* Kludge -- SGI's Motif hacks place buttons differently. */
+ {
+ static int sgi_mode = -1;
+ if (sgi_mode == -1)
+ sgi_mode = get_boolean_resource("sgiMode", "sgiMode") ? 1 : 0;
+
+ if (sgi_mode)
+ x = d;
+ }
+#endif /* __sgi */
+
+ x -= d/2;
+ y += d/2;
+
+#else /* HAVE_ATHENA */
+
+ Arg av [100];
+ int ac = 0;
+ unsigned long fg = 0, bg = 0;
+ XtSetArg (av [ac], XtNheight, &d); ac++;
+ XtGetValues (passwd_done, av, ac);
+ ac = 0;
+ XtSetArg (av [ac], XtNwidth, &x); ac++;
+ XtSetArg (av [ac], XtNheight, &y); ac++;
+ XtSetArg (av [ac], XtNforeground, &fg); ac++;
+ XtSetArg (av [ac], XtNbackground, &bg); ac++;
+ XtGetValues (passwd_form, av, ac);
+ x -= d;
+ y -= d;
+ d -= 4;
+
+#endif /* HAVE_ATHENA */
+
+ gcv.foreground = fg;
+ if (gc) XFreeGC (dpy, gc);
+ gc = XCreateGC (dpy, window, GCForeground, &gcv);
+ s = 360*64 / (passwd_idle_timer_tick - 1);
+ ss = 90*64;
+ XFillArc (dpy, window, gc, x, y, d, d, 0, 360*64);
+ XSetForeground (dpy, gc, bg);
+ x += 1;
+ y += 1;
+ d -= 2;
+ }