annotate lwlib/xlwcheckbox.c @ 5574:d4f334808463

Support inlining labels, bytecomp.el. lisp/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-initial-macro-environment): Add #'declare to this, so it doesn't need to rely on #'cl-compiling file to determine when we're byte-compiling. Update #'labels to support declaring labels inline, as Common Lisp requires. * bytecomp.el (byte-compile-function-form): Don't error if FUNCTION is quoting a non-lambda, non-symbol, just return it. * cl-extra.el (cl-macroexpand-all): If a label name has been quoted, expand to the label placeholder quoted with 'function. This allows the byte compiler to distinguish between uses of the placeholder as data and uses in contexts where it should be inlined. * cl-macs.el: * cl-macs.el (cl-do-proclaim): When proclaming something as inline, if it is bound as a label, don't modify the symbol's plist; instead, treat the first element of its placeholder constant vector as a place to store compile information. * cl-macs.el (declare): Leave processing declarations while compiling to the implementation of #'declare in byte-compile-initial-macro-environment. tests/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (+): Test #'labels and inlining.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 02 Oct 2011 15:32:16 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
1 /* Checkbox Widget for XEmacs.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
2 Copyright (C) 1999 Edward A. Falk
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
3
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
4 This file is part of XEmacs.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
5
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4769
diff changeset
6 XEmacs is free software: you can redistribute it and/or modify it
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4769
diff changeset
8 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4769
diff changeset
9 option) any later version.
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
10
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
14 for more details.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
15
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4769
diff changeset
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
18
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
19 /* Synched up with: Checkbox.c 1.1 */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
20
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
21 /*
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
22 * Checkbox.c - Checkbox button widget
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
23 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
24 * Author: Edward A. Falk
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
25 * falk@falconer.vip.best.com
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
26 *
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
27 * Date: June 30, 1997
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
28 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
29 * Overview: This widget is identical to the Radio widget in behavior,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
30 * except that the button is square and has a check mark.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
31 */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
32
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
33
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
34 #include <config.h>
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
35 #include <stdio.h>
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
36
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
37 #include <X11/IntrinsicP.h>
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
38 #include <X11/StringDefs.h>
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
39 #include ATHENA_XawInit_h_
4528
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
40 #include "xt-wrappers.h"
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
41 #include "xlwcheckboxP.h"
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
42
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
43
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
44 /* by using the same size for the checkbox as for the diamond box,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
45 * we can let the Radio widget do the vast majority of the work.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
46 */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
47
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
48 #define BOX_SIZE 8
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
49 #define DRAW_CHECK 0 /* don't draw the check mark */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
50
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
51 #define cclass(w) ((CheckboxWidgetClass)((w)->core.widget_class))
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
52
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
53 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
54 #define swid(cw) ((cw)->threeD.shadow_width)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
55 #else
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
56 #define swid(cw) ((cw)->core.border_width)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
57 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
58
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
59 #define bsize(cw) (cclass(cw)->radio_class.dsize)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
60 #define bs(cw) (bsize(cw) + 2*swid(cw))
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
61
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
62
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
63 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
64 #define check_width 14
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
65 #define check_height 14
458
c33ae14dd6d0 Import from CVS: tag r21-2-44
cvs
parents: 442
diff changeset
66 static unsigned char check_bits[] = {
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
67 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x03,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
68 0x8c, 0x03, 0xde, 0x01, 0xff, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0x78, 0x00,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
69 0x70, 0x00, 0x20, 0x00};
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
70 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
71
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
72
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
73 /****************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
74 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
75 * Full class record constant
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
76 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
77 ****************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
78
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
79
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
80 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
81 static char defaultTranslations[] =
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
82 "<EnterWindow>: highlight()\n\
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
83 <LeaveWindow>: unpress(draw) unhighlight()\n\
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
84 <Btn1Down>: press()\n\
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
85 <Btn1Down>,<Btn1Up>: unpress(nodraw) toggle() notify()";
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
86 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
87
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
88
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
89
4528
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
90 #define offset(field) XtOffsetOf(CheckboxRec, checkbox.field)
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
91 #define res(name,_class,intrepr,type,member,extrepr,value) \
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
92 Xt_RESOURCE (name, _class, intrepr, type, offset(member), extrepr, value)
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
93 static XtResource resources[] = {
4528
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
94 res (XtNtristate, XtCTristate, XtRBoolean, Boolean, tristate,
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
95 XtRImmediate, FALSE),
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
96 } ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
97 #undef offset
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
98
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
99 /* Member functions */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
100
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
101 static void CheckboxClassInit (void);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
102 static void CheckboxInit (Widget, Widget, ArgList, Cardinal *);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
103 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
104 static void CheckboxRealize (Widget, Mask *, XSetWindowAttributes *);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
105 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
106 static void DrawCheck (Widget);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
107
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
108
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
109 /* Action procs */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
110 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
111 static void CheckboxPress (Widget, XEvent *, String *, Cardinal *);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
112 static void CheckboxUnpress (Widget, XEvent *, String *, Cardinal *);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
113 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
114
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
115 /* internal privates */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
116
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
117 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
118 static XtActionsRec actionsList[] =
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
119 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
120 {"press", CheckboxPress},
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
121 {"unpress", CheckboxUnpress},
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
122 } ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
123 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
124
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
125 #define SuperClass ((RadioWidgetClass)&radioClassRec)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
126
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
127 CheckboxClassRec checkboxClassRec = {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
128 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
129 (WidgetClass) SuperClass, /* superclass */
4528
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
130 (String) "Checkbox", /* class_name */
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
131 sizeof(CheckboxRec), /* size */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
132 CheckboxClassInit, /* class_initialize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
133 NULL, /* class_part_initialize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
134 FALSE, /* class_inited */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
135 CheckboxInit, /* initialize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
136 NULL, /* initialize_hook */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
137 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
138 CheckboxRealize, /* realize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
139 actionsList, /* actions */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
140 XtNumber(actionsList), /* num_actions */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
141 #else
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
142 XtInheritRealize, /* realize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
143 NULL, /* actions */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
144 0, /* num_actions */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
145 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
146 resources, /* resources */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
147 XtNumber(resources), /* resource_count */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
148 NULLQUARK, /* xrm_class */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
149 TRUE, /* compress_motion */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
150 TRUE, /* compress_exposure */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
151 TRUE, /* compress_enterleave */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
152 FALSE, /* visible_interest */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
153 NULL, /* destroy */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
154 XtInheritResize, /* resize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
155 XtInheritExpose, /* expose */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
156 NULL, /* set_values */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
157 NULL, /* set_values_hook */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
158 XtInheritSetValuesAlmost, /* set_values_almost */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
159 NULL, /* get_values_hook */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
160 NULL, /* accept_focus */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
161 XtVersion, /* version */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
162 NULL, /* callback_private */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
163 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
164 defaultTranslations, /* tm_table */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
165 #else
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
166 XtInheritTranslations, /* tm_table */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
167 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
168 XtInheritQueryGeometry, /* query_geometry */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
169 XtInheritDisplayAccelerator, /* display_accelerator */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
170 NULL /* extension */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
171 }, /* CoreClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
172 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
173 XtInheritChangeSensitive /* change_sensitive */
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
174 }, /* SimpleClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
175 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
176 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
177 XtInheritXaw3dShadowDraw /* field not used */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
178 }, /* ThreeDClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
179 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
180 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
181 0 /* field not used */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
182 }, /* LabelClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
183 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
184 0 /* field not used */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
185 }, /* CommandClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
186 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
187 RadioSet, /* Set Procedure. */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
188 RadioUnset, /* Unset Procedure. */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
189 NULL /* extension. */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
190 }, /* ToggleClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
191 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
192 BOX_SIZE,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
193 DrawCheck, /* draw procedure */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
194 NULL /* extension. */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
195 }, /* RadioClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
196 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
197 NULL /* extension. */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
198 }, /* CheckboxClass fields initialization */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
199 };
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
200
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
201 /* for public consumption */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
202 WidgetClass checkboxWidgetClass = (WidgetClass) &checkboxClassRec;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
203
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
204
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
205
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
206
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
207
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
208
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
209 /****************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
210 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
211 * Class Methods
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
212 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
213 ****************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
214
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
215 static void
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
216 CheckboxClassInit (void)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
217 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
218 XawInitializeWidgetSet();
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
219 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
220
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
221
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
222 /*ARGSUSED*/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
223 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
224 CheckboxInit (Widget UNUSED (request),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
225 #if DRAW_CHECK
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
226 Widget new,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
227 #else
3072
4c038e89d563 [xemacs-hg @ 2005-11-16 07:22:37 by stephent]
stephent
parents: 2286
diff changeset
228 Widget UNUSED (new_),
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
229 #endif
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
230 ArgList UNUSED (args),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
231 Cardinal *UNUSED (num_args))
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
232 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
233 #if DRAW_CHECK
3072
4c038e89d563 [xemacs-hg @ 2005-11-16 07:22:37 by stephent]
stephent
parents: 2286
diff changeset
234 CheckboxWidget cw = (CheckboxWidget) new_;
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
235 cw->checkbox.checkmark = None ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
236 cw->checkbox.checkmark_GC = None ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
237 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
238 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
239
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
240
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
241 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
242 static void
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
243 CheckboxRealize(Widget w,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
244 Mask *valueMask,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
245 XSetWindowAttributes *attributes)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
246 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
247 CheckboxWidget cw = (CheckboxWidget) w;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
248 XtGCMask value_mask, dynamic_mask, dontcare_mask ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
249 XGCValues values ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
250
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
251 /* first, call superclass realize */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
252 (*checkboxWidgetClass->core_class.superclass->core_class.realize)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
253 (w, valueMask, attributes);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
254
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
255 /* TODO: cache this via xmu */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
256 if( cw->checkbox.checkmark == None )
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
257 cw->checkbox.checkmark =
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
258 XCreateBitmapFromData( XtDisplay(w), XtWindow(w),
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
259 check_bits,check_width,check_height);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
260
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
261 values.fill_style = FillStippled ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
262 values.stipple = cw->checkbox.checkmark ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
263 values.foreground = cw->label.foreground ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
264 value_mask = GCFillStyle | GCStipple | GCForeground ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
265 dynamic_mask = GCTileStipXOrigin | GCTileStipYOrigin ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
266 dontcare_mask = GCLineWidth | GCLineStyle | GCCapStyle | GCJoinStyle |
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
267 GCFont | GCSubwindowMode | GCGraphicsExposures |
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
268 GCDashOffset | GCDashList | GCArcMode ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
269 cw->checkbox.checkmark_GC =
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
270 XtAllocateGC(w, 0, value_mask, &values, dynamic_mask, dontcare_mask) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
271 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
272 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
273
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
274
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
275 /* Function Name: CheckboxDestroy
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
276 * Description: Destroy Callback for checkbox widget.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
277 * Arguments: w - the checkbox widget that is being destroyed.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 434
diff changeset
278 * junk, garbage - not used.
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
279 * Returns: none.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
280 */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
281
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
282 /* ARGSUSED */
3072
4c038e89d563 [xemacs-hg @ 2005-11-16 07:22:37 by stephent]
stephent
parents: 2286
diff changeset
283 #if DRAW_CHECK
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
284 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
285 CheckboxDestroy (
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
286 Widget w,
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
287 XtPointer UNUSED (junk),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
288 XtPointer UNUSED (garbage))
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
289 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
290 CheckboxWidget cw = (CheckboxWidget) w;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
291
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
292 /* TODO: cache this via xmu */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
293 if( cw->checkbox.checkmark != None )
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
294 XFreePixmap( XtDisplay(w), cw->checkbox.checkmark ) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
295 if( cw->checkbox.checkmark_GC != None )
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
296 XtReleaseGC(w, cw->checkbox.checkmark_GC) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
297 }
3072
4c038e89d563 [xemacs-hg @ 2005-11-16 07:22:37 by stephent]
stephent
parents: 2286
diff changeset
298 #endif /* DRAW_CHECK */
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
299
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
300
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
301
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
302 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
303 /************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
304 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
305 * Actions Procedures
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
306 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
307 ************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
308
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
309 /* ARGSUSED */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
310 static void
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
311 CheckboxPress (Widget w,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
312 XEvent *event,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
313 String *params, /* unused */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
314 Cardinal *num_params) /* unused */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
315 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
316 CheckboxWidget cw = (CheckboxWidget) w ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
317 if( !cw->checkbox.pressed ) {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
318 cw->checkbox.pressed = TRUE ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
319 ((CheckboxWidgetClass)(w->core.widget_class))->radio_class.drawDiamond(w) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
320 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
321 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
322
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
323 static void
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
324 CheckboxUnpress (Widget w,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
325 XEvent *event,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
326 String *params, /* unused */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
327 Cardinal *num_params) /* unused */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
328 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
329 CheckboxWidget cw = (CheckboxWidget) w ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
330 int i ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
331
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
332 if( cw->checkbox.pressed ) {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
333 cw->checkbox.pressed = FALSE ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
334 if( *num_params > 0 && **params == 'd' )
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
335 ((CheckboxWidgetClass)(w->core.widget_class))->radio_class.drawDiamond(w);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
336 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
337 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
338 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
339
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
340
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
341
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
342
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
343
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
344 /************************************************************
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
345 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
346 * Internal Procedures
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
347 *
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
348 ************************************************************/
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
349
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
350 static void
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
351 DrawCheck (Widget w)
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
352 {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
353 CheckboxWidget cw = (CheckboxWidget) w ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
354 Display *dpy = XtDisplay(w) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
355 Window win = XtWindow(w) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
356 GC gc ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
357
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
358 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
359 XPoint pts[6] ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
360 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
361 Dimension s = swid(cw);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
362 Dimension bsz = bsize(cw);
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
363 Position bx,by ; /* Check upper-left */
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
364 Dimension bh ;
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
365 #ifdef _ThreeDP_h
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
366 Dimension bw;
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
367 GC top, bot;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
368 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
369 GC ctr ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
370
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
371 /* foreground GC */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
372 gc = XtIsSensitive(w) ? cw->command.normal_GC : cw->label.gray_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
373
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
374 bh = bs(cw) ;
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
375 bx = cw->label.internal_width ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
376 by = cw->core.height/2 - bh/2 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
377
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
378 #ifdef _ThreeDP_h
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
379 bw = bh ;
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 458
diff changeset
380
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
381 if( !cw->command.set ) {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
382 top = cw->threeD.top_shadow_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
383 bot = cw->threeD.bot_shadow_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
384 } else {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
385 top = cw->threeD.bot_shadow_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
386 bot = cw->threeD.top_shadow_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
387 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
388 ctr = cw->command.inverse_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
389 #else
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
390 ctr = cw->command.set ? cw->command.normal_GC : cw->command.inverse_GC ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
391 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
392
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
393 XFillRectangle(dpy,win,ctr, bx+s,by+s, bsz,bsz) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
394
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
395 #ifdef _ThreeDP_h
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
396 /* top-left shadow */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
397 pts[0].x = bx ; pts[0].y = by ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
398 pts[1].x = bw ; pts[1].y = 0 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
399 pts[2].x = -s ; pts[2].y = s ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
400 pts[3].x = -bsz ; pts[3].y = 0 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
401 pts[4].x = 0 ; pts[4].y = bsz ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
402 pts[5].x = -s ; pts[5].y = s ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
403 XFillPolygon(dpy,win,top, pts,6, Nonconvex,CoordModePrevious) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
404 /* bottom-right shadow */
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
405 pts[0].x = bx+bw ; pts[0].y = by+bh ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
406 pts[1].x = -bw ; pts[1].y = 0 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
407 pts[2].x = s ; pts[2].y = -s ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
408 pts[3].x = bsz ; pts[3].y = 0 ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
409 pts[4].x = 0 ; pts[4].y = -bsz ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
410 pts[5].x = s ; pts[5].y = -s ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
411 XFillPolygon(dpy,win,bot, pts,6, Nonconvex,CoordModePrevious) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
412 #else
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
413 XDrawRectangle(dpy,win,gc, bx+s,by+s, bsz,bsz) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
414 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
415
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
416 #if DRAW_CHECK
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
417 if( cw->command.set && cw->checkbox.checkmark_GC != None ) {
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
418 XSetTSOrigin(dpy,cw->checkbox.checkmark_GC, bx+s, by+s) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
419 XFillRectangle(dpy,win,cw->checkbox.checkmark_GC,
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
420 bx+s, by+s, check_width,check_height) ;
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
421 }
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
422 #endif
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents:
diff changeset
423 }