annotate src/widget.c @ 17846:c427501449a1

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