Mercurial > hg > xemacs-beta
annotate src/EmacsManager.c @ 5284:d27c1ee1943b
Make the order of preloaded-file-list more sane.
lisp/ChangeLog addition:
2010-10-12 Aidan Kehoe <kehoea@parhasard.net>
* abbrev.el (fundamental-mode-abbrev-table, global-abbrev-table):
Create both these abbrev tables using the usual
#'define-abbrev-table calls, rather than attempting to
special-case them.
* cl-extra.el: Force cl-macs to be loaded here, if cl-extra.el is
being loaded interpreted. Previously other, later files would
redundantly call (load "cl-macs") when interpreted, it's more
reasonable to do it here, once.
* cmdloop.el (read-quoted-char-radix): Use defcustom here, we
don't have any dump-order dependencies that would prevent that.
* custom.el (eval-when-compile): Don't load cl-macs when
interpreted or when byte-compiling, rely on cl-extra.el in the
former case and the appropriate entry in bytecomp-load-hook in the
latter. Get rid of custom-declare-variable-list, we have no
dump-time dependencies that would require it.
* faces.el (eval-when-compile): Don't load cl-macs when
interpreted or when byte-compiling.
* packages.el: Remove some inaccurate comments.
* post-gc.el (cleanup-simple-finalizers): Use #'delete-if-not
here, now the order of preloaded-file-list has been changed to
make it available.
* subr.el (custom-declare-variable-list): Remove. No need for it.
Also remove a stub define-abbrev-table from this file, given the
current order of preloaded-file-list there's no need for it.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 12 Oct 2010 21:11:46 +0100 |
parents | 726060ee587c |
children | 308d34e9f07d |
rev | line source |
---|---|
428 | 1 /* Emacs manager widget. |
2 Copyright (C) 1993-1995 Sun Microsystems, Inc. | |
3 Copyright (C) 1995 Ben Wing. | |
4 | |
5 This file is part of XEmacs. | |
6 | |
7 XEmacs is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
9 Free Software Foundation; either version 2, or (at your option) any | |
10 later version. | |
11 | |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with XEmacs; see the file COPYING. If not, write to | |
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
20 Boston, MA 02111-1307, USA. */ | |
21 | |
22 /* Synched up with: Not in FSF. */ | |
23 | |
24 /* Written by Ben Wing, May, 1994. */ | |
25 | |
26 #include <config.h> | |
27 | |
28 #include <X11/StringDefs.h> | |
29 #include "EmacsManagerP.h" | |
30 #ifdef LWLIB_MENUBARS_MOTIF | |
1315 | 31 #include "xmotif.h" |
428 | 32 #include <Xm/RowColumn.h> |
33 #endif /* LWLIB_MENUBARS_MOTIF */ | |
2286 | 34 #include "compiler.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
|
35 #include "../lwlib/xt-wrappers.h" |
428 | 36 |
37 /* For I, Emacs, am a kind god. Unlike the goddess Athena and the | |
38 Titan Motif, I require no ritual sacrifices to placate the lesser | |
39 daemons of geometry management. */ | |
40 | |
41 static XtResource resources[] = { | |
42 #define offset(field) XtOffset(EmacsManagerWidget, emacs_manager.field) | |
4528
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
43 #define res(name,_class,intrepr,size,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
|
44 Xt_RESOURCE (name, _class, intrepr, size, offset(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
|
45 res (XtNresizeCallback, XtCCallback, XtRCallback, XtCallbackList, |
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
46 resize_callback, XtRImmediate, 0), |
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
47 res (XtNqueryGeometryCallback, XtCCallback, XtRCallback, XtCallbackList, |
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
48 query_geometry_callback, XtRImmediate, 0), |
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
49 res (XtNuserData, XtCUserData, XtRPointer, XtPointer, |
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
50 user_data, XtRImmediate, 0), |
428 | 51 }; |
52 | |
53 /**************************************************************** | |
54 * | |
55 * Full class record constant | |
56 * | |
57 ****************************************************************/ | |
58 | |
59 static XtGeometryResult QueryGeometry (Widget wid, | |
60 XtWidgetGeometry *request, | |
61 XtWidgetGeometry *reply); | |
62 static void Resize (Widget w); | |
63 static XtGeometryResult GeometryManager (Widget w, XtWidgetGeometry *request, | |
64 XtWidgetGeometry *reply); | |
65 static void ChangeManaged (Widget w); | |
66 static void Realize (Widget w, Mask *valueMask, | |
67 XSetWindowAttributes *attributes); | |
68 static void ClassInitialize (void); | |
69 | |
70 EmacsManagerClassRec emacsManagerClassRec = { | |
71 { | |
72 /* core_class fields */ | |
73 #ifdef LWLIB_USES_MOTIF | |
74 /* superclass */ (WidgetClass) &xmManagerClassRec, | |
75 #else | |
76 /* superclass */ (WidgetClass) &compositeClassRec, | |
77 #endif | |
4528
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
78 /* class_name */ (String) "EmacsManager", |
440 | 79 /* widget_size */ sizeof (EmacsManagerRec), |
428 | 80 /* class_initialize */ ClassInitialize, |
81 /* class_part_init */ NULL, | |
82 /* class_inited */ FALSE, | |
83 /* initialize */ NULL, | |
84 /* initialize_hook */ NULL, | |
85 /* realize */ Realize, | |
86 /* actions */ NULL, | |
87 /* num_actions */ 0, | |
88 /* resources */ resources, | |
89 /* num_resources */ XtNumber(resources), | |
90 /* xrm_class */ NULLQUARK, | |
91 /* compress_motion */ TRUE, | |
1294 | 92 /* compress_exposure */ XtExposeCompressMaximal | XtExposeNoRegion, |
428 | 93 /* compress_enterleave*/ TRUE, |
94 /* visible_interest */ FALSE, | |
95 /* destroy */ NULL, | |
96 /* resize */ Resize, | |
97 /* expose */ NULL, | |
98 /* set_values */ NULL, | |
99 /* set_values_hook */ NULL, | |
100 /* set_values_almost */ XtInheritSetValuesAlmost, | |
101 /* get_values_hook */ NULL, | |
102 /* accept_focus */ NULL, | |
103 /* version */ XtVersion, | |
104 /* callback_private */ NULL, | |
105 /* tm_table */ XtInheritTranslations, | |
106 /* query_geometry */ QueryGeometry, | |
107 /* display_accelerator*/ XtInheritDisplayAccelerator, | |
108 /* extension */ NULL | |
109 }, | |
110 { | |
111 /* composite_class fields */ | |
112 /* geometry_manager */ GeometryManager, | |
113 /* change_managed */ ChangeManaged, | |
114 /* insert_child */ XtInheritInsertChild, | |
115 /* delete_child */ XtInheritDeleteChild, | |
116 /* extension */ NULL | |
117 }, | |
118 #ifdef LWLIB_USES_MOTIF | |
119 { | |
120 /* constraint_class fields */ | |
121 NULL, /* resource list */ | |
122 0, /* num resources */ | |
123 0, /* constraint size */ | |
124 (XtInitProc)NULL, /* init proc */ | |
125 (XtWidgetProc)NULL, /* destroy proc */ | |
126 (XtSetValuesFunc)NULL, /* set values proc */ | |
127 NULL, /* extension */ | |
128 }, | |
129 { | |
130 /* manager_class fields */ | |
131 XtInheritTranslations, /* translations */ | |
132 NULL, /* syn_resources */ | |
133 0, /* num_syn_resources */ | |
134 NULL, /* syn_cont_resources */ | |
135 0, /* num_syn_cont_resources */ | |
136 XmInheritParentProcess, /* parent_process */ | |
137 NULL, /* extension */ | |
138 }, | |
139 #endif | |
140 { | |
141 /* emacs_manager_class fields */ | |
142 /* empty */ 0, | |
143 } | |
144 }; | |
145 | |
146 WidgetClass emacsManagerWidgetClass = (WidgetClass)&emacsManagerClassRec; | |
147 | |
148 /* What is my preferred size? A suggested size may be given. */ | |
149 | |
150 static XtGeometryResult | |
151 QueryGeometry (Widget w, XtWidgetGeometry *request, XtWidgetGeometry *reply) | |
152 { | |
153 EmacsManagerWidget emw = (EmacsManagerWidget) w; | |
154 EmacsManagerQueryGeometryStruct struc; | |
440 | 155 int request_mode = request->request_mode; |
428 | 156 |
440 | 157 struc.request_mode = request_mode; |
158 struc.proposed_width = (request_mode & CWWidth) ? request->width : 0; | |
159 struc.proposed_height = (request_mode & CWHeight) ? request->height : 0; | |
428 | 160 XtCallCallbackList (w, emw->emacs_manager.query_geometry_callback, &struc); |
161 reply->request_mode = CWWidth | CWHeight; | |
162 reply->width = struc.proposed_width; | |
163 reply->height = struc.proposed_height; | |
440 | 164 if (((request_mode & CWWidth) && (request->width != reply->width)) || |
165 ((request_mode & CWHeight) && (request->height != reply->height))) | |
428 | 166 return XtGeometryAlmost; |
167 return XtGeometryYes; | |
168 } | |
169 | |
170 static void | |
171 Resize (Widget w) | |
172 { | |
173 EmacsManagerWidget emw = (EmacsManagerWidget) w; | |
174 EmacsManagerResizeStruct struc; | |
175 | |
176 struc.width = w->core.width; | |
177 struc.height = w->core.height; | |
178 XtCallCallbackList (w, emw->emacs_manager.resize_callback, &struc); | |
179 } | |
180 | |
181 static XtGeometryResult | |
2286 | 182 GeometryManager (Widget w, XtWidgetGeometry *request, |
183 XtWidgetGeometry *UNUSED (reply)) | |
428 | 184 { |
185 /* Sure, any changes are fine. */ | |
186 | |
440 | 187 #ifdef LWLIB_MENUBARS_MOTIF |
428 | 188 /* The Motif menubar will merrily request a new size every time a |
189 child is added or deleted. Blow it off because it doesn't know | |
190 what it's talking about. */ | |
440 | 191 if (XtClass (w) != xmRowColumnWidgetClass) |
428 | 192 #endif /* LWLIB_MENUBARS_MOTIF */ |
193 { | |
440 | 194 if (request->request_mode & CWWidth) w->core.width = request->width; |
195 if (request->request_mode & CWHeight) w->core.height = request->height; | |
428 | 196 } |
440 | 197 if (request->request_mode & CWBorderWidth) |
198 w->core.border_width = request->border_width; | |
199 if (request->request_mode & CWX) w->core.x = request->x; | |
200 if (request->request_mode & CWY) w->core.y = request->y; | |
428 | 201 |
202 return XtGeometryYes; | |
203 } | |
204 | |
205 static void | |
206 ChangeManaged (Widget w) | |
207 { | |
208 if (!XtIsRealized (w)) | |
209 { | |
440 | 210 XtWidgetGeometry request, reply; |
428 | 211 |
212 /* find out how big we'd like to be ... */ | |
213 | |
440 | 214 request.request_mode = 0; |
215 XtQueryGeometry (w, &request, &reply); | |
216 EmacsManagerChangeSize (w, reply.width, reply.height); | |
428 | 217 } |
218 } | |
219 | |
220 static void | |
221 Realize (Widget w, Mask *valueMask, XSetWindowAttributes *attributes) | |
222 { | |
223 attributes->bit_gravity = NorthWestGravity; | |
224 *valueMask |= CWBitGravity; | |
225 | |
226 XtCreateWindow (w, (unsigned) InputOutput, (Visual *) CopyFromParent, | |
227 *valueMask, attributes); | |
228 } | |
229 | |
230 static void | |
231 ClassInitialize (void) | |
232 { | |
233 return; | |
234 } | |
235 | |
236 void | |
237 EmacsManagerChangeSize (Widget w, Dimension width, Dimension height) | |
238 { | |
239 if (width == 0) | |
240 width = w->core.width; | |
241 if (height == 0) | |
242 height = w->core.height; | |
243 | |
3381 | 244 /* #### AFAICT this gets called in two places. One is in ChangeManaged(), |
245 above. The other is in EmacsFrameResize(). Perhaps ChangeManaged() | |
246 should initiate resize requests, but EmacsFrameResize() should not. | |
247 Unfortunately, I've tried making this conditional on whether we're | |
248 called from EmacsFrameResize() or not, but that results in an infloop | |
249 via the callback to x_layout_widgets() in Resize(). Whee! */ | |
428 | 250 /* do nothing if we're already that size */ |
251 if (w->core.width != width || w->core.height != height) | |
2450 | 252 { |
253 XtGeometryResult result = | |
254 XtMakeResizeRequest (w, width, height, &w->core.width, &w->core.height); | |
255 if (result == XtGeometryNo) | |
256 return; | |
257 if (result == XtGeometryAlmost) | |
258 XtMakeResizeRequest (w, w->core.width, w->core.height, NULL, NULL); | |
259 Resize (w); | |
260 } | |
428 | 261 } |
262 | |
263 |