annotate src/widget.c @ 23323:0800a4f84757

(underlying_strftime): Set the buffer to a nonzero value before calling strftime, and check to see whether strftime has set the buffer to zero. This lets us distinguish between an empty buffer and an error. I'm installing this patch by hand now; it will be superseded whenever the glibc sources are propagated back to fsf.org.
author Paul Eggert <eggert@twinsun.com>
date Fri, 25 Sep 1998 21:40:23 +0000
parents fa9ff387d260
children bd6d15dc5a10
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.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 Copyright (C) 1992, 1993 Free Software Foundation, Inc.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 any later version.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
19 Boston, MA 02111-1307, USA. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 /* Emacs 19 face widget ported by Fred Pierresteguy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
23 /* This file has been censored by the Communications Decency Act.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
24 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
25 it bans far more than that. This file did not contain pornography,
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
26 but it was censored nonetheless.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
27
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
28 For information on US government censorship of the Internet, and
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
29 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
30 site http://www.vtw.org/
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
31 */
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
32
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7579
diff changeset
33 #include <config.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 #include <stdio.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include "lisp.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 #include "xterm.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 #define max(a, b) ((a) > (b) ? (a) : (b))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 /* 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
56 be used unless neither the "Emacs.EmacsFrame" resource nor the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 "Emacs.EmacsFrame" resource is set; the frame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 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
59 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
60 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
61 searching code from x-faces.el in this file.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 This also means that if "Emacs.EmacsFrame" is specified as a non-
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 existent font, then Xt is going to substitute "XtDefaultFont" for it,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 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
66 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
67 XtDefaultFont is almost certainly variable-width.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 #### Perhaps we could have this code explicitly set XtDefaultFont to this?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 #define DEFAULT_FACE_FONT "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*"
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
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
74 static void EmacsFrameInitialize (/*Widget, Widget, ArgList, Cardinal * */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
75 static void EmacsFrameDestroy (/* Widget */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
76 static void EmacsFrameRealize (/* Widget, XtValueMask*, XSetWindowAttributes* */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
77 void EmacsFrameResize (/* Widget widget */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
78 static Boolean EmacsFrameSetValues (/* Widget, Widget, Widget,
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
79 ArgList, Cardinal * */);
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
80 static XtGeometryResult EmacsFrameQueryGeometry (/* Widget, XtWidgetGeometry*,
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
81 XtWidgetGeometry* */);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 #undef XtOffset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 #define XtOffset(p_type,field) \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ((Cardinal) (((char *) (&(((p_type)0)->field))) - ((char *)0)))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 #define offset(field) XtOffset(EmacsFrame, emacs_frame.field)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 static XtResource resources[] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 {XtNgeometry, XtCGeometry, XtRString, sizeof(String),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 offset (geometry), XtRString, (XtPointer) 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 {XtNiconic, XtCIconic, XtRBoolean, sizeof(Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 offset (iconic), XtRImmediate, (XtPointer) False},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 {XtNemacsFrame, XtCEmacsFrame, XtRPointer, sizeof (XtPointer),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 offset (frame), XtRImmediate, 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 {XtNminibuffer, XtCMinibuffer, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 offset (minibuffer), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 {XtNunsplittable, XtCUnsplittable, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 offset (unsplittable), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 {XtNinternalBorderWidth, XtCInternalBorderWidth, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 offset (internal_border_width), XtRImmediate, (XtPointer)4},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 {XtNinterline, XtCInterline, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 offset (interline), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 offset(font),XtRString, DEFAULT_FACE_FONT},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 offset(foreground_pixel), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 {XtNcursorColor, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 offset(cursor_color), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 {XtNbarCursor, XtCBarCursor, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 offset (bar_cursor), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 {XtNvisualBell, XtCVisualBell, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 offset (visual_bell), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 {XtNbellVolume, XtCBellVolume, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 offset (bell_volume), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 #undef offset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
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 static XtActionsRec
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 emacsFrameActionsTable [] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 {"keypress", key_press},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 {"focus_in", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 {"focus_out", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 static char
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 emacsFrameTranslations [] = "\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 <KeyPress>: keypress()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 <FocusIn>: focus_in()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 <FocusOut>: focus_out()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 ";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 EmacsFrameClassRec emacsFrameClassRec = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 { /* core fields */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 /* superclass */ &widgetClassRec,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 /* class_name */ "EmacsFrame",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 /* widget_size */ sizeof(EmacsFrameRec),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 /* class_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 /* class_part_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 /* class_inited */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 /* initialize */ EmacsFrameInitialize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 /* initialize_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 /* realize */ EmacsFrameRealize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 /* actions */ 0, /*emacsFrameActionsTable*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 /* num_actions */ 0, /*XtNumber (emacsFrameActionsTable)*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 /* resources */ resources,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 /* resource_count */ XtNumber(resources),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 /* xrm_class */ NULLQUARK,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 /* compress_motion */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 /* compress_exposure */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 /* compress_enterleave */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 /* visible_interest */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 /* destroy */ EmacsFrameDestroy,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 /* resize */ EmacsFrameResize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 /* expose */ XtInheritExpose,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 /* set_values */ EmacsFrameSetValues,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 /* set_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 /* set_values_almost */ XtInheritSetValuesAlmost,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 /* get_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 /* accept_focus */ XtInheritAcceptFocus,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 /* version */ XtVersion,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 /* callback_private */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 /* tm_table */ 0, /*emacsFrameTranslations*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 /* query_geometry */ EmacsFrameQueryGeometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 /* display_accelerator */ XtInheritDisplayAccelerator,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 /* extension */ 0
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 WidgetClass emacsFrameClass = (WidgetClass) &emacsFrameClassRec;
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 static void
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
178 get_default_char_pixel_size (ew, pixel_width, pixel_height)
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
179 EmacsFrame ew;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
180 int* pixel_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
181 int* pixel_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 struct frame* f = ew->emacs_frame.frame;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
184 *pixel_width = FONT_WIDTH (f->output_data.x->font);
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
185 *pixel_height = f->output_data.x->line_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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 static void
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
189 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
190 EmacsFrame ew;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
191 Dimension pixel_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
192 Dimension pixel_height;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
193 int* char_width;
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5655
diff changeset
194 int* char_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 struct frame* f = ew->emacs_frame.frame;
14767
95dca7f7b4b3 (pixel_to_char_size): Cast args to int.
Richard M. Stallman <rms@gnu.org>
parents: 14620
diff changeset
197 *char_width = PIXEL_TO_CHAR_WIDTH (f, (int) pixel_width);
95dca7f7b4b3 (pixel_to_char_size): Cast args to int.
Richard M. Stallman <rms@gnu.org>
parents: 14620
diff changeset
198 *char_height = PIXEL_TO_CHAR_HEIGHT (f, (int) pixel_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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
202 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
203 EmacsFrame ew;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
204 int char_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
205 int char_height;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
206 Dimension* pixel_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
207 Dimension* pixel_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 struct frame* f = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 *pixel_width = CHAR_TO_PIXEL_WIDTH (f, char_width);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 *pixel_height = CHAR_TO_PIXEL_HEIGHT (f, char_height);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
215 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
216 EmacsFrame ew;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
217 Dimension in_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
218 Dimension in_height;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
219 Dimension* out_width;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
220 Dimension* out_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 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
225 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
226 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 static Widget
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
229 get_wm_shell (w)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
230 Widget w;
5626
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 Widget wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 for (wmshell = XtParent (w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 wmshell && !XtIsWMShell (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 wmshell = XtParent (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 return wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
242 mark_shell_size_user_specified (wmshell)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
243 Widget wmshell;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 if (! XtIsWMShell (wmshell)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 /* 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
247 mark the WM_SIZE_HINTS size as user specified when appropriate. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 }
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 /* Can't have static frame locals because of some broken compilers.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 Normally, initializing a variable like this doesn't work in emacs,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 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
255 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
256 write to initialized data objects too.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 static Boolean first_frame_p = True;
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 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
261 set_frame_size (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
262 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 /* The widget hierarchy is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 argv[0] emacsShell pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 We accept geometry specs in this order:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 *Frame-NAME.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 *EmacsFrame.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 Emacs.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 Other possibilities for widget hierarchies might be
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 argv[0] frame pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 argv[0] Frame-NAME pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 argv[0] Frame-NAME pane emacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 ApplicationShell EmacsFrame Paned EmacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 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
287 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
288 (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
289 are managed by lwlib.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 The EmacsShell widget is simply a replacement for the Shell widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 which is able to deal with using an externally-supplied window instead
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 of always creating its own. It is not actually emacs specific, and
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 should possibly have class "Shell" instead of "EmacsShell" to simplify
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 the resources.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 /* Geometry of the AppShell */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 int app_flags = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 int app_x = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 int app_y = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 unsigned int app_w = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 unsigned int app_h = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 /* Geometry of the EmacsFrame */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 int frame_flags = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 int frame_x = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 int frame_y = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 unsigned int frame_w = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 unsigned int frame_h = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 /* Hairily merged geometry */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 int x = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 int y = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 unsigned int w = ew->emacs_frame.frame->width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 unsigned int h = ew->emacs_frame.frame->height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 int flags = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 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
321 /* Each Emacs shell is now independent and top-level. */
33dcf295f62a (set_frame_size): Set app_shell and wmshell the same.
Richard M. Stallman <rms@gnu.org>
parents: 9230
diff changeset
322 Widget app_shell = wmshell;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 if (! XtIsSubclass (wmshell, shellWidgetClass)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
14036
621a575db6f7 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12672
diff changeset
326 /* 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
327 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
328 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 /* If the EmacsFrame doesn't have a geometry but the shell does,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 treat that as the geometry of the frame. (Is this bogus?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 if (ew->emacs_frame.geometry == 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 XtVaGetValues (wmshell, XtNgeometry, &ew->emacs_frame.geometry, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 /* If the Shell is iconic, then the EmacsFrame is iconic. (Is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 this bogus? I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 if (!ew->emacs_frame.iconic)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 XtVaGetValues (wmshell, XtNiconic, &ew->emacs_frame.iconic, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 char *geom = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 XtVaGetValues (app_shell, XtNgeometry, &geom, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 if (geom)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 app_flags = XParseGeometry (geom, &app_x, &app_y, &app_w, &app_h);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 if (ew->emacs_frame.geometry)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 frame_flags = XParseGeometry (ew->emacs_frame.geometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 &frame_x, &frame_y,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 &frame_w, &frame_h);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 if (first_frame_p)
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 this is the first frame created:
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 - Use the ApplicationShell's size/position, if specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (This is "Emacs.geometry", or the "-geometry" command line arg.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 - Else use the EmacsFrame's size/position.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (This is "*Frame-NAME.geometry")
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 - If the AppShell is iconic, the frame should be iconic.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 AppShell comes first so that -geometry always applies to the first
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 frame created, even if there is an "every frame" entry in the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 resource database.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 if (app_flags & (XValue | YValue))
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 x = app_x; y = app_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 flags |= (app_flags & (XValue | YValue | XNegative | YNegative));
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 else if (frame_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 if (app_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 w = app_w; h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 flags |= (app_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 else if (frame_flags & (WidthValue | HeightValue))
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 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 }
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 the AppShell is iconic, then the EmacsFrame is iconic. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 if (!ew->emacs_frame.iconic)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 XtVaGetValues (app_shell, XtNiconic, &ew->emacs_frame.iconic, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 first_frame_p = False;
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 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 /* If this is not the first frame created:
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 - use the EmacsFrame's size/position if specified
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 - Otherwise, use the ApplicationShell's size, but not position.
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 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
406 with "Emacs.geometry" or `-geometry'; but can only specify the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 position of subsequent frames with "*Frame-NAME.geometry".
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 AppShell comes second so that -geometry does not apply to subsequent
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 frames when there is an "every frame" entry in the resource db,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 but does apply to the first frame.
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 if (frame_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 if (frame_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 else if (app_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 w = app_w;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 flags |= (app_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 }
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
431 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 struct frame* frame = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 Dimension pixel_width, pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 char shell_position [32];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 /* Take into account the size of the scrollbar */
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
438 frame->output_data.x->vertical_scroll_bar_extra
9165
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
439 = (!FRAME_HAS_VERTICAL_SCROLL_BARS (frame)
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
440 ? 0
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
441 : FRAME_SCROLL_BAR_PIXEL_WIDTH (frame) > 0
8945
4a2b3d7c2394 (set_frame_size, EmacsFrameSetCharSize): Change
Karl Heuer <kwzh@gnu.org>
parents: 8289
diff changeset
442 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (frame)
9165
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
443 : (FRAME_SCROLL_BAR_COLS (frame)
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
444 * FONT_WIDTH (frame->output_data.x->font)));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 change_frame_size (frame, h, w, 1, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 char_to_pixel_size (ew, w, h, &pixel_width, &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 ew->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 ew->core.height = pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
6789
67bb36e8e602 (EmacsFrameSetCharSize): Do not attempt to preserve the window position.
Richard M. Stallman <rms@gnu.org>
parents: 6766
diff changeset
451 #if 0 /* xfns.c takes care of this now. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 /* If a position was specified, assign it to the shell widget.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (Else WM won't do anything with it.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 if (flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 /* the tricky things with the sign is to make sure that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 -0 is printed -0. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 sprintf (shell_position, "=%c%d%c%d",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 flags & XNegative ? '-' : '+', x < 0 ? -x : x,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 flags & YNegative ? '-' : '+', y < 0 ? -y : y);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 strncpy (tem, shell_position, len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 XtVaSetValues (wmshell, XtNgeometry, tem, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 else if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 sprintf (shell_position, "=%dx%d", pixel_width, pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 strncpy (tem, shell_position, len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 XtVaSetValues (wmshell, XtNgeometry, tem, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 /* 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
481 in the WM_SIZE_HINTS as user specified. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 mark_shell_size_user_specified (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 /* 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
486 the WM sees it. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 XtVaSetValues (wmshell, XtNiconic, ew->emacs_frame.iconic, 0);
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
488 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
492 /* Nonzero tells update_wm_hints not to do anything
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
493 (the caller should call update_wm_hints explicitly later.) */
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
494 int update_hints_inhibit;
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 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
497 update_wm_hints (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
498 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 Widget wmshell = get_wm_shell ((Widget)ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 int cw;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 int ch;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 Dimension rounded_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 Dimension rounded_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 int base_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 int base_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 int min_rows = 0, min_cols = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
511 if (update_hints_inhibit)
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
512 return;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
513
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
514 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 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
516 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 pixel_to_char_size (ew, ew->core.width, ew->core.height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 &char_width, &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 char_to_pixel_size (ew, char_width, char_height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 &rounded_width, &rounded_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 get_default_char_pixel_size (ew, &cw, &ch);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 base_width = (wmshell->core.width - ew->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 + (rounded_width - (char_width * cw)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 base_height = (wmshell->core.height - ew->core.height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 + (rounded_height - (char_height * ch)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 /* 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
530 make it mark the WM_SIZE_HINTS size as user specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 /* ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 XtVaSetValues (wmshell,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 XtNbaseWidth, base_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 XtNbaseHeight, base_height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 XtNwidthInc, cw,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 XtNheightInc, ch,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 XtNminWidth, base_width + min_cols * cw,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 XtNminHeight, base_height + min_rows * ch,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
545 create_frame_gcs (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
546 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 {
11884
13f0227c7c56 (create_frame_gcs): Cast args of XCreateGC.
Karl Heuer <kwzh@gnu.org>
parents: 9708
diff changeset
548 struct frame *s = ew->emacs_frame.frame;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
550 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
551 = 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
552 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
553 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
554 = 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
555 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
556 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
557 = 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
558 (unsigned long)0, (XGCValues *)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
7557
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
561 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
562 {
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
563 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
564 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
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 };
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
568
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
570 setup_frame_gcs (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
571 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 XGCValues gc_values;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 Pixmap blank_stipple, blank_tile;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 /* 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
578 XGetGCValues returns uninitialized data when we query the stipple
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (instead of None or something sensible) and it makes things hard.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 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
582 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
583 effectively cache all of the GC settings we need to use.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
586 blank_stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
587 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
588 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
589 setup_frame_cursor_bits, 2, 2);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 /* 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
592 never actually get used as a background tile!
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 */
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
594 blank_tile
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
595 = XCreatePixmapFromBitmapData (XtDisplay(ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
596 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
597 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
598 (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
599 ew->core.depth);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 /* Normal video */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 gc_values.font = ew->emacs_frame.font->fid;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 gc_values.foreground = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 gc_values.background = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
608 XChangeGC (XtDisplay (ew), s->output_data.x->normal_gc,
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (GCFont | GCForeground | GCBackground | GCGraphicsExposures
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 | GCStipple | GCTile),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 &gc_values);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 /* Reverse video style. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 gc_values.font = ew->emacs_frame.font->fid;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 gc_values.background = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
620 XChangeGC (XtDisplay (ew), s->output_data.x->reverse_gc,
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 (GCFont | GCForeground | GCBackground | GCGraphicsExposures
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 | GCStipple | GCTile),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 &gc_values);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 /* Cursor has to have an empty stipple. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 gc_values.font = ew->emacs_frame.font->fid;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 gc_values.background = ew->emacs_frame.cursor_color;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 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
631 gc_values.stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
632 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
633 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
634 setup_frame_cursor_bits, 16, 16);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
635 XChangeGC (XtDisplay (ew), s->output_data.x->cursor_gc,
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (GCFont | GCForeground | GCBackground | GCGraphicsExposures
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 | GCStipple | GCTile),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 &gc_values);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
642 update_various_frame_slots (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
643 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 {
12672
63201a2c1247 Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12671
diff changeset
645 struct x_output *x = ew->emacs_frame.frame->output_data.x;
14825
1c8e58bf36fe (update_from_various_frame_slots)
Richard M. Stallman <rms@gnu.org>
parents: 14767
diff changeset
646 x->pixel_height = ew->core.height + x->menubar_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 x->pixel_width = ew->core.width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 x->internal_border_width = ew->emacs_frame.internal_border_width;
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
653 update_from_various_frame_slots (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
654 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 {
12672
63201a2c1247 Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12671
diff changeset
656 struct x_output *x = ew->emacs_frame.frame->output_data.x;
14825
1c8e58bf36fe (update_from_various_frame_slots)
Richard M. Stallman <rms@gnu.org>
parents: 14767
diff changeset
657 ew->core.height = x->pixel_height - x->menubar_height;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 ew->core.width = x->pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 ew->core.background_pixel = x->background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 ew->emacs_frame.internal_border_width = x->internal_border_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 ew->emacs_frame.font = x->font;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 ew->emacs_frame.foreground_pixel = x->foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 ew->emacs_frame.cursor_color = x->cursor_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 ew->core.border_pixel = x->border_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
668 EmacsFrameInitialize (request, new, dum1, dum2)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
669 Widget request;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
670 Widget new;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
671 ArgList dum1;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
672 Cardinal *dum2;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 EmacsFrame ew = (EmacsFrame)new;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 if (!ew->emacs_frame.frame)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 fprintf (stderr,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 "can't create an emacs frame widget without a frame\n");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 exit (1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 #if 0 /* done in xfns.c */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 /* If the "Emacs.EmacsFrame.{default,Face}.{attributeFont,AttributeFont}"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 resource is set, then it always overrides "Emacs.EmacsFrame.{font,Font}".
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 It's unfortunate that we have to do this, but we need to know the font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 size for frame-sizing purposes before the faces get initialized. If
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 the "default.attributeFont" isn't set, then we use the font of this
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 EmacsFrame itself, defaulting to XtDefaultFont. Up in the lisp code,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 the "default" face will use the frame's font if its own is not set,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 so everything stays in sync -- it's not possible for the frame's font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 and the default face's font to be different.
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 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 XFontStruct *f = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 XtResource face_res;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 face_res.resource_name = "attributeFont";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 face_res.resource_class = "AttributeFont";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 face_res.resource_type = XtRFontStruct;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 face_res.resource_size = sizeof (XFontStruct *);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 face_res.resource_offset = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 face_res.default_type = XtRImmediate;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 face_res.default_addr = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 XtGetSubresources ((Widget) ew, (XtPointer) &f, "default", "Face",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 &face_res, 1, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 if (f)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 ew->emacs_frame.font = f;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 else if (! ew->emacs_frame.font)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 fprintf (stderr, "emacs frame widget could not load a font\n");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 exit (1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 /* Update the font field in frame */
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
717 ew->emacs_frame.frame->output_data.x->font = ew->emacs_frame.font;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 update_from_various_frame_slots (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 set_frame_size (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 /*create_frame_gcs (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 setup_frame_gcs (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 update_various_frame_slots (ew); */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726
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 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
729 EmacsFrameRealize (widget, mask, attrs)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
730 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
731 XtValueMask *mask;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
732 XSetWindowAttributes *attrs;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735
15044
8704666feefd (EmacsFrameRealize): Use STANDARD_EVENT_SET.
Richard M. Stallman <rms@gnu.org>
parents: 14907
diff changeset
736 attrs->event_mask = (STANDARD_EVENT_SET | PropertyChangeMask
8704666feefd (EmacsFrameRealize): Use STANDARD_EVENT_SET.
Richard M. Stallman <rms@gnu.org>
parents: 14907
diff changeset
737 | SubstructureNotifyMask | SubstructureRedirectMask);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 *mask |= CWEventMask;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 attrs);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 update_wm_hints (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
744 extern void free_frame_faces (/* struct frame * */);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
747 EmacsFrameDestroy (widget)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
748 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 EmacsFrame ew = (EmacsFrame) widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 if (! s) abort ();
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
754 if (! s->output_data.x) abort ();
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
755 if (! s->output_data.x->normal_gc) abort ();
5626
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 /* this would be called from Fdelete_frame() but it needs to free some
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 stuff after the widget has been finalized but before the widget has
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 been freed. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 free_frame_faces (s);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
762 BLOCK_INPUT;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 /* need to be careful that the face-freeing code doesn't free these too */
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
764 XFreeGC (XtDisplay (widget), s->output_data.x->normal_gc);
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
765 XFreeGC (XtDisplay (widget), s->output_data.x->reverse_gc);
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
766 XFreeGC (XtDisplay (widget), s->output_data.x->cursor_gc);
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
767 UNBLOCK_INPUT;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
771 EmacsFrameResize (widget)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
772 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 struct frame *f = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 int columns;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 int rows;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows);
14907
b906d04998c8 (EmacsFrameResize): We may be called from an interrupt,
Richard M. Stallman <rms@gnu.org>
parents: 14825
diff changeset
780 change_frame_size (f, rows, columns, 0, 1);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 update_wm_hints (ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 update_various_frame_slots (ew);
16492
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
783
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
784 cancel_mouse_face (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 static Boolean
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
788 EmacsFrameSetValues (cur_widget, req_widget, new_widget, dum1, dum2)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
789 Widget cur_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
790 Widget req_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
791 Widget new_widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
792 ArgList dum1;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
793 Cardinal *dum2;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 EmacsFrame cur = (EmacsFrame)cur_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 EmacsFrame new = (EmacsFrame)new_widget;
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 Boolean needs_a_refresh = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 Boolean has_to_recompute_size;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 Boolean has_to_recompute_gcs;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 Boolean has_to_update_hints;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 int char_width, char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 Dimension pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 Dimension 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 has_to_recompute_gcs = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 || (cur->emacs_frame.foreground_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 != new->emacs_frame.foreground_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 || (cur->core.background_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 != new->core.background_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 );
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 has_to_recompute_size = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 && cur->core.width == new->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 && cur->core.height == new->core.height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 has_to_update_hints = (cur->emacs_frame.font != new->emacs_frame.font);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 if (has_to_recompute_gcs)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 setup_frame_gcs (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 needs_a_refresh = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 }
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 if (has_to_recompute_size)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 pixel_width = new->core.width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 pixel_height = new->core.height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 pixel_to_char_size (new, pixel_width, pixel_height, &char_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 char_to_pixel_size (new, char_width, char_height, &pixel_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 new->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 new->core.height = pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 change_frame_size (new->emacs_frame.frame, char_height, char_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 1, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 needs_a_refresh = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 }
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 if (has_to_update_hints)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 update_wm_hints (new);
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 update_various_frame_slots (new);
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 /* #### 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
848 will let (x-create-frame '((iconic . t))) work. It seems that changes
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 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
850 and calling XIconifyWindow doesn't work either (even though the window
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 has been created.) Perhaps there is some property we could smash
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
852 directly, but I'm sick of this for now.
5626
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 if (cur->emacs_frame.iconic != new->emacs_frame.iconic)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 Widget wmshell = get_wm_shell ((Widget) cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 XtVaSetValues (wmshell, XtNiconic, new->emacs_frame.iconic, 0);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 return needs_a_refresh;
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 static XtGeometryResult
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
864 EmacsFrameQueryGeometry (widget, request, result)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
865 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
866 XtWidgetGeometry* request;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
867 XtWidgetGeometry* result;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 int mask = request->request_mode;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 Dimension ok_width, ok_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 if (mask & (CWWidth | CWHeight))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 round_size_to_char (ew,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (mask & CWWidth) ? request->width : ew->core.width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 ((mask & CWHeight) ? request->height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 : ew->core.height),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 &ok_width, &ok_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 if ((mask & CWWidth) && (ok_width != request->width))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 result->request_mode |= CWWidth;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 result->width = ok_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 if ((mask & CWHeight) && (ok_height != request->height))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 result->request_mode |= CWHeight;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 result->height = ok_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 return result->request_mode ? XtGeometryAlmost : XtGeometryYes;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 /* Special entrypoints */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
897 EmacsFrameSetCharSize (widget, columns, rows)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
898 Widget widget;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
899 int columns;
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
900 int rows;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 EmacsFrame ew = (EmacsFrame) widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 Dimension pixel_width, pixel_height, granted_width, granted_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 XtGeometryResult result;
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
905 struct frame *f = ew->emacs_frame.frame;
6629
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
906 Arg al[2];
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
907 int ac = 0;
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
908
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 if (columns < 3) columns = 3; /* no way buddy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
911 check_frame_size (f, &rows, &columns);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
912 f->output_data.x->vertical_scroll_bar_extra
9165
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
913 = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f)
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
914 ? 0
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
915 : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
8945
4a2b3d7c2394 (set_frame_size, EmacsFrameSetCharSize): Change
Karl Heuer <kwzh@gnu.org>
parents: 8289
diff changeset
916 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
917 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font)));
9165
cdbd78e42e03 (set_frame_size, EmacsFrameSetCharSize): Use new width formula.
Karl Heuer <kwzh@gnu.org>
parents: 8945
diff changeset
918
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 char_to_pixel_size (ew, columns, rows, &pixel_width, &pixel_height);
6199
044dcf8b9066 (EmacsFrameSetCharSize): Don't call XtMakeResizeRequest. Use XtVaSetValues for
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6089
diff changeset
920
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
921 /* 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
922 adjusting each widget by the same increments. */
6199
044dcf8b9066 (EmacsFrameSetCharSize): Don't call XtMakeResizeRequest. Use XtVaSetValues for
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6089
diff changeset
923 if (ew->core.width != pixel_width || ew->core.height != pixel_height)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 {
6199
044dcf8b9066 (EmacsFrameSetCharSize): Don't call XtMakeResizeRequest. Use XtVaSetValues for
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6089
diff changeset
925 int hdelta = pixel_height - ew->core.height;
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
926 int wdelta = pixel_width - ew->core.width;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
927 int column_widget_height = f->output_data.x->column_widget->core.height;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
928 int column_widget_width = f->output_data.x->column_widget->core.width;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
929 int outer_widget_height = f->output_data.x->widget->core.height;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
930 int outer_widget_width = f->output_data.x->widget->core.width;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
931 int old_left = f->output_data.x->widget->core.x;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
932 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
933
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
934 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
935 update_hints_inhibit = 1;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
936
6629
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
937 ac = 0;
6304
e6b7a921ccab (EmacsFrameSetCharSize): Call XawPanedSetRefigureMode.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6199
diff changeset
938 XtSetArg (al[ac], XtNheight, pixel_height); ac++;
e6b7a921ccab (EmacsFrameSetCharSize): Call XawPanedSetRefigureMode.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6199
diff changeset
939 XtSetArg (al[ac], XtNwidth, pixel_width); ac++;
e6b7a921ccab (EmacsFrameSetCharSize): Call XawPanedSetRefigureMode.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6199
diff changeset
940 XtSetValues ((Widget) ew, al, ac);
6629
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
941
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
942 ac = 0;
1a11d0ceb11b (EmacsFrameSetCharSize): Clean up code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6606
diff changeset
943 XtSetArg (al[ac], XtNheight, column_widget_height + hdelta); ac++;
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
944 XtSetArg (al[ac], XtNwidth, column_widget_width + wdelta); ac++;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
945 XtSetValues (f->output_data.x->column_widget, al, ac);
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
946
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
947 ac = 0;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
948 XtSetArg (al[ac], XtNheight, outer_widget_height + hdelta); ac++;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
949 XtSetArg (al[ac], XtNwidth, outer_widget_width + wdelta); ac++;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
950 XtSetValues (f->output_data.x->widget, al, ac);
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
951
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
952 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
953
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
954 update_hints_inhibit = 0;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
955 update_wm_hints (ew);
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
956
15827
10d82268090b (EmacsFrameSetCharSize): Call do_pending_window_change.
Richard M. Stallman <rms@gnu.org>
parents: 15044
diff changeset
957 do_pending_window_change ();
10d82268090b (EmacsFrameSetCharSize): Call do_pending_window_change.
Richard M. Stallman <rms@gnu.org>
parents: 15044
diff changeset
958
7579
782afa5d95cb (EmacsFrameSetCharSize): Once again preserve x and y pos,
Richard M. Stallman <rms@gnu.org>
parents: 7557
diff changeset
959 /* These seem to get clobbered. I don't know why. - rms. */
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
960 f->output_data.x->widget->core.x = old_left;
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
961 f->output_data.x->widget->core.y = old_top;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 }
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
963
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
964 /* 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
965 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
966 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
967 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
968 SET_FRAME_GARBAGED (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 }
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
970
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 17166
diff changeset
971 void
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
972 widget_store_internal_border (widget)
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
973 Widget widget;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
974 {
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
975 EmacsFrame ew = (EmacsFrame) widget;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
976 FRAME_PTR f = ew->emacs_frame.frame;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
977
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
978 ew->emacs_frame.internal_border_width
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
979 = f->output_data.x->internal_border_width;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
980 }