annotate src/widget.c @ 111107:f3721a6253a8

Fix mouse highlight in bidi-reordered continued lines. xdisp.c (row_containing_pos): Don't return too early when CHARPOS is in a bidi-reordered continued line. Return immediately when the first hit is found in a line that is not continued, or when an exact match for CHARPOS is found. (mouse_face_from_buffer_pos): Rewrite to not assume that START_CHARPOS is always in mouse_face_beg_row. If necessary, swap mouse_face_beg_row and mouse_face_end_row so that the former is always above the latter or identical to it. Continued lines that begin or end outside of the visible region still don't work.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 02 Oct 2010 17:05:20 +0200
parents dd04c65fb401
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* The emacs frame widget.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
2 Copyright (C) 1992, 1993, 2000, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105693
diff changeset
3 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
10 (at your option) any later version.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 /* Emacs 19 face widget ported by Fred Pierresteguy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
22 /* This file has been censored by the Communications Decency Act.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
23 That law was passed under the guise of a ban on pornography, but
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
24 it bans far more than that. This file did not contain pornography,
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
25 but it was censored nonetheless.
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
26
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
27 For information on US government censorship of the Internet, and
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
28 what you can do to bring back freedom of the press, see the web
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
29 site http://www.vtw.org/
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
30 */
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
31
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7579
diff changeset
32 #include <config.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include <stdio.h>
105669
68dd71358159 * alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100951
diff changeset
34 #include <setjmp.h>
5626
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
37699
a76348c096b4 Include keyboard.h before frame.h.
Eli Zaretskii <eliz@gnu.org>
parents: 36769
diff changeset
38 #include "keyboard.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 #include "frame.h"
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 17166
diff changeset
40 #include "window.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 #include "dispextern.h"
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
43 #include "blockinput.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 #include <X11/StringDefs.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 #include <X11/IntrinsicP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 #include <X11/cursorfont.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 #include "widgetprv.h"
5655
3929b3fb37ee *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5626
diff changeset
49 #include <X11/ObjectP.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 #include <X11/Shell.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 #include <X11/ShellP.h>
9230
786a658d3687 (EmacsFrameSetCharSize): Use lw_refigure_widget() for widget set
Paul Reilly <pmr@pajato.com>
parents: 9165
diff changeset
52 #include "../lwlib/lwlib.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
38219
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
54 #include <signal.h>
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
55 #include "syssignal.h"
f70ea2b09e46 (EmacsFrameSetCharSize): Turn off atimers and block
Gerd Moellmann <gerd@gnu.org>
parents: 38182
diff changeset
56
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
57 #include "character.h"
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
58 #include "font.h"
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
59
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 /* 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
61 be used unless neither the "Emacs.EmacsFrame" resource nor the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 "Emacs.EmacsFrame" resource is set; the frame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 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
64 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
65 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
66 searching code from x-faces.el in this file.
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 This also means that if "Emacs.EmacsFrame" is specified as a non-
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 existent font, then Xt is going to substitute "XtDefaultFont" for it,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 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
71 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
72 XtDefaultFont is almost certainly variable-width.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 #### Perhaps we could have this code explicitly set XtDefaultFont to this?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 #define DEFAULT_FACE_FONT "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
79 static void EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2);
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
80 static void EmacsFrameDestroy (Widget widget);
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
81 static void EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs);
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
82 void EmacsFrameResize (Widget widget);
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
83 static Boolean EmacsFrameSetValues (Widget cur_widget, Widget req_widget, Widget new_widget, ArgList dum1, Cardinal *dum2);
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
84 static XtGeometryResult EmacsFrameQueryGeometry (Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *result);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 #undef XtOffset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 #define XtOffset(p_type,field) \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ((Cardinal) (((char *) (&(((p_type)0)->field))) - ((char *)0)))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 #define offset(field) XtOffset(EmacsFrame, emacs_frame.field)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 static XtResource resources[] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 {XtNgeometry, XtCGeometry, XtRString, sizeof(String),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 offset (geometry), XtRString, (XtPointer) 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 {XtNiconic, XtCIconic, XtRBoolean, sizeof(Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 offset (iconic), XtRImmediate, (XtPointer) False},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 {XtNemacsFrame, XtCEmacsFrame, XtRPointer, sizeof (XtPointer),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 offset (frame), XtRImmediate, 0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 {XtNminibuffer, XtCMinibuffer, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 offset (minibuffer), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 {XtNunsplittable, XtCUnsplittable, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 offset (unsplittable), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 {XtNinternalBorderWidth, XtCInternalBorderWidth, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 offset (internal_border_width), XtRImmediate, (XtPointer)4},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 {XtNinterline, XtCInterline, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 offset (interline), XtRImmediate, (XtPointer)0},
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
109 {XtNfont, XtCFont, XtRFontStruct, sizeof(struct font *),
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 offset(font),XtRString, DEFAULT_FACE_FONT},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 offset(foreground_pixel), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 {XtNcursorColor, XtCForeground, XtRPixel, sizeof(Pixel),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 offset(cursor_color), XtRString, "XtDefaultForeground"},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 {XtNbarCursor, XtCBarCursor, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 offset (bar_cursor), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 {XtNvisualBell, XtCVisualBell, XtRBoolean, sizeof (Boolean),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 offset (visual_bell), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 {XtNbellVolume, XtCBellVolume, XtRInt, sizeof (int),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 offset (bell_volume), XtRImmediate, (XtPointer)0},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 #undef offset
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 /*
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 static XtActionsRec
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 emacsFrameActionsTable [] = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 {"keypress", key_press},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 {"focus_in", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 {"focus_out", emacs_frame_focus_handler},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 static char
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 emacsFrameTranslations [] = "\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 <KeyPress>: keypress()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 <FocusIn>: focus_in()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 <FocusOut>: focus_out()\n\
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 ";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 EmacsFrameClassRec emacsFrameClassRec = {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 { /* core fields */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 /* superclass */ &widgetClassRec,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 /* class_name */ "EmacsFrame",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 /* widget_size */ sizeof(EmacsFrameRec),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 /* class_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 /* class_part_initialize */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 /* class_inited */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 /* initialize */ EmacsFrameInitialize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 /* initialize_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 /* realize */ EmacsFrameRealize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 /* actions */ 0, /*emacsFrameActionsTable*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 /* num_actions */ 0, /*XtNumber (emacsFrameActionsTable)*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 /* resources */ resources,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 /* resource_count */ XtNumber(resources),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 /* xrm_class */ NULLQUARK,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 /* compress_motion */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 /* compress_exposure */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 /* compress_enterleave */ TRUE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 /* visible_interest */ FALSE,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 /* destroy */ EmacsFrameDestroy,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 /* resize */ EmacsFrameResize,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 /* expose */ XtInheritExpose,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 /* set_values */ EmacsFrameSetValues,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 /* set_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 /* set_values_almost */ XtInheritSetValuesAlmost,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 /* get_values_hook */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 /* accept_focus */ XtInheritAcceptFocus,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 /* version */ XtVersion,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 /* callback_private */ 0,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 /* tm_table */ 0, /*emacsFrameTranslations*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 /* query_geometry */ EmacsFrameQueryGeometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 /* display_accelerator */ XtInheritDisplayAccelerator,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 /* extension */ 0
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 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 WidgetClass emacsFrameClass = (WidgetClass) &emacsFrameClassRec;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
181 get_default_char_pixel_size (EmacsFrame ew, int *pixel_width, int *pixel_height)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
184 *pixel_width = FRAME_COLUMN_WIDTH (f);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
185 *pixel_height = FRAME_LINE_HEIGHT (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
189 pixel_to_char_size (EmacsFrame ew, Dimension pixel_width, Dimension pixel_height, int *char_width, int *char_height)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
192 *char_width = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, (int) pixel_width);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
193 *char_height = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, (int) pixel_height);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
197 char_to_pixel_size (EmacsFrame ew, int char_width, int char_height, Dimension *pixel_width, Dimension *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 struct frame* f = ew->emacs_frame.frame;
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
200 *pixel_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, char_width);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
201 *pixel_height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, char_height);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
205 round_size_to_char (EmacsFrame ew, Dimension in_width, Dimension in_height, Dimension *out_width, Dimension *out_height)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 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
210 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
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 Widget
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
214 get_wm_shell (Widget w)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 Widget wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 for (wmshell = XtParent (w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 wmshell && !XtIsWMShell (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 wmshell = XtParent (wmshell));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 return wmshell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
225 #if 0 /* Currently not used. */
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
226
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
228 mark_shell_size_user_specified (wmshell)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
229 Widget wmshell;
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 if (! XtIsWMShell (wmshell)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 /* 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
233 mark the WM_SIZE_HINTS size as user specified when appropriate. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
237 #endif
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
238
5626
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 /* Can't have static frame locals because of some broken compilers.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 Normally, initializing a variable like this doesn't work in emacs,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 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
243 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
244 write to initialized data objects too.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 */
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
246 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 static Boolean first_frame_p = True;
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
248 #endif
5626
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 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
251 set_frame_size (EmacsFrame ew)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 /* The widget hierarchy is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 argv[0] emacsShell pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 We accept geometry specs in this order:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 *Frame-NAME.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 *EmacsFrame.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 Emacs.geometry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 Other possibilities for widget hierarchies might be
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 argv[0] frame pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 argv[0] Frame-NAME pane Frame-NAME
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 ApplicationShell EmacsShell Paned EmacsFrame
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 or
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 argv[0] Frame-NAME pane emacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 ApplicationShell EmacsFrame Paned EmacsTextPane
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 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
276 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
277 (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
278 are managed by lwlib.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
280 The EmacsShell widget is simply a replacement for the Shell widget
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 which is able to deal with using an externally-supplied window instead
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 of always creating its own. It is not actually emacs specific, and
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 should possibly have class "Shell" instead of "EmacsShell" to simplify
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 the resources.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 /* Hairily merged geometry */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
289 unsigned int w = FRAME_COLS (ew->emacs_frame.frame);
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
290 unsigned int h = FRAME_LINES (ew->emacs_frame.frame);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
291
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 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
293 /* Each Emacs shell is now independent and top-level. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
294
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 if (! XtIsSubclass (wmshell, shellWidgetClass)) abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
297 /* 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
298 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
299 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 /* If the EmacsFrame doesn't have a geometry but the shell does,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 treat that as the geometry of the frame. (Is this bogus?
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 if (ew->emacs_frame.geometry == 0)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
304 XtVaGetValues (wmshell, XtNgeometry, &ew->emacs_frame.geometry, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 /* If the Shell is iconic, then the EmacsFrame is iconic. (Is
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 this bogus? I'm not sure.) */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 if (!ew->emacs_frame.iconic)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
309 XtVaGetValues (wmshell, XtNiconic, &ew->emacs_frame.iconic, NULL);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
310
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
311
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 char *geom = 0;
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
314 XtVaGetValues (app_shell, XtNgeometry, &geom, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 if (geom)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 app_flags = XParseGeometry (geom, &app_x, &app_y, &app_w, &app_h);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
318
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 if (ew->emacs_frame.geometry)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 frame_flags = XParseGeometry (ew->emacs_frame.geometry,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 &frame_x, &frame_y,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 &frame_w, &frame_h);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
323
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 if (first_frame_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 /* If this is the first frame created:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 ====================================
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 - Use the ApplicationShell's size/position, if specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 (This is "Emacs.geometry", or the "-geometry" command line arg.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 - Else use the EmacsFrame's size/position.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (This is "*Frame-NAME.geometry")
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 AppShell is iconic, the frame should be iconic.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 AppShell comes first so that -geometry always applies to the first
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 frame created, even if there is an "every frame" entry in the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 resource database.
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 if (app_flags & (XValue | YValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 x = app_x; y = app_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 flags |= (app_flags & (XValue | YValue | XNegative | YNegative));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 else if (frame_flags & (XValue | YValue))
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 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 if (app_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 w = app_w; h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 flags |= (app_flags & (WidthValue | HeightValue));
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 else if (frame_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 /* If the AppShell is iconic, then the EmacsFrame is iconic. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 if (!ew->emacs_frame.iconic)
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
364 XtVaGetValues (app_shell, XtNiconic, &ew->emacs_frame.iconic, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 first_frame_p = False;
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 else
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 /* If this is not the first frame created:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 ========================================
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 - use the EmacsFrame's size/position if specified
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 - Otherwise, use the ApplicationShell's size, but not position.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 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
377 with "Emacs.geometry" or `-geometry'; but can only specify the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 position of subsequent frames with "*Frame-NAME.geometry".
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 AppShell comes second so that -geometry does not apply to subsequent
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 frames when there is an "every frame" entry in the resource db,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 but does apply to the first frame.
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 if (frame_flags & (XValue | YValue))
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 x = frame_x; y = frame_y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 flags |= (frame_flags & (XValue | YValue | XNegative | YNegative));
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 (frame_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 w = frame_w; h = frame_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 flags |= (frame_flags & (WidthValue | HeightValue));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 else if (app_flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 w = app_w;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 h = app_h;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 flags |= (app_flags & (WidthValue | HeightValue));
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 }
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
402 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
404 struct frame *f = ew->emacs_frame.frame;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 Dimension pixel_width, pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
407 /* Take into account the size of the scrollbar. Always use the
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
408 number of columns occupied by the scroll bar here otherwise we
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
409 might end up with a frame width that is not a multiple of the
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
410 frame's character width which is bad for vertically split
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
411 windows. */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
412 f->scroll_bar_actual_width
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
413 = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
415 compute_fringe_widths (f, 0);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
416
44263
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
417 #if 0 /* This can run Lisp code, and it is dangerous to give
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
418 out the frame to Lisp code before it officially exists.
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
419 This is handled in Fx_create_frame so not needed here. */
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
420 change_frame_size (f, h, w, 1, 0, 0);
44263
13c043393136 (set_frame_size): Don't call change_frame_size.
Richard M. Stallman <rms@gnu.org>
parents: 41723
diff changeset
421 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 char_to_pixel_size (ew, w, h, &pixel_width, &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 ew->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 ew->core.height = pixel_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425
6789
67bb36e8e602 (EmacsFrameSetCharSize): Do not attempt to preserve the window position.
Richard M. Stallman <rms@gnu.org>
parents: 6766
diff changeset
426 #if 0 /* xfns.c takes care of this now. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 /* If a position was specified, assign it to the shell widget.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 (Else WM won't do anything with it.)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 if (flags & (XValue | YValue))
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 /* the tricky things with the sign is to make sure that
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 -0 is printed -0. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 sprintf (shell_position, "=%c%d%c%d",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 flags & XNegative ? '-' : '+', x < 0 ? -x : x,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 flags & YNegative ? '-' : '+', y < 0 ? -y : y);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 strncpy (tem, shell_position, len);
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
442 XtVaSetValues (wmshell, XtNgeometry, tem, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 else if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 int len;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 char *tem;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 sprintf (shell_position, "=%dx%d", pixel_width, pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 len = strlen (shell_position) + 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 tem = (char *) xmalloc (len);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 strncpy (tem, shell_position, len);
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
452 XtVaSetValues (wmshell, XtNgeometry, tem, NULL);
5626
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 /* 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
456 in the WM_SIZE_HINTS as user specified. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 if (flags & (WidthValue | HeightValue))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 mark_shell_size_user_specified (wmshell);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 /* 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
461 the WM sees it. */
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
462 XtVaSetValues (wmshell, XtNiconic, ew->emacs_frame.iconic, NULL);
6464
7f93299356e2 (set_frame_size): Put #if 0 around a lot of useless code.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6331
diff changeset
463 #endif /* 0 */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
467 /* Nonzero tells update_wm_hints not to do anything
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
468 (the caller should call update_wm_hints explicitly later.) */
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
469 int update_hints_inhibit;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
472 update_wm_hints (EmacsFrame ew)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 Widget wmshell = get_wm_shell ((Widget)ew);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 int cw;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 int ch;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 Dimension rounded_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 Dimension rounded_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 int char_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 int char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 int base_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 int base_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 int min_rows = 0, min_cols = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
12188
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
485 if (update_hints_inhibit)
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
486 return;
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
487
06ef0aabc2bb (EmacsFrameSetCharSize): Manually alter the height
Karl Heuer <kwzh@gnu.org>
parents: 12052
diff changeset
488 #if 0
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 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
490 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 pixel_to_char_size (ew, ew->core.width, ew->core.height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 &char_width, &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 char_to_pixel_size (ew, char_width, char_height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 &rounded_width, &rounded_height);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
496 get_default_char_pixel_size (ew, &cw, &ch);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 base_width = (wmshell->core.width - ew->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 + (rounded_width - (char_width * cw)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 base_height = (wmshell->core.height - ew->core.height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 + (rounded_height - (char_height * ch)));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 /* 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
504 make it mark the WM_SIZE_HINTS size as user specified.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 /* ((WMShellWidget) wmshell)->wm.size_hints.flags |= USSize;*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 XtVaSetValues (wmshell,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
509 XtNbaseWidth, (XtArgVal) base_width,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
510 XtNbaseHeight, (XtArgVal) base_height,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
511 XtNwidthInc, (XtArgVal) cw,
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
512 XtNheightInc, (XtArgVal) ch,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
513 XtNminWidth, (XtArgVal) (base_width + min_cols * cw),
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
514 XtNminHeight, (XtArgVal) (base_height + min_rows * ch),
30575
e8bd810181fb (set_frame_size, update_wm_hints, EmacsFrameSetValues):
Gerd Moellmann <gerd@gnu.org>
parents: 29863
diff changeset
515 NULL);
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
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
518 #if 0
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
519
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 static void
5708
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
521 create_frame_gcs (ew)
4870efc489ea *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
522 EmacsFrame ew;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 {
11884
13f0227c7c56 (create_frame_gcs): Cast args of XCreateGC.
Karl Heuer <kwzh@gnu.org>
parents: 9708
diff changeset
524 struct frame *s = ew->emacs_frame.frame;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
526 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
527 = 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
528 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
529 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
530 = 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
531 (unsigned long)0, (XGCValues *)0);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
532 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
533 = 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
534 (unsigned long)0, (XGCValues *)0);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
535 s->output_data.x->black_relief.gc = 0;
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
536 s->output_data.x->white_relief.gc = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538
25728
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
539 #endif /* 0 */
342027dc53c2 (set_frame_size, EmacsFrameSetCharSize): Remove
Gerd Moellmann <gerd@gnu.org>
parents: 25461
diff changeset
540
7557
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
541 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
542 {
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
543 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
544 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
545 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
546 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
547 };
889a8cd345b2 (setup_frame_gcs): Move cursor_bits variable out of
Richard M. Stallman <rms@gnu.org>
parents: 6789
diff changeset
548
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
550 setup_frame_gcs (EmacsFrame ew)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 XGCValues gc_values;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 Pixmap blank_stipple, blank_tile;
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
555 unsigned long valuemask = (GCForeground | GCBackground | GCGraphicsExposures
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
556 | GCStipple | GCTile);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
557 Lisp_Object font;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
558
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
559 XSETFONT (font, ew->emacs_frame.font);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
560 font = Ffont_xlfd_name (font, Qnil);
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
561 if (STRINGP (font))
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
562 {
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
563 XFontStruct *xfont = XLoadQueryFont (FRAME_X_DISPLAY_INFO (s)->display,
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
564 SDATA (font));
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
565 if (xfont)
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
566 {
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
567 gc_values.font = xfont->fid;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
568 valuemask |= GCFont;
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
569 }
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
570 }
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 /* 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
573 XGetGCValues returns uninitialized data when we query the stipple
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (instead of None or something sensible) and it makes things hard.
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 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
577 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
578 effectively cache all of the GC settings we need to use.
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
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
581 blank_stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
582 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
583 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
584 setup_frame_cursor_bits, 2, 2);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 /* 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
587 never actually get used as a background tile!
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 */
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
589 blank_tile
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
590 = XCreatePixmapFromBitmapData (XtDisplay(ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
591 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
592 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
593 (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
594 ew->core.depth);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 /* Normal video */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 gc_values.foreground = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 gc_values.background = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
602 XChangeGC (XtDisplay (ew), s->output_data.x->normal_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
603 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 /* Reverse video style. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 gc_values.background = ew->emacs_frame.foreground_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 gc_values.stipple = blank_stipple;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 gc_values.tile = blank_tile;
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
611 XChangeGC (XtDisplay (ew), s->output_data.x->reverse_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
612 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 /* Cursor has to have an empty stipple. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 gc_values.foreground = ew->core.background_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 gc_values.background = ew->emacs_frame.cursor_color;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 gc_values.graphics_exposures = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 gc_values.tile = blank_tile;
11895
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
619 gc_values.stipple
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
620 = XCreateBitmapFromData (XtDisplay (ew),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
621 RootWindowOfScreen (XtScreen (ew)),
81f2806578ed (create_frame_gcs, setup_frame_gcs): Reformat long statements.
Karl Heuer <kwzh@gnu.org>
parents: 11884
diff changeset
622 setup_frame_cursor_bits, 16, 16);
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
623 XChangeGC (XtDisplay (ew), s->output_data.x->cursor_gc,
97731
90335c3336b0 Include character.h and font.h for XSETFONT.
Chong Yidong <cyd@stupidchicken.com>
parents: 94963
diff changeset
624 valuemask, &gc_values);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
628 update_various_frame_slots (EmacsFrame ew)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
630 struct frame *f = ew->emacs_frame.frame;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
631 struct x_output *x = f->output_data.x;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
632 FRAME_PIXEL_HEIGHT (f) = ew->core.height + x->menubar_height;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
633 FRAME_PIXEL_WIDTH (f) = ew->core.width;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
634 f->internal_border_width = ew->emacs_frame.internal_border_width;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
639 update_from_various_frame_slots (EmacsFrame ew)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 {
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
641 struct frame *f = ew->emacs_frame.frame;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
642 struct x_output *x = f->output_data.x;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
643 ew->core.height = FRAME_PIXEL_HEIGHT (f) - x->menubar_height;
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
644 ew->core.width = FRAME_PIXEL_WIDTH (f);
83504
7aa43f830ce4 Fix tooltip border color.
Karoly Lorentey <lorentey@elte.hu>
parents: 68651
diff changeset
645 ew->core.background_pixel = FRAME_BACKGROUND_PIXEL (f);
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
646 ew->emacs_frame.internal_border_width = f->internal_border_width;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 ew->emacs_frame.font = x->font;
83504
7aa43f830ce4 Fix tooltip border color.
Karoly Lorentey <lorentey@elte.hu>
parents: 68651
diff changeset
648 ew->emacs_frame.foreground_pixel = FRAME_FOREGROUND_PIXEL (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 ew->emacs_frame.cursor_color = x->cursor_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 ew->core.border_pixel = x->border_pixel;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
653 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
654 EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 EmacsFrame ew = (EmacsFrame)new;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 if (!ew->emacs_frame.frame)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 fprintf (stderr,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 "can't create an emacs frame widget without a frame\n");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 exit (1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 }
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 update_from_various_frame_slots (ew);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
666 set_frame_size (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
671 EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs)
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)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
29861
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
675 /* This used to contain SubstructureRedirectMask, but this turns out
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
676 to be a problem with XIM on Solaris, and events from that mask
29863
bd4f71c0f33b (EmacsFrameRealize): Fix typo.
Gerd Moellmann <gerd@gnu.org>
parents: 29861
diff changeset
677 don't seem to be used. Let's check that. */
29861
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
678 attrs->event_mask = (STANDARD_EVENT_SET
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
679 | PropertyChangeMask
09d316feea21 (EmacsFrameRealize): Remove SubstructureRedirectMask.
Gerd Moellmann <gerd@gnu.org>
parents: 27342
diff changeset
680 | SubstructureNotifyMask);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 *mask |= CWEventMask;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 attrs);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
684 update_wm_hints (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
687 extern void free_frame_faces (struct frame *);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 static void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
690 EmacsFrameDestroy (Widget widget)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 EmacsFrame ew = (EmacsFrame) widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 struct frame* s = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 if (! s) abort ();
12671
f6386ce0011c Do renamings:
Karl Heuer <kwzh@gnu.org>
parents: 12188
diff changeset
696 if (! s->output_data.x) abort ();
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
698 BLOCK_INPUT;
34319
d446a08a996e (EmacsFrameDestroy): Call x_free_gcs instead of
Gerd Moellmann <gerd@gnu.org>
parents: 30575
diff changeset
699 x_free_gcs (s);
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
700 if (s->output_data.x->white_relief.gc)
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
701 XFreeGC (XtDisplay (widget), s->output_data.x->white_relief.gc);
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
702 if (s->output_data.x->black_relief.gc)
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
703 XFreeGC (XtDisplay (widget), s->output_data.x->black_relief.gc);
12052
942ad27b8e10 (EmacsFrameDestroy): Block and unblock input.
Karl Heuer <kwzh@gnu.org>
parents: 11895
diff changeset
704 UNBLOCK_INPUT;
5626
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
708 EmacsFrameResize (Widget widget)
5626
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 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 struct frame *f = ew->emacs_frame.frame;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 int columns;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 int rows;
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 pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows);
25356
5db69f7aadca Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25151
diff changeset
716 change_frame_size (f, rows, columns, 0, 1, 0);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
717 update_wm_hints (ew);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 update_various_frame_slots (ew);
16492
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
719
2ddccd78c6b0 (EmacsFrameResize): Use cancel_mouse_face.
Richard M. Stallman <rms@gnu.org>
parents: 16350
diff changeset
720 cancel_mouse_face (f);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 static Boolean
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
724 EmacsFrameSetValues (Widget cur_widget, Widget req_widget, Widget new_widget, ArgList dum1, Cardinal *dum2)
5626
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 EmacsFrame cur = (EmacsFrame)cur_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 EmacsFrame new = (EmacsFrame)new_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 Boolean needs_a_refresh = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 Boolean has_to_recompute_size;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 Boolean has_to_recompute_gcs;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 Boolean has_to_update_hints;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 int char_width, char_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 Dimension pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 Dimension pixel_height;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
737
105693
964ff7cbc8a6 Fix resize due to font change on a maximized/xmonad-controlled frame.
Jan Djärv <jan.h.d@swipnet.se>
parents: 105669
diff changeset
738 /* AFAIK, this function is never called. -- Jan D, Oct 2009. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 has_to_recompute_gcs = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 || (cur->emacs_frame.foreground_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 != new->emacs_frame.foreground_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 || (cur->core.background_pixel
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 != new->core.background_pixel)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 );
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
745
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 has_to_recompute_size = (cur->emacs_frame.font != new->emacs_frame.font
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 && cur->core.width == new->core.width
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 && cur->core.height == new->core.height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 has_to_update_hints = (cur->emacs_frame.font != new->emacs_frame.font);
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 (has_to_recompute_gcs)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 setup_frame_gcs (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 needs_a_refresh = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
757
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 if (has_to_recompute_size)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 pixel_width = new->core.width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 pixel_height = new->core.height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 pixel_to_char_size (new, pixel_width, pixel_height, &char_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 &char_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 char_to_pixel_size (new, char_width, char_height, &pixel_width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 &pixel_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 new->core.width = pixel_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 new->core.height = pixel_height;
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 change_frame_size (new->emacs_frame.frame, char_height, char_width,
25356
5db69f7aadca Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25151
diff changeset
770 1, 0, 0);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 needs_a_refresh = True;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 if (has_to_update_hints)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 update_wm_hints (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 update_various_frame_slots (new);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 /* #### 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
780 will let (x-create-frame '((iconic . t))) work. It seems that changes
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 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
782 and calling XIconifyWindow doesn't work either (even though the window
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 has been created.) Perhaps there is some property we could smash
14620
794c6fdfa87d Comment censored.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
784 directly, but I'm sick of this for now.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 if (cur->emacs_frame.iconic != new->emacs_frame.iconic)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 Widget wmshell = get_wm_shell ((Widget) cur);
38182
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
789 XtVaSetValues (wmshell, XtNiconic,
fd45b8013008 (EmacsFrameSetCharSize): Set XtNwaitForWm depending
Gerd Moellmann <gerd@gnu.org>
parents: 37699
diff changeset
790 (XtArgVal) new->emacs_frame.iconic, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 return needs_a_refresh;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 static XtGeometryResult
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
797 EmacsFrameQueryGeometry (Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *result)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 EmacsFrame ew = (EmacsFrame)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 int mask = request->request_mode;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 Dimension ok_width, ok_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 if (mask & (CWWidth | CWHeight))
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 round_size_to_char (ew,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (mask & CWWidth) ? request->width : ew->core.width,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 ((mask & CWHeight) ? request->height
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 : ew->core.height),
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 &ok_width, &ok_height);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 if ((mask & CWWidth) && (ok_width != request->width))
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 result->request_mode |= CWWidth;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 result->width = ok_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 if ((mask & CWHeight) && (ok_height != request->height))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 result->request_mode |= CWHeight;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 result->height = ok_height;
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 return result->request_mode ? XtGeometryAlmost : XtGeometryYes;
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 /* Special entrypoints */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
827 EmacsFrameSetCharSize (Widget widget, int columns, int rows)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 EmacsFrame ew = (EmacsFrame) widget;
6087
00fbbb620f36 (EmacsFrameSetCharSize): Call check_frame_size and update
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5994
diff changeset
830 struct frame *f = ew->emacs_frame.frame;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44671
diff changeset
831
105693
964ff7cbc8a6 Fix resize due to font change on a maximized/xmonad-controlled frame.
Jan Djärv <jan.h.d@swipnet.se>
parents: 105669
diff changeset
832 x_set_window_size (f, 0, columns, rows);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 }
24999
bd6d15dc5a10 (EmacsFrameSetCharSize): Take widget's border width
Gerd Moellmann <gerd@gnu.org>
parents: 21514
diff changeset
834
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
835
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 17166
diff changeset
836 void
109372
dd04c65fb401 Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
837 widget_store_internal_border (Widget widget)
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
838 {
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
839 EmacsFrame ew = (EmacsFrame) widget;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
840 FRAME_PTR f = ew->emacs_frame.frame;
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
841
51206
22a5614b558f Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50099
diff changeset
842 ew->emacs_frame.internal_border_width = f->internal_border_width;
16350
773a9eb73ce9 (widget_store_internal_border): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16300
diff changeset
843 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
844
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
845 /* arch-tag: 931d28e5-0d59-405a-8325-7d475d0a13d9
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
846 (do not change this comment) */