Mercurial > emacs
annotate lwlib/lwlib-utils.c @ 58911:50c8d5bb29a0
(isearch-edit-string): Set 7th arg of
`read-from-minibuffer' to `t' to inherit the current input
method (whose name is indicated by [IM] in the minibuffer prompt)
from the current buffer to the minibuffer.
(isearch-lazy-highlight-update): Put body to `with-local-quit'
to allow C-g quitting for lazy highlighting looping inside the
search with nested repetition operators. Add overlay to the list
before setting its face and other properties to avoid the case of
code quitting after placing the new overlay but before it's
recorded on the list. Select the window where isearch was
activated, to highlight matches in the right window when isearch
switches the current window to the minibuffer.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Sun, 12 Dec 2004 21:53:14 +0000 |
parents | 695cf19ef79e |
children | 23a17af379b1 375f2633d815 |
rev | line source |
---|---|
5626 | 1 /* Defines some widget utility functions. |
2 Copyright (C) 1992 Lucid, Inc. | |
3 | |
4 This file is part of the Lucid Widget Library. | |
5 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
6 The Lucid Widget Library is free software; you can redistribute it and/or |
5626 | 7 modify it under the terms of the GNU General Public License as published by |
8 the Free Software Foundation; either version 1, or (at your option) | |
9 any later version. | |
10 | |
11 The Lucid Widget Library is distributed in the hope that it will be useful, | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
5626 | 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13758
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13758
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
5626 | 20 |
11358
cba458f0dc21
If HAVE_CONFIG_H, include config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7514
diff
changeset
|
21 #ifdef HAVE_CONFIG_H |
cba458f0dc21
If HAVE_CONFIG_H, include config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7514
diff
changeset
|
22 #include <config.h> |
cba458f0dc21
If HAVE_CONFIG_H, include config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7514
diff
changeset
|
23 #endif |
cba458f0dc21
If HAVE_CONFIG_H, include config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7514
diff
changeset
|
24 |
13758
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
25 /* Definitions of these in config.h can cause |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
26 declaration conflicts later on between declarations for index |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
27 and declarations for strchr. This file doesn't use |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
28 index and rindex, so cancel them. */ |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
29 #undef index |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
30 #undef rindex |
5a7e9e98add7
Add #undef for index and rindex.
Karl Heuer <kwzh@gnu.org>
parents:
11358
diff
changeset
|
31 |
41767 | 32 #include "../src/lisp.h" |
33 | |
5626 | 34 #include <X11/Xatom.h> |
35 #include <X11/IntrinsicP.h> | |
36 #include <X11/ObjectP.h> | |
37 #include "lwlib-utils.h" | |
29891 | 38 #include "lwlib.h" |
5626 | 39 |
40 /* Redisplay the contents of the widget, without first clearing it. */ | |
41 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
42 XtNoClearRefreshWidget (widget) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
43 Widget widget; |
5626 | 44 { |
45 XEvent event; | |
46 | |
47 event.type = Expose; | |
48 event.xexpose.serial = 0; | |
49 event.xexpose.send_event = 0; | |
50 event.xexpose.display = XtDisplay (widget); | |
51 event.xexpose.window = XtWindow (widget); | |
52 event.xexpose.x = 0; | |
53 event.xexpose.y = 0; | |
54 event.xexpose.width = widget->core.width; | |
55 event.xexpose.height = widget->core.height; | |
56 event.xexpose.count = 0; | |
57 | |
58 (*widget->core.widget_class->core_class.expose) | |
59 (widget, &event, (Region)NULL); | |
60 } | |
61 | |
62 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
63 /* |
5626 | 64 * Apply a function to all the subwidgets of a given widget recursively. |
65 */ | |
66 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
67 XtApplyToWidgets (w, proc, arg) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
68 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
69 XtApplyToWidgetsProc proc; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
70 XtPointer arg; |
5626 | 71 { |
72 if (XtIsComposite (w)) | |
73 { | |
74 CompositeWidget cw = (CompositeWidget) w; | |
75 /* We have to copy the children list before mapping over it, because | |
76 the procedure might add/delete elements, which would lose badly. | |
77 */ | |
78 int nkids = cw->composite.num_children; | |
79 Widget *kids = (Widget *) malloc (sizeof (Widget) * nkids); | |
80 int i; | |
30279
3f00bdb24c1f
(XtApplyToWidgets): Cast args of lwlib_bcopy.
Dave Love <fx@gnu.org>
parents:
29891
diff
changeset
|
81 lwlib_bcopy ((char *) cw->composite.children, (char *) kids, |
3f00bdb24c1f
(XtApplyToWidgets): Cast args of lwlib_bcopy.
Dave Love <fx@gnu.org>
parents:
29891
diff
changeset
|
82 sizeof (Widget) * nkids); |
5626 | 83 for (i = 0; i < nkids; i++) |
84 /* This prevent us from using gadgets, why is it here? */ | |
85 /* if (XtIsWidget (kids [i])) */ | |
86 { | |
87 /* do the kiddies first in case we're destroying */ | |
88 XtApplyToWidgets (kids [i], proc, arg); | |
89 proc (kids [i], arg); | |
90 } | |
91 free (kids); | |
92 } | |
93 } | |
94 | |
95 | |
96 /* | |
97 * Apply a function to all the subwidgets of a given widget recursively. | |
98 * Stop as soon as the function returns non NULL and returns this as a value. | |
99 */ | |
100 void * | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
101 XtApplyUntilToWidgets (w, proc, arg) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
102 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
103 XtApplyUntilToWidgetsProc proc; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
104 XtPointer arg; |
5626 | 105 { |
106 void* result; | |
107 if (XtIsComposite (w)) | |
108 { | |
109 CompositeWidget cw = (CompositeWidget)w; | |
110 int i; | |
111 for (i = 0; i < cw->composite.num_children; i++) | |
112 if (XtIsWidget (cw->composite.children [i])){ | |
113 result = proc (cw->composite.children [i], arg); | |
114 if (result) | |
115 return result; | |
116 result = XtApplyUntilToWidgets (cw->composite.children [i], proc, | |
117 arg); | |
118 if (result) | |
119 return result; | |
120 } | |
121 } | |
122 return NULL; | |
123 } | |
124 | |
125 | |
126 /* | |
127 * Returns a copy of the list of all children of a composite widget | |
128 */ | |
129 Widget * | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
130 XtCompositeChildren (widget, number) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
131 Widget widget; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
132 unsigned int* number; |
5626 | 133 { |
134 CompositeWidget cw = (CompositeWidget)widget; | |
135 Widget* result; | |
136 int n; | |
137 int i; | |
138 | |
139 if (!XtIsComposite (widget)) | |
140 { | |
141 *number = 0; | |
142 return NULL; | |
143 } | |
144 n = cw->composite.num_children; | |
145 result = (Widget*)XtMalloc (n * sizeof (Widget)); | |
146 *number = n; | |
147 for (i = 0; i < n; i++) | |
148 result [i] = cw->composite.children [i]; | |
149 return result; | |
150 } | |
151 | |
152 Boolean | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
153 XtWidgetBeingDestroyedP (widget) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
154 Widget widget; |
5626 | 155 { |
156 return widget->core.being_destroyed; | |
157 } | |
158 | |
159 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
160 XtSafelyDestroyWidget (widget) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
161 Widget widget; |
5626 | 162 { |
163 #if 0 | |
164 | |
165 /* this requires IntrinsicI.h (actually, InitialI.h) */ | |
166 | |
167 XtAppContext app = XtWidgetToApplicationContext(widget); | |
168 | |
169 if (app->dispatch_level == 0) | |
170 { | |
171 app->dispatch_level = 1; | |
172 XtDestroyWidget (widget); | |
173 /* generates an event so that the event loop will be called */ | |
174 XChangeProperty (XtDisplay (widget), XtWindow (widget), | |
175 XA_STRING, XA_STRING, 32, PropModeAppend, NULL, 0); | |
176 app->dispatch_level = 0; | |
177 } | |
178 else | |
179 XtDestroyWidget (widget); | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
180 |
5626 | 181 #else |
182 abort (); | |
183 #endif | |
184 } | |
52401 | 185 |
186 /* arch-tag: f21f0a1f-2a4e-44e1-8715-7f234fe2d159 | |
187 (do not change this comment) */ |