annotate src/widget.c @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 90335c3336b0
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* The emacs frame widget.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
2 Copyright (C) 1992, 1993, 2000, 2001, 2002, 2003, 2004,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
10 (at your option) any later version.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 /* Emacs 19 face widget ported by Fred Pierresteguy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
22 /* This file has been censored by the Communications Decency Act.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
23 That law was passed under the guise of a ban on pornography, but
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
24 it bans far more than that. This file did not contain pornography,
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
25 but it was censored nonetheless.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
26
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
27 For information on US government censorship of the Internet, and
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
28 what you can do to bring back freedom of the press, see the web
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
29 site http://www.vtw.org/
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
30 */
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
31
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7579
diff changeset
32 #include <config.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include <stdio.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 #include "lisp.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include "xterm.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
37699
a76348c096b4 Include keyboard.h before frame.h.
Eli Zaretskii <eliz@gnu.org>
parents: 36769
diff changeset
37 #include "keyboard.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 #include "frame.h"
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 17166
diff changeset
39 #include "window.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 #include "dispextern.h"
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
42 #include "blockinput.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 #include <X11/StringDefs.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 #include <X11/IntrinsicP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 #include <X11/cursorfont.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 #include "widgetprv.h"
5655
3929b3fb37ee *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5626
diff changeset
48 #include <X11/ObjectP.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 #include <X11/Shell.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 #include <X11/ShellP.h>
9230
786a658d3687 (EmacsFrameSetCharSize): Use lw_refigure_widget() for widget set
Paul Reilly <pmr@pajato.com>
parents: 9165
diff changeset
51 #include "../lwlib/lwlib.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
38219
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
53 #include <signal.h>
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
54 #include "syssignal.h"
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
55
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
56 #include "character.h"
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
57 #include "font.h"
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
58
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 /* This sucks: this is the first default that x-faces.el tries. This won't
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 be used unless neither the "Emacs.EmacsFrame" resource nor the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 "Emacs.EmacsFrame" resource is set; the frame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 may have the wrong default size if this font doesn't exist, but some other
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 font that x-faces.el does. The workaround is to specify some font in the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 resource database; I don't know a solution other than duplicating the font-
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 searching code from x-faces.el in this file.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 This also means that if "Emacs.EmacsFrame" is specified as a non-
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 existent font, then Xt is going to substitute "XtDefaultFont" for it,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 which is a different size than this one. The solution for this is to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 make x-faces.el try to use XtDefaultFont. The problem with that is that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 XtDefaultFont is almost certainly variable-width.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 #### Perhaps we could have this code explicitly set XtDefaultFont to this?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 #define DEFAULT_FACE_FONT "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
78 static void EmacsFrameInitialize (/*Widget, Widget, ArgList, Cardinal * */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
79 static void EmacsFrameDestroy (/* Widget */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
80 static void EmacsFrameRealize (/* Widget, XtValueMask*, XSetWindowAttributes* */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
81 void EmacsFrameResize (/* Widget widget */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
82 static Boolean EmacsFrameSetValues (/* Widget, Widget, Widget,
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
83 ArgList, Cardinal * */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
84 static XtGeometryResult EmacsFrameQueryGeometry (/* Widget, XtWidgetGeometry*,
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
85 XtWidgetGeometry* */);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 #undef XtOffset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 #define XtOffset(p_type,field) \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ((Cardinal) (((char *) (&(((p_type)0)->field))) - ((char *)0)))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 #define offset(field) XtOffset(EmacsFrame, emacs_frame.field)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 static XtResource resources[] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 {XtNgeometry, XtCGeometry, XtRString, sizeof(String),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 offset (geometry), XtRString, (XtPointer) 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 {XtNiconic, XtCIconic, XtRBoolean, sizeof(Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 offset (iconic), XtRImmediate, (XtPointer) False},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 {XtNemacsFrame, XtCEmacsFrame, XtRPointer, sizeof (XtPointer),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 offset (frame), XtRImmediate, 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 {XtNminibuffer, XtCMinibuffer, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 offset (minibuffer), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 {XtNunsplittable, XtCUnsplittable, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 offset (unsplittable), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 {XtNinternalBorderWidth, XtCInternalBorderWidth, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 offset (internal_border_width), XtRImmediate, (XtPointer)4},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 {XtNinterline, XtCInterline, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 offset (interline), XtRImmediate, (XtPointer)0},
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
110 {XtNfont, XtCFont, XtRFontStruct, sizeof(struct font *),
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 offset(font),XtRString, DEFAULT_FACE_FONT},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 offset(foreground_pixel), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 {XtNcursorColor, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 offset(cursor_color), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 {XtNbarCursor, XtCBarCursor, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 offset (bar_cursor), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 {XtNvisualBell, XtCVisualBell, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 offset (visual_bell), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 {XtNbellVolume, XtCBellVolume, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 offset (bell_volume), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 #undef offset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 /*
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 static XtActionsRec
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 emacsFrameActionsTable [] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 {"keypress", key_press},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 {"focus_in", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 {"focus_out", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 static char
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 emacsFrameTranslations [] = "\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 <KeyPress>: keypress()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 <FocusIn>: focus_in()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 <FocusOut>: focus_out()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 ";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 EmacsFrameClassRec emacsFrameClassRec = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 { /* core fields */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 /* superclass */ &widgetClassRec,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 /* class_name */ "EmacsFrame",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 /* widget_size */ sizeof(EmacsFrameRec),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 /* class_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 /* class_part_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 /* class_inited */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 /* initialize */ EmacsFrameInitialize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 /* initialize_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 /* realize */ EmacsFrameRealize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 /* actions */ 0, /*emacsFrameActionsTable*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 /* num_actions */ 0, /*XtNumber (emacsFrameActionsTable)*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 /* resources */ resources,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 /* resource_count */ XtNumber(resources),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 /* xrm_class */ NULLQUARK,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 /* compress_motion */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 /* compress_exposure */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 /* compress_enterleave */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 /* visible_interest */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 /* destroy */ EmacsFrameDestroy,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 /* resize */ EmacsFrameResize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 /* expose */ XtInheritExpose,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 /* set_values */ EmacsFrameSetValues,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 /* set_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 /* set_values_almost */ XtInheritSetValuesAlmost,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 /* get_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 /* accept_focus */ XtInheritAcceptFocus,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 /* version */ XtVersion,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 /* callback_private */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 /* tm_table */ 0, /*emacsFrameTranslations*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 /* query_geometry */ EmacsFrameQueryGeometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 /* display_accelerator */ XtInheritDisplayAccelerator,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 /* extension */ 0
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 WidgetClass emacsFrameClass = (WidgetClass) &emacsFrameClassRec;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 static void
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
182 get_default_char_pixel_size (ew, pixel_width, pixel_height)
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
183 EmacsFrame ew;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
184 int* pixel_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
185 int* pixel_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
188 *pixel_width = FRAME_COLUMN_WIDTH (f);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
189 *pixel_height = FRAME_LINE_HEIGHT (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 static void
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
193 pixel_to_char_size (ew, pixel_width, pixel_height, char_width, char_height)
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
194 EmacsFrame ew;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
195 Dimension pixel_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
196 Dimension pixel_height;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
197 int* char_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
198 int* char_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
201 *char_width = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, (int) pixel_width);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
202 *char_height = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, (int) pixel_height);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
206 char_to_pixel_size (ew, char_width, char_height, pixel_width, pixel_height)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
207 EmacsFrame ew;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
208 int char_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
209 int char_height;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
210 Dimension* pixel_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
211 Dimension* pixel_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
214 *pixel_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, char_width);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
215 *pixel_height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, char_height);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
219 round_size_to_char (ew, in_width, in_height, out_width, out_height)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
220 EmacsFrame ew;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
221 Dimension in_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
222 Dimension in_height;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
223 Dimension* out_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
224 Dimension* out_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 pixel_to_char_size (ew, in_width, in_height, &char_width, &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 char_to_pixel_size (ew, char_width, char_height, out_width, out_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 static Widget
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
233 get_wm_shell (w)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
234 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 Widget wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 for (wmshell = XtParent (w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 wmshell && !XtIsWMShell (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 wmshell = XtParent (wmshell));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 return wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
245 #if 0 /* Currently not used. */
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
246
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
248 mark_shell_size_user_specified (wmshell)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
249 Widget wmshell;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 if (! XtIsWMShell (wmshell)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 /* This is kind of sleazy, but I can't see how else to tell it to make it
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 mark the WM_SIZE_HINTS size as user specified when appropriate. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
257 #endif
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
258
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 /* Can't have static frame locals because of some broken compilers.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 Normally, initializing a variable like this doesn't work in emacs,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 but it's ok in this file because it must come after lastfile (and
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 thus have its data not go into text space) because Xt needs to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 write to initialized data objects too.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 */
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
266 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 static Boolean first_frame_p = True;
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
268 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
271 set_frame_size (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
272 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 /* The widget hierarchy is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 argv[0] emacsShell pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 We accept geometry specs in this order:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 *Frame-NAME.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 *EmacsFrame.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 Emacs.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 Other possibilities for widget hierarchies might be
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 argv[0] frame pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 argv[0] Frame-NAME pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 argv[0] Frame-NAME pane emacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 ApplicationShell EmacsFrame Paned EmacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 With the current setup, the text-display-area is the part which is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 an emacs "frame", since that's the only part managed by emacs proper
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (the menubar and the parent of the menubar and all that sort of thing
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 are managed by lwlib.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
301 The EmacsShell widget is simply a replacement for the Shell widget
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 which is able to deal with using an externally-supplied window instead
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 of always creating its own. It is not actually emacs specific, and
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 should possibly have class "Shell" instead of "EmacsShell" to simplify
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 the resources.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 /* Hairily merged geometry */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
310 unsigned int w = FRAME_COLS (ew->emacs_frame.frame);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
311 unsigned int h = FRAME_LINES (ew->emacs_frame.frame);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
312
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 Widget wmshell = get_wm_shell ((Widget) ew);
9708
33dcf295f62a (set_frame_size): Set app_shell and wmshell the same.
Richard M. Stallman <rms@gnu.org>
parents: 9230
diff changeset
314 /* Each Emacs shell is now independent and top-level. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
315
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 if (! XtIsSubclass (wmshell, shellWidgetClass)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
318 /* We don't need this for the moment. The geometry is computed in
6464
7f93299356e2 (set_frame_size): Put #if 0 around a lot of useless code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6331
diff changeset
319 xfns.c. */
7f93299356e2 (set_frame_size): Put #if 0 around a lot of useless code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6331
diff changeset
320 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 /* If the EmacsFrame doesn't have a geometry but the shell does,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 treat that as the geometry of the frame. (Is this bogus?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 if (ew->emacs_frame.geometry == 0)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
325 XtVaGetValues (wmshell, XtNgeometry, &ew->emacs_frame.geometry, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 /* If the Shell is iconic, then the EmacsFrame is iconic. (Is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 this bogus? I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 if (!ew->emacs_frame.iconic)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
330 XtVaGetValues (wmshell, XtNiconic, &ew->emacs_frame.iconic, NULL);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
331
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
332
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 char *geom = 0;
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
335 XtVaGetValues (app_shell, XtNgeometry, &geom, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 if (geom)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 app_flags = XParseGeometry (geom, &app_x, &app_y, &app_w, &app_h);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
339
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 if (ew->emacs_frame.geometry)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 frame_flags = XParseGeometry (ew->emacs_frame.geometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 &frame_x, &frame_y,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 &frame_w, &frame_h);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
344
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 if (first_frame_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 /* If this is the first frame created:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 ====================================
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 - Use the ApplicationShell's size/position, if specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (This is "Emacs.geometry", or the "-geometry" command line arg.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 - Else use the EmacsFrame's size/position.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (This is "*Frame-NAME.geometry")
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 - If the AppShell is iconic, the frame should be iconic.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 AppShell comes first so that -geometry always applies to the first
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 frame created, even if there is an "every frame" entry in the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 resource database.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 if (app_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 x = app_x; y = app_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 flags |= (app_flags & (XValue | YValue | XNegative | YNegative));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 else if (frame_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 if (app_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 w = app_w; h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 flags |= (app_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 else if (frame_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 /* If the AppShell is iconic, then the EmacsFrame is iconic. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 if (!ew->emacs_frame.iconic)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
385 XtVaGetValues (app_shell, XtNiconic, &ew->emacs_frame.iconic, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 first_frame_p = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 /* If this is not the first frame created:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 ========================================
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 - use the EmacsFrame's size/position if specified
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 - Otherwise, use the ApplicationShell's size, but not position.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 So that means that one can specify the position of the first frame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 with "Emacs.geometry" or `-geometry'; but can only specify the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 position of subsequent frames with "*Frame-NAME.geometry".
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 AppShell comes second so that -geometry does not apply to subsequent
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 frames when there is an "every frame" entry in the resource db,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 but does apply to the first frame.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 if (frame_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 if (frame_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 else if (app_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 w = app_w;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 flags |= (app_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 }
6464
7f93299356e2 (set_frame_size): Put #if 0 around a lot of useless code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6331
diff changeset
423 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
425 struct frame *f = ew->emacs_frame.frame;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 Dimension pixel_width, pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
428 /* Take into account the size of the scrollbar. Always use the
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
429 number of columns occupied by the scroll bar here otherwise we
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
430 might end up with a frame width that is not a multiple of the
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
431 frame's character width which is bad for vertically split
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
432 windows. */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
433 f->scroll_bar_actual_width
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
434 = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
436 compute_fringe_widths (f, 0);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
437
44263
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
438 #if 0 /* This can run Lisp code, and it is dangerous to give
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
439 out the frame to Lisp code before it officially exists.
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
440 This is handled in Fx_create_frame so not needed here. */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
441 change_frame_size (f, h, w, 1, 0, 0);
44263
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
442 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 char_to_pixel_size (ew, w, h, &pixel_width, &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 ew->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 ew->core.height = pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446
6789
67bb36e8e602 (EmacsFrameSetCharSize): Do not attempt to preserve the window position.
Richard M. Stallman <rms@gnu.org>
parents: 6766
diff changeset
447 #if 0 /* xfns.c takes care of this now. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 /* If a position was specified, assign it to the shell widget.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 (Else WM won't do anything with it.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 if (flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 /* the tricky things with the sign is to make sure that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 -0 is printed -0. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 sprintf (shell_position, "=%c%d%c%d",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 flags & XNegative ? '-' : '+', x < 0 ? -x : x,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 flags & YNegative ? '-' : '+', y < 0 ? -y : y);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 strncpy (tem, shell_position, len);
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
463 XtVaSetValues (wmshell, XtNgeometry, tem, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 else if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 sprintf (shell_position, "=%dx%d", pixel_width, pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 strncpy (tem, shell_position, len);
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
473 XtVaSetValues (wmshell, XtNgeometry, tem, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 /* If the geometry spec we're using has W/H components, mark the size
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 in the WM_SIZE_HINTS as user specified. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 mark_shell_size_user_specified (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 /* Also assign the iconic status of the frame to the Shell, so that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 the WM sees it. */
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
483 XtVaSetValues (wmshell, XtNiconic, ew->emacs_frame.iconic, NULL);
6464
7f93299356e2 (set_frame_size): Put #if 0 around a lot of useless code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6331
diff changeset
484 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
488 /* Nonzero tells update_wm_hints not to do anything
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
489 (the caller should call update_wm_hints explicitly later.) */
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
490 int update_hints_inhibit;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
493 update_wm_hints (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
494 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 Widget wmshell = get_wm_shell ((Widget)ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 int cw;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 int ch;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 Dimension rounded_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 Dimension rounded_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 int base_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 int base_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 int min_rows = 0, min_cols = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
507 if (update_hints_inhibit)
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
508 return;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
509
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
510 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 check_frame_size (ew->emacs_frame.frame, &min_rows, &min_cols);
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
512 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 pixel_to_char_size (ew, ew->core.width, ew->core.height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 &char_width, &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 char_to_pixel_size (ew, char_width, char_height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 &rounded_width, &rounded_height);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
518 get_default_char_pixel_size (ew, &cw, &ch);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 base_width = (wmshell->core.width - ew->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 + (rounded_width - (char_width * cw)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 base_height = (wmshell->core.height - ew->core.height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 + (rounded_height - (char_height * ch)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 /* This is kind of sleazy, but I can't see how else to tell it to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 make it mark the WM_SIZE_HINTS size as user specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 /* ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 XtVaSetValues (wmshell,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
531 XtNbaseWidth, (XtArgVal) base_width,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
532 XtNbaseHeight, (XtArgVal) base_height,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
533 XtNwidthInc, (XtArgVal) cw,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
534 XtNheightInc, (XtArgVal) ch,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
535 XtNminWidth, (XtArgVal) (base_width + min_cols * cw),
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
536 XtNminHeight, (XtArgVal) (base_height + min_rows * ch),
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
537 NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
540 #if 0
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
541
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
543 create_frame_gcs (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
544 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 {
11884
13f0227c7c56 (create_frame_gcs): Cast args of XCreateGC.
Karl Heuer <kwzh@gnu.org>
parents: 9708
diff changeset
546 struct frame *s = ew->emacs_frame.frame;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
548 s->output_data.x->normal_gc
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
549 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
550 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
551 s->output_data.x->reverse_gc
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
552 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
553 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
554 s->output_data.x->cursor_gc
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
555 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
556 (unsigned long)0, (XGCValues *)0);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
557 s->output_data.x->black_relief.gc = 0;
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
558 s->output_data.x->white_relief.gc = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
561 #endif /* 0 */
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
562
7557
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
563 static char setup_frame_cursor_bits[] =
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
564 {
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
566 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
567 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
568 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
569 };
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
570
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
572 setup_frame_gcs (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
573 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 XGCValues gc_values;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 Pixmap blank_stipple, blank_tile;
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
578 unsigned long valuemask = (GCForeground | GCBackground | GCGraphicsExposures
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
579 | GCStipple | GCTile);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
580 Lisp_Object font;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
581
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
582 XSETFONT (font, ew->emacs_frame.font);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
583 font = Ffont_xlfd_name (font, Qnil);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
584 if (STRINGP (font))
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
585 {
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
586 XFontStruct *xfont = XLoadQueryFont (FRAME_X_DISPLAY_INFO (s)->display,
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
587 SDATA (font));
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
588 if (xfont)
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
589 {
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
590 gc_values.font = xfont->fid;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
591 valuemask |= GCFont;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
592 }
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
593 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 /* We have to initialize all of our GCs to have a stipple/tile, otherwise
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 XGetGCValues returns uninitialized data when we query the stipple
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (instead of None or something sensible) and it makes things hard.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 This should be fixed for real by not querying the GCs but instead having
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 some GC-based cache instead of the current face-based cache which doesn't
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 effectively cache all of the GC settings we need to use.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
604 blank_stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
605 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
606 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
607 setup_frame_cursor_bits, 2, 2);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 /* use fg = 0, bg = 1 below, but it's irrelevant since this pixmap should
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 never actually get used as a background tile!
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 */
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
612 blank_tile
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
613 = XCreatePixmapFromBitmapData (XtDisplay(ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
614 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
615 setup_frame_cursor_bits, 2, 2,
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
616 (unsigned long)0, (unsigned long)1,
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
617 ew->core.depth);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 /* Normal video */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 gc_values.foreground = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 gc_values.background = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
625 XChangeGC (XtDisplay (ew), s->output_data.x->normal_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
626 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 /* Reverse video style. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 gc_values.background = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
634 XChangeGC (XtDisplay (ew), s->output_data.x->reverse_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
635 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 /* Cursor has to have an empty stipple. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 gc_values.background = ew->emacs_frame.cursor_color;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 gc_values.tile = blank_tile;
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
642 gc_values.stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
643 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
644 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
645 setup_frame_cursor_bits, 16, 16);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
646 XChangeGC (XtDisplay (ew), s->output_data.x->cursor_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
647 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
651 update_various_frame_slots (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
652 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
654 struct frame *f = ew->emacs_frame.frame;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
655 struct x_output *x = f->output_data.x;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
656 FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
657 FRAME_PIXEL_WIDTH (f) = ew->core.width;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
658 f->internal_border_width = ew->emacs_frame.internal_border_width;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
663 update_from_various_frame_slots (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
664 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
666 struct frame *f = ew->emacs_frame.frame;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
667 struct x_output *x = f->output_data.x;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
668 ew->core.height = FRAME_PIXEL_HEIGHT (f) - x->menubar_height;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
669 ew->core.width = FRAME_PIXEL_WIDTH (f);
83504
7aa43f830ce4 Fix tooltip border color.
Karoly Lorentey <lorentey@elte.hu>
parents: 68651
diff changeset
670 ew->core.background_pixel = FRAME_BACKGROUND_PIXEL (f);
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
671 ew->emacs_frame.internal_border_width = f->internal_border_width;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 ew->emacs_frame.font = x->font;
83504
7aa43f830ce4 Fix tooltip border color.
Karoly Lorentey <lorentey@elte.hu>
parents: 68651
diff changeset
673 ew->emacs_frame.foreground_pixel = FRAME_FOREGROUND_PIXEL (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 ew->emacs_frame.cursor_color = x->cursor_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 ew->core.border_pixel = x->border_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
678 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
679 EmacsFrameInitialize (request, new, dum1, dum2)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
680 Widget request;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
681 Widget new;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
682 ArgList dum1;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
683 Cardinal *dum2;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 EmacsFrame ew = (EmacsFrame)new;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 if (!ew->emacs_frame.frame)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 fprintf (stderr,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 "can't create an emacs frame widget without a frame\n");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 exit (1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 update_from_various_frame_slots (ew);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
695 set_frame_size (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
700 EmacsFrameRealize (widget, mask, attrs)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
701 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
702 XtValueMask *mask;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
703 XSetWindowAttributes *attrs;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706
29861
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
707 /* This used to contain SubstructureRedirectMask, but this turns out
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
708 to be a problem with XIM on Solaris, and events from that mask
29863
bd4f71c0f33b (EmacsFrameRealize): Fix typo.
Gerd Moellmann <gerd@gnu.org>
parents: 29861
diff changeset
709 don't seem to be used. Let's check that. */
29861
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
710 attrs->event_mask = (STANDARD_EVENT_SET
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
711 | PropertyChangeMask
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
712 | SubstructureNotifyMask);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 *mask |= CWEventMask;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 attrs);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
716 update_wm_hints (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
719 extern void free_frame_faces (/* struct frame * */);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
722 EmacsFrameDestroy (widget)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
723 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 EmacsFrame ew = (EmacsFrame) widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 if (! s) abort ();
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
729 if (! s->output_data.x) abort ();
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
731 BLOCK_INPUT;
34319
d446a08a996e (EmacsFrameDestroy): Call x_free_gcs instead of
Gerd Moellmann <gerd@gnu.org>
parents: 30575
diff changeset
732 x_free_gcs (s);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
733 if (s->output_data.x->white_relief.gc)
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
734 XFreeGC (XtDisplay (widget), s->output_data.x->white_relief.gc);
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
735 if (s->output_data.x->black_relief.gc)
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
736 XFreeGC (XtDisplay (widget), s->output_data.x->black_relief.gc);
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
737 UNBLOCK_INPUT;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
741 EmacsFrameResize (widget)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
742 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 struct frame *f = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 int columns;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 int rows;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows);
25356
5db69f7aadca Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25151
diff changeset
750 change_frame_size (f, rows, columns, 0, 1, 0);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
751 update_wm_hints (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 update_various_frame_slots (ew);
16492
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
753
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
754 cancel_mouse_face (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 static Boolean
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
758 EmacsFrameSetValues (cur_widget, req_widget, new_widget, dum1, dum2)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
759 Widget cur_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
760 Widget req_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
761 Widget new_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
762 ArgList dum1;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
763 Cardinal *dum2;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 EmacsFrame cur = (EmacsFrame)cur_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 EmacsFrame new = (EmacsFrame)new_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 Boolean needs_a_refresh = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 Boolean has_to_recompute_size;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 Boolean has_to_recompute_gcs;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 Boolean has_to_update_hints;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 int char_width, char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 Dimension pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 Dimension pixel_height;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
776
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 has_to_recompute_gcs = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 || (cur->emacs_frame.foreground_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 != new->emacs_frame.foreground_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 || (cur->core.background_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 != new->core.background_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 );
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
783
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 has_to_recompute_size = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 && cur->core.width == new->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 && cur->core.height == new->core.height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 has_to_update_hints = (cur->emacs_frame.font != new->emacs_frame.font);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 if (has_to_recompute_gcs)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 setup_frame_gcs (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 needs_a_refresh = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
795
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 if (has_to_recompute_size)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 pixel_width = new->core.width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 pixel_height = new->core.height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 pixel_to_char_size (new, pixel_width, pixel_height, &char_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 char_to_pixel_size (new, char_width, char_height, &pixel_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 new->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 new->core.height = pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 change_frame_size (new->emacs_frame.frame, char_height, char_width,
25356
5db69f7aadca Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25151
diff changeset
808 1, 0, 0);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 needs_a_refresh = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 if (has_to_update_hints)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 update_wm_hints (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 update_various_frame_slots (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 /* #### This doesn't work, I haven't been able to find ANY kludge that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 will let (x-create-frame '((iconic . t))) work. It seems that changes
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 to wm_shell's iconic slot have no effect after it has been realized,
17166
1c7f93c8670b Fix typo in comment.
Karl Heuer <kwzh@gnu.org>
parents: 16492
diff changeset
820 and calling XIconifyWindow doesn't work either (even though the window
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 has been created.) Perhaps there is some property we could smash
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
822 directly, but I'm sick of this for now.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 if (cur->emacs_frame.iconic != new->emacs_frame.iconic)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 Widget wmshell = get_wm_shell ((Widget) cur);
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
827 XtVaSetValues (wmshell, XtNiconic,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
828 (XtArgVal) new->emacs_frame.iconic, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 return needs_a_refresh;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 static XtGeometryResult
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
835 EmacsFrameQueryGeometry (widget, request, result)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
836 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
837 XtWidgetGeometry* request;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
838 XtWidgetGeometry* result;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 int mask = request->request_mode;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 Dimension ok_width, ok_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 if (mask & (CWWidth | CWHeight))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 round_size_to_char (ew,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 (mask & CWWidth) ? request->width : ew->core.width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 ((mask & CWHeight) ? request->height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 : ew->core.height),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 &ok_width, &ok_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 if ((mask & CWWidth) && (ok_width != request->width))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 result->request_mode |= CWWidth;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 result->width = ok_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 if ((mask & CWHeight) && (ok_height != request->height))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 result->request_mode |= CWHeight;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 result->height = ok_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 return result->request_mode ? XtGeometryAlmost : XtGeometryYes;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 /* Special entrypoints */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
868 EmacsFrameSetCharSize (widget, columns, rows)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
869 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
870 int columns;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
871 int rows;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 EmacsFrame ew = (EmacsFrame) widget;
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
874 Dimension pixel_width, pixel_height;
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
875 struct frame *f = ew->emacs_frame.frame;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
876
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 if (columns < 3) columns = 3; /* no way buddy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
879 check_frame_size (f, &rows, &columns);
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
880 f->scroll_bar_actual_width
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
881 = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f);
9165
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
882
50099
a62497b91c74 Use generic compute_fringe_widths.
Kim F. Storm <storm@cua.dk>
parents: 49600
diff changeset
883 compute_fringe_widths (f, 0);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
884
25078
6de9d21f8a24 (EmacsFrameSetCharSize): Don't add XtNborderWidth
Gerd Moellmann <gerd@gnu.org>
parents: 24999
diff changeset
885 char_to_pixel_size (ew, columns, rows, &pixel_width, &pixel_height);
6de9d21f8a24 (EmacsFrameSetCharSize): Don't add XtNborderWidth
Gerd Moellmann <gerd@gnu.org>
parents: 24999
diff changeset
886
6de9d21f8a24 (EmacsFrameSetCharSize): Don't add XtNborderWidth
Gerd Moellmann <gerd@gnu.org>
parents: 24999
diff changeset
887 #if 0 /* This doesn't seem to be right. The frame gets too wide. --gerd. */
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
888 /* Something is really strange here wrt to the border width:
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
889 Apparently, XtNwidth and XtNheight include the border, so we have
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
890 to add it here. But the XtNborderWidth set for the widgets has
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
891 no similarity to what f->border_width is set to. */
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
892 XtVaGetValues (widget, XtNborderWidth, &border_width, NULL);
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
893 pixel_height += 2 * border_width;
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
894 pixel_width += 2 * border_width;
25078
6de9d21f8a24 (EmacsFrameSetCharSize): Don't add XtNborderWidth
Gerd Moellmann <gerd@gnu.org>
parents: 24999
diff changeset
895 #endif
6de9d21f8a24 (EmacsFrameSetCharSize): Don't add XtNborderWidth
Gerd Moellmann <gerd@gnu.org>
parents: 24999
diff changeset
896
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
897 /* Manually change the height and width of all our widgets,
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
898 adjusting each widget by the same increments. */
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
899 if (ew->core.width != pixel_width
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
900 || ew->core.height != pixel_height)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 {
6199
044dcf8b9066 (EmacsFrameSetCharSize): Don't call XtMakeResizeRequest. Use XtVaSetValues for
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6089
diff changeset
902 int hdelta = pixel_height - ew->core.height;
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
903 int wdelta = pixel_width - ew->core.width;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
904 int column_widget_height = f->output_data.x->column_widget->core.height;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
905 int column_widget_width = f->output_data.x->column_widget->core.width;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
906 int outer_widget_height = f->output_data.x->widget->core.height;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
907 int outer_widget_width = f->output_data.x->widget->core.width;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
908 int old_left = f->output_data.x->widget->core.x;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
909 int old_top = f->output_data.x->widget->core.y;
7579
782afa5d95cb (EmacsFrameSetCharSize): Once again preserve x and y pos,
Richard M. Stallman <rms@gnu.org>
parents: 7557
diff changeset
910
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
911 /* Input is blocked here, and Xt waits for some event to
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
912 occur. */
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
913
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
914 lw_refigure_widget (f->output_data.x->column_widget, False);
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
915 update_hints_inhibit = 1;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
916
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
917 /* Xt waits for a ConfigureNotify event from the window manager
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
918 in EmacsFrameSetCharSize when the shell widget is resized.
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
919 For some window managers like fvwm2 2.2.5 and KDE 2.1 this
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
920 event doesn't arrive for an unknown reason and Emacs hangs in
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
921 Xt when the default font is changed. Tell Xt not to wait,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
922 depending on the value of the frame parameter
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
923 `wait-for-wm'. */
76671
8ee14c8d3504 (EmacsFrameSetCharSize): Catch X errors.
Chong Yidong <cyd@stupidchicken.com>
parents: 75227
diff changeset
924 x_catch_errors (FRAME_X_DISPLAY (f));
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
925 XtVaSetValues (f->output_data.x->widget,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
926 XtNwaitForWm, (XtArgVal) f->output_data.x->wait_for_wm,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
927 NULL);
76671
8ee14c8d3504 (EmacsFrameSetCharSize): Catch X errors.
Chong Yidong <cyd@stupidchicken.com>
parents: 75227
diff changeset
928 x_uncatch_errors ();
38219
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
929
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
930 /* Workaround: When a SIGIO or SIGALRM occurs while Xt is
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
931 waiting for a ConfigureNotify event (see above), this leads
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
932 to Xt waiting indefinitely instead of using its default
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
933 timeout (5 seconds). */
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
934 turn_on_atimers (0);
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
935 #ifdef SIGIO
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
936 sigblock (sigmask (SIGIO));
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
937 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
938
36769
35df75f3f78d (EmacsFrameSetCharSize): Comment update.
Gerd Moellmann <gerd@gnu.org>
parents: 34957
diff changeset
939 /* Do parents first, otherwise LessTif's geometry management
35df75f3f78d (EmacsFrameSetCharSize): Comment update.
Gerd Moellmann <gerd@gnu.org>
parents: 34957
diff changeset
940 enters an infinite loop (as of 2000-01-15). This is fixed in
35df75f3f78d (EmacsFrameSetCharSize): Comment update.
Gerd Moellmann <gerd@gnu.org>
parents: 34957
diff changeset
941 later versions of LessTif (as of 2001-03-13); I'll leave it
35df75f3f78d (EmacsFrameSetCharSize): Comment update.
Gerd Moellmann <gerd@gnu.org>
parents: 34957
diff changeset
942 as is because I think it can't do any harm. */
44671
3a037de0426b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 44263
diff changeset
943 /* In April 2002, simon.marshall@misys.com reports the problem
3a037de0426b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 44263
diff changeset
944 seems not to occur any longer. */
76671
8ee14c8d3504 (EmacsFrameSetCharSize): Catch X errors.
Chong Yidong <cyd@stupidchicken.com>
parents: 75227
diff changeset
945 x_catch_errors (FRAME_X_DISPLAY (f));
27342
cf4ab4e4be66 (EmacsFrameSetCharSize): Change size of children first
Gerd Moellmann <gerd@gnu.org>
parents: 25728
diff changeset
946 XtVaSetValues (f->output_data.x->widget,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
947 XtNheight, (XtArgVal) (outer_widget_height + hdelta),
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
948 XtNwidth, (XtArgVal) (outer_widget_width + wdelta),
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
949 NULL);
27342
cf4ab4e4be66 (EmacsFrameSetCharSize): Change size of children first
Gerd Moellmann <gerd@gnu.org>
parents: 25728
diff changeset
950 XtVaSetValues (f->output_data.x->column_widget,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
951 XtNheight, (XtArgVal) (column_widget_height + hdelta),
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
952 XtNwidth, (XtArgVal) column_widget_width + wdelta,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
953 NULL);
27342
cf4ab4e4be66 (EmacsFrameSetCharSize): Change size of children first
Gerd Moellmann <gerd@gnu.org>
parents: 25728
diff changeset
954 XtVaSetValues ((Widget) ew,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
955 XtNheight, (XtArgVal) pixel_height,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
956 XtNwidth, (XtArgVal) pixel_width,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
957 NULL);
76671
8ee14c8d3504 (EmacsFrameSetCharSize): Catch X errors.
Chong Yidong <cyd@stupidchicken.com>
parents: 75227
diff changeset
958 x_uncatch_errors ();
8ee14c8d3504 (EmacsFrameSetCharSize): Catch X errors.
Chong Yidong <cyd@stupidchicken.com>
parents: 75227
diff changeset
959
38219
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
960 #ifdef SIGIO
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
961 sigunblock (sigmask (SIGIO));
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
962 #endif
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
963 turn_on_atimers (1);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
964
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
965 lw_refigure_widget (f->output_data.x->column_widget, True);
7579
782afa5d95cb (EmacsFrameSetCharSize): Once again preserve x and y pos,
Richard M. Stallman <rms@gnu.org>
parents: 7557
diff changeset
966
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
967 update_hints_inhibit = 0;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
968 update_wm_hints (ew);
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
969
7579
782afa5d95cb (EmacsFrameSetCharSize): Once again preserve x and y pos,
Richard M. Stallman <rms@gnu.org>
parents: 7557
diff changeset
970 /* These seem to get clobbered. I don't know why. - rms. */
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
971 f->output_data.x->widget->core.x = old_left;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
972 f->output_data.x->widget->core.y = old_top;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 }
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
974
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
975 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
976 receive in the ConfigureNotify event; if we get what we asked
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
977 for, then the event won't cause the screen to become garbaged, so
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
978 we have to make sure to do it here. */
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
979 SET_FRAME_GARBAGED (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 }
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
981
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
982
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 17166
diff changeset
983 void
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
984 widget_store_internal_border (widget)
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
985 Widget widget;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
986 {
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
987 EmacsFrame ew = (EmacsFrame) widget;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
988 FRAME_PTR f = ew->emacs_frame.frame;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
989
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
990 ew->emacs_frame.internal_border_width = f->internal_border_width;
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
991 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
992
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
993 /* arch-tag: 931d28e5-0d59-405a-8325-7d475d0a13d9
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
994 (do not change this comment) */