|
|
1.1 root 1: #ifndef lint
2: static char rcs_id[] = "$Header: button.c,v 1.10 87/09/11 08:17:57 toddb Exp $";
3: #endif lint
4: /*
5: * COPYRIGHT 1987
6: * DIGITAL EQUIPMENT CORPORATION
7: * MAYNARD, MASSACHUSETTS
8: * ALL RIGHTS RESERVED.
9: *
10: * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
11: * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
12: * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
13: * ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
14: *
15: * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS,
16: * APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT
17: * SET FORTH ABOVE.
18: *
19: *
20: * Permission to use, copy, modify, and distribute this software and its
21: * documentation for any purpose and without fee is hereby granted, provided
22: * that the above copyright notice appear in all copies and that both that
23: * copyright notice and this permission notice appear in supporting documentation,
24: * and that the name of Digital Equipment Corporation not be used in advertising
25: * or publicity pertaining to distribution of the software without specific,
26: * written prior permission.
27: */
28:
29: /* button.c -- Handle a button being pressed */
30:
31: #include "xmh.h"
32: #include "bboxint.h"
33:
34:
35: /* Highlight or unhighlight the given button. */
36:
37: FlipColors(button)
38: Button button;
39: {
40: static Arg arglist[] = {
41: {XtNforeground, NULL},
42: {XtNbackground, NULL},
43: };
44: XtArgVal temp;
45: XtCommandGetValues(DISPLAY button->window, arglist, XtNumber(arglist));
46: temp = arglist[0].value;
47: arglist[0].value = arglist[1].value;
48: arglist[1].value = temp;
49: XtCommandSetValues(DISPLAY button->window, arglist, XtNumber(arglist));
50: }
51:
52:
53: /* The given button has just been pressed. (This routine is usually called
54: by the command button widget code.) If it's a radio button, select it.
55: Then call the function registered for this button. */
56:
57: void DoButtonPress(button)
58: Button button;
59: {
60: ButtonBox buttonbox = button->buttonbox;
61: Scrn scrn = buttonbox->scrn;
62: if (!button->enabled) return;
63: if (buttonbox->radio && *(buttonbox->radio) != button) {
64: FlipColors(*(buttonbox->radio));
65: FlipColors(button);
66: *(buttonbox->radio) = button;
67: }
68: LastButtonPressed = button;
69: (*(button->func))(scrn);
70: }
71:
72:
73: /* Act as if the last button pressed was pressed again. */
74:
75: void RedoLastButton()
76: {
77: if (LastButtonPressed)
78: DoButtonPress(LastButtonPressed);
79: }
80:
81:
82: /* Returns the screen in which the last button was pressed. */
83:
84: Scrn LastButtonScreen()
85: {
86: return LastButtonPressed->buttonbox->scrn;
87: }
88:
89:
90: #ifdef X10
91: /* Handle X10 bug where we lose exit window events on the last button. */
92:
93: ClearButtonTracks()
94: {
95: XEvent event;
96: event.type = LeaveWindow;
97: event.window = LastButtonPressed->window;
98: XtDispatchEvent(DISPLAY &event);
99: }
100: #endif X10
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.