/* ARGSUSED */ static void SashFocusIn( Widget w, XEvent *event, char **params, Cardinal *num_params ) { register XmSashWidget sash = (XmSashWidget) w; if (event->xany.type != FocusIn || !event->xfocus.send_event) return; if (_XmGetFocusPolicy( (Widget) sash) == XmEXPLICIT) HighlightSash(w); XmeDrawShadows (XtDisplay (w), XtWindow (w), sash->primitive.top_shadow_GC, sash->primitive.bottom_shadow_GC, 0,0,w->core.width, w->core.height, sash->primitive.shadow_thickness, XmSHADOW_OUT); sash->sash.has_focus = True; }
/************************************************************************ * * DrawShadow * Draw the Frame shadow * ************************************************************************/ static void DrawShadow( XmFrameWidget fw ) { if (XtIsRealized((Widget)fw)) { XmeDrawShadows(XtDisplay (fw), XtWindow (fw), fw->manager.top_shadow_GC, fw->manager.bottom_shadow_GC, fw->frame.old_shadow_x, fw->frame.old_shadow_y, fw->frame.old_width, fw->frame.old_height, fw->frame.old_shadow_thickness, fw->frame.shadow_type); } }
/****************************_XmDrawShadows****************************/ void _XmDrawShadows(Display *display, Drawable d, GC top_gc, GC bottom_gc, #if NeedWidePrototypes int x, int y, int width, int height, int shad_thick, #else Position x, Position y, Dimension width, Dimension height, Dimension shad_thick, #endif unsigned int shad_type) { XmeDrawShadows(display, d, top_gc, bottom_gc, x, y, width, height, shad_thick, shad_type); }
static void DrawBorder(Widget widg) { XmGrabShellWidget gs = (XmGrabShellWidget)widg; int offset = 0; XmeDrawShadows(XtDisplay(widg), XtWindow(widg), gs->grab_shell.top_shadow_GC, gs->grab_shell.bottom_shadow_GC, offset, offset, XtWidth(widg) - 2 * offset, XtHeight(widg) - 2 * offset, gs->grab_shell.shadow_thickness, XmSHADOW_OUT); }
/* ARGSUSED */ static void Redisplay( Widget w, XEvent *event, Region region ) { register XmSashWidget sash = (XmSashWidget) w; XmeDrawShadows (XtDisplay (w), XtWindow (w), sash->primitive.top_shadow_GC, sash->primitive.bottom_shadow_GC, 0,0,w->core.width, w->core.height, sash->primitive.shadow_thickness, XmSHADOW_OUT); if (sash->sash.has_focus) HighlightSash(w); }
static void draw_shadows(XmEnhancedButtonWidget eb) { GC top_gc; GC bottom_gc; Boolean etched_in; if (!eb->primitive.shadow_thickness) return; if ((eb->core.width <= 2 * eb->primitive.highlight_thickness) || (eb->core.height <= 2 * eb->primitive.highlight_thickness)) return; #if !defined(LESSTIF_VERSION) && (XmVersion > 1002) { XmDisplay dpy; dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(eb)); etched_in = dpy->display.enable_etched_in_menu; } #else etched_in = False; #endif if (!etched_in ^ eb->pushbutton.armed) { top_gc = eb->primitive.top_shadow_GC; bottom_gc = eb->primitive.bottom_shadow_GC; } else { top_gc = eb->primitive.bottom_shadow_GC; bottom_gc = eb->primitive.top_shadow_GC; } XmeDrawShadows(XtDisplay(eb), XtWindow(eb), top_gc, bottom_gc, eb->primitive.highlight_thickness, eb->primitive.highlight_thickness, eb->core.width - 2 * eb->primitive.highlight_thickness, eb->core.height - 2 * eb->primitive.highlight_thickness, eb->primitive.shadow_thickness, (unsigned)(etched_in ? XmSHADOW_IN : XmSHADOW_OUT)); }
static void Redisplay( Widget wid, XEvent *event, Region region ) { XmArrowButtonWidget aw = (XmArrowButtonWidget) wid; int iwidth, iheight; XtExposeProc expose; iwidth = (int) aw->core.width - 2 * aw->primitive.highlight_thickness; iheight = (int) aw->core.height - 2 * aw->primitive.highlight_thickness; /* Draw the arrow */ if ((iwidth > 0) && (iheight > 0)) { if (aw->primitive.shadow_thickness > 0) XmeDrawShadows(XtDisplay (aw), XtWindow (aw), aw->primitive.top_shadow_GC, aw->primitive.bottom_shadow_GC, aw->primitive.highlight_thickness, aw->primitive.highlight_thickness, aw->core.width - 2 * aw->primitive.highlight_thickness, aw->core.height - 2 * aw->primitive.highlight_thickness, aw->primitive.shadow_thickness, XmSHADOW_OUT); if (aw->arrowbutton.selected && XtIsSensitive(wid)) DrawArrow(aw, aw->primitive.bottom_shadow_GC, aw->primitive.top_shadow_GC, aw->arrowbutton.arrow_GC); else DrawArrow(aw, aw->primitive.top_shadow_GC, aw->primitive.bottom_shadow_GC, (XtIsSensitive(wid) ? aw->arrowbutton.arrow_GC : aw->arrowbutton.insensitive_GC)); } /* Envelop our superclass expose method */ _XmProcessLock(); expose = xmPrimitiveClassRec.core_class.expose; _XmProcessUnlock(); (*(expose)) ((Widget) aw, event, region); }
/****************************************************************************** * * DrawShadow: * Called by Redisplay. * *****************************************************************************/ static void DrawShadow ( Widget w ) { ExmSimpleWidget sw = (ExmSimpleWidget)w; /* If there is enough room in the widget to draw a shadow, and if the shadow thickness resource is nonzero, then draw a Motif-style shadow in the appropriate place around the widget's border. */ if (sw->core.width > (2 * sw->primitive.highlight_thickness) && sw->core.height > (2 * sw->primitive.highlight_thickness) && sw->primitive.shadow_thickness > 0) XmeDrawShadows (XtDisplay (sw), XtWindow (sw), sw->primitive.top_shadow_GC, sw->primitive.bottom_shadow_GC, sw->primitive.highlight_thickness, sw->primitive.highlight_thickness, sw->core.width - (2 * sw->primitive.highlight_thickness), sw->core.height - (2 * sw->primitive.highlight_thickness), sw->primitive.shadow_thickness, XmSHADOW_ETCHED_OUT); }
/* ARGSUSED */ static void Redisplay(Widget gw, XEvent * event, Region region) { XmPannerWidget pw = (XmPannerWidget) gw; Display *dpy = XtDisplay(gw); Window w = XtWindow(gw); int pad = (XmPanner_internal_border(pw) + pw->primitive.highlight_thickness + pw->primitive.shadow_thickness); int dx, dy, width, height; int kx = XmPanner_knob_x(pw) + pad, ky = XmPanner_knob_y(pw) + pad; XmPanner_tmp(pw).showing = FALSE; if (event != NULL) { dx = dy = pw->primitive.highlight_thickness; width = pw->core.width - (2 * dx); height = pw->core.height - (2 * dy); _XmDrawShadows(XtDisplay(gw), XtWindow(gw), pw->primitive.bottom_shadow_GC, pw->primitive.top_shadow_GC, dx, dy, width, height, pw->primitive.shadow_thickness, XmSHADOW_OUT); if (pw->primitive.highlighted) (*(xmPrimitiveClassRec.primitive_class.border_highlight))(gw); else (*(xmPrimitiveClassRec.primitive_class.border_unhighlight))(gw); } if ((XmPanner_tmp(pw).doing && XmPanner_rubber_band(pw)) || (event == NULL)) { XClearArea (XtDisplay(pw), XtWindow(pw), (int) XmPanner_last_x(pw) + pad, (int) XmPanner_last_y(pw) + pad, (unsigned int) (XmPanner_knob_width(pw)), (unsigned int) (XmPanner_knob_height(pw)), False); } XmPanner_last_x(pw) = XmPanner_knob_x(pw); XmPanner_last_y(pw) = XmPanner_knob_y(pw); XmeDrawShadows(XtDisplay(gw), XtWindow(gw), pw->primitive.top_shadow_GC, pw->primitive.bottom_shadow_GC, kx, ky, XmPanner_knob_width(pw), XmPanner_knob_height(pw), pw->primitive.shadow_thickness, XmSHADOW_OUT); dx = kx + pw->primitive.shadow_thickness; dy = ky + pw->primitive.shadow_thickness; if (((int)XmPanner_knob_width(pw) > (int)(2 * pw->primitive.shadow_thickness)) && ((int)XmPanner_knob_height(pw) > (int)(2 * pw->primitive.shadow_thickness))) { width = XmPanner_knob_width(pw) - (2 * pw->primitive.shadow_thickness); height = XmPanner_knob_height(pw) - (2 * pw->primitive.shadow_thickness); XFillRectangle (dpy, w, XmPanner_slider_gc(pw), dx, dy, width, height); } if (XmPanner_tmp(pw).doing && XmPanner_rubber_band(pw)) DRAW_TMP (pw); }
/*ARGSUSED*/ static void Enter(Widget wid, XEvent *event, String *params, Cardinal *num_params) { XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget) wid; XmPushButtonCallbackStruct call_value; if (Lab_IsMenupane(eb)) { if ((((ShellWidget) XtParent(XtParent(eb)))->shell.popped_up) && _XmGetInDragMode((Widget) eb)) { #if !defined(LESSTIF_VERSION) && (XmVersion > 1002) XmDisplay dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(wid)); Boolean etched_in = dpy->display.enable_etched_in_menu; #else Boolean etched_in = False; #endif if (eb->pushbutton.armed) return; /* ...so KHelp event is delivered correctly. */ _XmSetFocusFlag(XtParent(XtParent(eb)), XmFOCUS_IGNORE, TRUE); XtSetKeyboardFocus(XtParent(XtParent(eb)), (Widget) eb); _XmSetFocusFlag(XtParent(XtParent(eb)), XmFOCUS_IGNORE, FALSE); eb->pushbutton.armed = TRUE; ((XmManagerWidget) XtParent(wid))->manager.active_child = wid; /* etched in menu button */ if (etched_in && !XmIsTearOffButton(eb)) { XFillRectangle(XtDisplay(eb), XtWindow(eb), eb->pushbutton.fill_gc, 0, 0, eb->core.width, eb->core.height); draw_label(eb, event, NULL); draw_pixmap(eb, event, NULL); } if ((eb->core.width > 2 * eb->primitive.highlight_thickness) && (eb->core.height > 2 * eb->primitive.highlight_thickness)) { XmeDrawShadows(XtDisplay(eb), XtWindow(eb), eb->primitive.top_shadow_GC, eb->primitive.bottom_shadow_GC, eb->primitive.highlight_thickness, eb->primitive.highlight_thickness, eb->core.width - 2 * eb->primitive.highlight_thickness, eb->core.height - 2 * eb->primitive.highlight_thickness, eb->primitive.shadow_thickness, (unsigned)(etched_in ? XmSHADOW_IN : XmSHADOW_OUT)); } if (eb->pushbutton.arm_callback) { XFlush(XtDisplay(eb)); call_value.reason = (int)XmCR_ARM; call_value.event = event; XtCallCallbackList((Widget) eb, eb->pushbutton.arm_callback, &call_value); } } } else { XtExposeProc expose; _XmPrimitiveEnter((Widget) eb, event, NULL, NULL); if (eb->pushbutton.armed == TRUE) { XtProcessLock(); expose = XtClass(eb)->core_class.expose; XtProcessUnlock(); (*expose) (wid, event, (Region) NULL); } draw_highlight(eb); draw_shadows(eb); draw_pixmap(eb, event, NULL); } }