annotate oldXMenu/Create.c @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 5cc91198ffb2
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
2
Dave Love <fx@gnu.org>
parents:
diff changeset
3 #include "copyright.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
4
Dave Love <fx@gnu.org>
parents:
diff changeset
5 /*
100953
a04b5f26a401 Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 97142
diff changeset
6 Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100953
diff changeset
7 2008, 2009, 2010 Free Software Foundation, Inc.
76170
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
8
94791
3765d76f7fa8 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79743
diff changeset
9 This program is free software: you can redistribute it and/or modify
76170
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
10 it under the terms of the GNU General Public License as published by
94791
3765d76f7fa8 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79743
diff changeset
11 the Free Software Foundation, either version 3 of the License, or
3765d76f7fa8 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79743
diff changeset
12 (at your option) any later version.
76170
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
13
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
14 This program is distributed in the hope that it will be useful,
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
17 GNU General Public License for more details.
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
18
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
19 You should have received a copy of the GNU General Public License
94791
3765d76f7fa8 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79743
diff changeset
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
76170
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
21
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
22
365a8de87f1f Add GPL for FSF copyright. Adjust FSF copyright years based on
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
23 /*
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
24 * XMenu: MIT Project Athena, X Window system menu package
Dave Love <fx@gnu.org>
parents:
diff changeset
25 *
Dave Love <fx@gnu.org>
parents:
diff changeset
26 * XMenuCreate - Creates an X window system menu object.
Dave Love <fx@gnu.org>
parents:
diff changeset
27 *
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * Author: Tony Della Fera, DEC
Dave Love <fx@gnu.org>
parents:
diff changeset
29 * January 23, 1986
Dave Love <fx@gnu.org>
parents:
diff changeset
30 *
Dave Love <fx@gnu.org>
parents:
diff changeset
31 */
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 #include <config.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
34 #include "XMenuInt.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36
Dave Love <fx@gnu.org>
parents:
diff changeset
37 #ifdef EMACS_BITMAP_FILES
Dave Love <fx@gnu.org>
parents:
diff changeset
38 #include "../src/bitmaps/dimple1.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
39 #include "../src/bitmaps/dimple3.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
40 #include "../src/bitmaps/gray1.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
41 #include "../src/bitmaps/gray3.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
42 #include "../src/bitmaps/crosswv.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
43
Dave Love <fx@gnu.org>
parents:
diff changeset
44 #include "../src/bitmaps/leftptr.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
45 #include "../src/bitmaps/leftpmsk.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
46 #include "../src/bitmaps/rtptr.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
47 #include "../src/bitmaps/rtpmsk.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
48 #include "../src/bitmaps/cntrptr.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
49 #include "../src/bitmaps/cntrpmsk.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
50 #include "../src/bitmaps/stipple.xbm"
Dave Love <fx@gnu.org>
parents:
diff changeset
51
Dave Love <fx@gnu.org>
parents:
diff changeset
52 #else
Dave Love <fx@gnu.org>
parents:
diff changeset
53
Dave Love <fx@gnu.org>
parents:
diff changeset
54 #include <X11/bitmaps/dimple1>
Dave Love <fx@gnu.org>
parents:
diff changeset
55 #include <X11/bitmaps/dimple3>
Dave Love <fx@gnu.org>
parents:
diff changeset
56 #include <X11/bitmaps/gray1>
Dave Love <fx@gnu.org>
parents:
diff changeset
57 #include <X11/bitmaps/gray3>
Dave Love <fx@gnu.org>
parents:
diff changeset
58 #include <X11/bitmaps/cross_weave>
Dave Love <fx@gnu.org>
parents:
diff changeset
59
Dave Love <fx@gnu.org>
parents:
diff changeset
60 #include <X11/bitmaps/left_ptr>
Dave Love <fx@gnu.org>
parents:
diff changeset
61 #include <X11/bitmaps/left_ptrmsk>
Dave Love <fx@gnu.org>
parents:
diff changeset
62 #include <X11/bitmaps/right_ptr>
Dave Love <fx@gnu.org>
parents:
diff changeset
63 #include <X11/bitmaps/right_ptrmsk>
Dave Love <fx@gnu.org>
parents:
diff changeset
64 #include <X11/bitmaps/cntr_ptr>
Dave Love <fx@gnu.org>
parents:
diff changeset
65 #include <X11/bitmaps/cntr_ptrmsk>
Dave Love <fx@gnu.org>
parents:
diff changeset
66 #include <X11/bitmaps/stipple>
Dave Love <fx@gnu.org>
parents:
diff changeset
67
Dave Love <fx@gnu.org>
parents:
diff changeset
68 #endif /* not EMACS_BITMAP_FILES */
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 #define DEF_FREEZE 0
Dave Love <fx@gnu.org>
parents:
diff changeset
71 #define DEF_REVERSE 0
Dave Love <fx@gnu.org>
parents:
diff changeset
72 #define DEF_MENU_STYLE LEFT
Dave Love <fx@gnu.org>
parents:
diff changeset
73 #define DEF_MENU_MODE BOX
Dave Love <fx@gnu.org>
parents:
diff changeset
74 #define DEF_INACT_PNUM 3
Dave Love <fx@gnu.org>
parents:
diff changeset
75 #define MAX_INACT_PNUM 4
Dave Love <fx@gnu.org>
parents:
diff changeset
76
Dave Love <fx@gnu.org>
parents:
diff changeset
77 #define DEF_P_STYLE CENTER
Dave Love <fx@gnu.org>
parents:
diff changeset
78
Dave Love <fx@gnu.org>
parents:
diff changeset
79 #define DEF_P_EVENTS (EnterWindowMask | ExposureMask)
Dave Love <fx@gnu.org>
parents:
diff changeset
80 #define DEF_P_FNT_NAME "fixed"
Dave Love <fx@gnu.org>
parents:
diff changeset
81 #define DEF_P_SPREAD 0.5
Dave Love <fx@gnu.org>
parents:
diff changeset
82 #define DEF_P_BDR_WIDTH 2
Dave Love <fx@gnu.org>
parents:
diff changeset
83
Dave Love <fx@gnu.org>
parents:
diff changeset
84 #define DEF_S_STYLE LEFT
Dave Love <fx@gnu.org>
parents:
diff changeset
85 #define DEF_S_EVENTS (EnterWindowMask | LeaveWindowMask)
Dave Love <fx@gnu.org>
parents:
diff changeset
86 #define DEF_S_FNT_NAME "fixed"
Dave Love <fx@gnu.org>
parents:
diff changeset
87 #define DEF_S_SPREAD 0.10
Dave Love <fx@gnu.org>
parents:
diff changeset
88 #define DEF_S_BDR_WIDTH 1
Dave Love <fx@gnu.org>
parents:
diff changeset
89
Dave Love <fx@gnu.org>
parents:
diff changeset
90 #define XASSOC_TABLE_SIZE 64
Dave Love <fx@gnu.org>
parents:
diff changeset
91
Dave Love <fx@gnu.org>
parents:
diff changeset
92 #define TILE_BUF_SIZE 5
Dave Love <fx@gnu.org>
parents:
diff changeset
93
109124
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
94 int atoi(const char *);
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
95 double atof(const char *);
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
96 char *x_get_resource_string (char *attribute, char *class);
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
97
Dave Love <fx@gnu.org>
parents:
diff changeset
98
Dave Love <fx@gnu.org>
parents:
diff changeset
99
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
100 static Status
109124
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
101 XAllocDisplayColor(Display *display, Colormap map, char *colorName, XColor *color, XColor *junk)
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
102 {
Dave Love <fx@gnu.org>
parents:
diff changeset
103 return (colorName!=0 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
104 XParseColor(display, map, colorName, color) &&
Dave Love <fx@gnu.org>
parents:
diff changeset
105 XAllocColor(display, map, color));
Dave Love <fx@gnu.org>
parents:
diff changeset
106 }
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108
Dave Love <fx@gnu.org>
parents:
diff changeset
109 XMenu *
109124
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
110 XMenuCreate(Display *display, Window parent, register char *def_env)
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
111 /* ID of previously opened display */
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
112 /* Window ID of the menu's parent window. */
5cc91198ffb2 Convert function definitions in oldXMenu to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
113 /* X Defaults program environment name. */
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
114 {
Dave Love <fx@gnu.org>
parents:
diff changeset
115 register int i; /* Loop counter. */
Dave Love <fx@gnu.org>
parents:
diff changeset
116 register int j; /* Loop counter. */
Dave Love <fx@gnu.org>
parents:
diff changeset
117 register char *def_val; /* X Default value temp variable. */
Dave Love <fx@gnu.org>
parents:
diff changeset
118
Dave Love <fx@gnu.org>
parents:
diff changeset
119 register XMenu *menu; /* Pointer to the new menu. */
Dave Love <fx@gnu.org>
parents:
diff changeset
120 XMStyle menu_style; /* Menu display style. */
Dave Love <fx@gnu.org>
parents:
diff changeset
121 XMMode menu_mode; /* Menu display mode. */
Dave Love <fx@gnu.org>
parents:
diff changeset
122 XMPane *pane; /* Pane list header. */
Dave Love <fx@gnu.org>
parents:
diff changeset
123 XAssocTable *assoc_tab; /* XAssocTable pointer. */
Dave Love <fx@gnu.org>
parents:
diff changeset
124
Dave Love <fx@gnu.org>
parents:
diff changeset
125 int freeze; /* Freeze server mode. */
Dave Love <fx@gnu.org>
parents:
diff changeset
126 int reverse; /* Reverse video mode. */
Dave Love <fx@gnu.org>
parents:
diff changeset
127
Dave Love <fx@gnu.org>
parents:
diff changeset
128 XMStyle p_style; /* Pane display style. */
Dave Love <fx@gnu.org>
parents:
diff changeset
129 char *p_fnt_name; /* Flag font name. */
Dave Love <fx@gnu.org>
parents:
diff changeset
130 XFontStruct *p_fnt_info; /* Flag font structure */
Dave Love <fx@gnu.org>
parents:
diff changeset
131 int p_fnt_pad; /* Flag font padding in pixels. */
Dave Love <fx@gnu.org>
parents:
diff changeset
132 double p_spread; /* Pane spread in flag height fractions. */
Dave Love <fx@gnu.org>
parents:
diff changeset
133 int p_fnt_height; /* Pane character height. */
Dave Love <fx@gnu.org>
parents:
diff changeset
134 int p_bdr_width; /* Pane border width. */
Dave Love <fx@gnu.org>
parents:
diff changeset
135 int flag_height; /* Flag window height. */
Dave Love <fx@gnu.org>
parents:
diff changeset
136 int p_height; /* Pane window height. */
Dave Love <fx@gnu.org>
parents:
diff changeset
137 int p_x_off; /* Pane X offset. */
Dave Love <fx@gnu.org>
parents:
diff changeset
138 int p_y_off; /* Pane Y offset. */
Dave Love <fx@gnu.org>
parents:
diff changeset
139 GC pane_GC; /* Pane graphics context. */
Dave Love <fx@gnu.org>
parents:
diff changeset
140
Dave Love <fx@gnu.org>
parents:
diff changeset
141 XMStyle s_style; /* Selection display style. */
Dave Love <fx@gnu.org>
parents:
diff changeset
142 char *s_fnt_name; /* Selection font name. */
Dave Love <fx@gnu.org>
parents:
diff changeset
143 XFontStruct *s_fnt_info; /* Selection font structure. */
Dave Love <fx@gnu.org>
parents:
diff changeset
144 int s_fnt_pad; /* Selection font padding in pixels. */
Dave Love <fx@gnu.org>
parents:
diff changeset
145 int s_fnt_height; /* Selection font character height */
Dave Love <fx@gnu.org>
parents:
diff changeset
146 double s_spread; /* Select spread in line height fractions. */
Dave Love <fx@gnu.org>
parents:
diff changeset
147 int s_bdr_width; /* Highlight border width. */
Dave Love <fx@gnu.org>
parents:
diff changeset
148 int s_height; /* Selection window height. */
Dave Love <fx@gnu.org>
parents:
diff changeset
149 int s_x_off; /* Selection window X offset. */
Dave Love <fx@gnu.org>
parents:
diff changeset
150 int s_y_off; /* Selection window Y offset. */
Dave Love <fx@gnu.org>
parents:
diff changeset
151 GC normal_select_GC; /* GC used for normal video selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
152 GC inverse_select_GC; /* GC used for inverse video selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
153 GC inact_GC; /* GC for inactive pane header and */
Dave Love <fx@gnu.org>
parents:
diff changeset
154 /* selections. */
Dave Love <fx@gnu.org>
parents:
diff changeset
155 GC inact_GC_noexpose;
Dave Love <fx@gnu.org>
parents:
diff changeset
156
Dave Love <fx@gnu.org>
parents:
diff changeset
157 XColor color_def; /* Temp color definition holder. */
Dave Love <fx@gnu.org>
parents:
diff changeset
158 XColor screen_def; /* Temp screen color definition holder */
Dave Love <fx@gnu.org>
parents:
diff changeset
159 XColor p_bdr_color; /* Color of border. */
Dave Love <fx@gnu.org>
parents:
diff changeset
160 XColor s_bdr_color; /* Color of highlight. */
Dave Love <fx@gnu.org>
parents:
diff changeset
161 XColor p_frg_color; /* Color of pane foreground color. */
Dave Love <fx@gnu.org>
parents:
diff changeset
162 XColor s_frg_color; /* Color of selection foreground. */
Dave Love <fx@gnu.org>
parents:
diff changeset
163 XColor bkgnd_color; /* Color of background.. */
Dave Love <fx@gnu.org>
parents:
diff changeset
164 XColor mouse_color; /* Color of mouse cursor. */
Dave Love <fx@gnu.org>
parents:
diff changeset
165 Cursor mouse_cursor; /* Mouse cursor. */
Dave Love <fx@gnu.org>
parents:
diff changeset
166 Pixmap inact_bitmap; /* Menu inactive pixmap. */
Dave Love <fx@gnu.org>
parents:
diff changeset
167
Dave Love <fx@gnu.org>
parents:
diff changeset
168 int inact_pnum; /* Inactive background pattern number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
169
Dave Love <fx@gnu.org>
parents:
diff changeset
170 Pixel p_bdr_pixel; /* Pane border pixel. */
Dave Love <fx@gnu.org>
parents:
diff changeset
171 Pixel s_bdr_pixel; /* Selection border pixel. */
Dave Love <fx@gnu.org>
parents:
diff changeset
172 Pixel p_frg_pixel; /* Pane foreground pixel. */
Dave Love <fx@gnu.org>
parents:
diff changeset
173 Pixel s_frg_pixel; /* Selection foreground pixel. */
Dave Love <fx@gnu.org>
parents:
diff changeset
174 Pixel bkgnd_pixel; /* Menu background pixel. */
Dave Love <fx@gnu.org>
parents:
diff changeset
175
Dave Love <fx@gnu.org>
parents:
diff changeset
176 int *width, *height;
Dave Love <fx@gnu.org>
parents:
diff changeset
177 Pixmap *bitmap;
Dave Love <fx@gnu.org>
parents:
diff changeset
178 int *x_hot, *y_hot;
Dave Love <fx@gnu.org>
parents:
diff changeset
179 int status; /* Return code from XReadBitmapFile. */
Dave Love <fx@gnu.org>
parents:
diff changeset
180
Dave Love <fx@gnu.org>
parents:
diff changeset
181 Pixmap cursor; /* Cursor pixmap holder. */
Dave Love <fx@gnu.org>
parents:
diff changeset
182 Pixmap cursor_mask; /* Cursor mask pixmap holder. */
Dave Love <fx@gnu.org>
parents:
diff changeset
183 Pixmap stipple_pixmap; /* Stipple mask for half-tone text. */
Dave Love <fx@gnu.org>
parents:
diff changeset
184 unsigned long valuemask;
Dave Love <fx@gnu.org>
parents:
diff changeset
185 XGCValues *values;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
186
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
187 Window root = RootWindow (display, DefaultScreen (display));
Dave Love <fx@gnu.org>
parents:
diff changeset
188
Dave Love <fx@gnu.org>
parents:
diff changeset
189 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
190 * Calloc the XMenu structure and the initial pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
191 */
Dave Love <fx@gnu.org>
parents:
diff changeset
192 menu = (XMenu *)calloc(1, sizeof(XMenu));
Dave Love <fx@gnu.org>
parents:
diff changeset
193 if (menu == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
194 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
195 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
196 }
Dave Love <fx@gnu.org>
parents:
diff changeset
197 pane = (XMPane *)calloc(1, sizeof(XMPane));
Dave Love <fx@gnu.org>
parents:
diff changeset
198 if (pane == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
199 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
200 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
201 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
202
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
203 /*
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
204 * Create the XAssocTable
Dave Love <fx@gnu.org>
parents:
diff changeset
205 */
Dave Love <fx@gnu.org>
parents:
diff changeset
206 assoc_tab = (XAssocTable *)XCreateAssocTable(XASSOC_TABLE_SIZE);
Dave Love <fx@gnu.org>
parents:
diff changeset
207 if(assoc_tab == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
208 _XMErrorCode= XME_CREATE_ASSOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
209 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
210 }
Dave Love <fx@gnu.org>
parents:
diff changeset
211
Dave Love <fx@gnu.org>
parents:
diff changeset
212 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
213 * Set up the default environment name.
Dave Love <fx@gnu.org>
parents:
diff changeset
214 */
Dave Love <fx@gnu.org>
parents:
diff changeset
215 if (def_env == NULL || *def_env == '\0') def_env = "XMenu";
Dave Love <fx@gnu.org>
parents:
diff changeset
216
Dave Love <fx@gnu.org>
parents:
diff changeset
217 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
218 * Set up internal fail-safe defaults.
Dave Love <fx@gnu.org>
parents:
diff changeset
219 */
Dave Love <fx@gnu.org>
parents:
diff changeset
220 freeze = DEF_FREEZE;
Dave Love <fx@gnu.org>
parents:
diff changeset
221 reverse = DEF_REVERSE;
Dave Love <fx@gnu.org>
parents:
diff changeset
222 menu_style = DEF_MENU_STYLE;
Dave Love <fx@gnu.org>
parents:
diff changeset
223 menu_mode = DEF_MENU_MODE;
Dave Love <fx@gnu.org>
parents:
diff changeset
224 inact_pnum = DEF_INACT_PNUM;
Dave Love <fx@gnu.org>
parents:
diff changeset
225
Dave Love <fx@gnu.org>
parents:
diff changeset
226 p_style = DEF_P_STYLE;
Dave Love <fx@gnu.org>
parents:
diff changeset
227 p_spread = DEF_P_SPREAD;
Dave Love <fx@gnu.org>
parents:
diff changeset
228 p_fnt_name = DEF_P_FNT_NAME;
Dave Love <fx@gnu.org>
parents:
diff changeset
229 p_bdr_width = DEF_P_BDR_WIDTH;
Dave Love <fx@gnu.org>
parents:
diff changeset
230
Dave Love <fx@gnu.org>
parents:
diff changeset
231 s_style = DEF_S_STYLE;
Dave Love <fx@gnu.org>
parents:
diff changeset
232 s_spread = DEF_S_SPREAD;
Dave Love <fx@gnu.org>
parents:
diff changeset
233 s_fnt_name = DEF_S_FNT_NAME;
Dave Love <fx@gnu.org>
parents:
diff changeset
234 s_bdr_width = DEF_S_BDR_WIDTH;
Dave Love <fx@gnu.org>
parents:
diff changeset
235
Dave Love <fx@gnu.org>
parents:
diff changeset
236 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
237 * Get default values from X.
Dave Love <fx@gnu.org>
parents:
diff changeset
238 */
Dave Love <fx@gnu.org>
parents:
diff changeset
239 def_val = x_get_resource_string ("menuFreeze", "MenuFreeze");
Dave Love <fx@gnu.org>
parents:
diff changeset
240 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
241 if (strcmp(def_val, "on") == 0) freeze = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
242 else if (strcmp(def_val, "off") == 0) freeze = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
243 }
Dave Love <fx@gnu.org>
parents:
diff changeset
244
Dave Love <fx@gnu.org>
parents:
diff changeset
245 def_val = x_get_resource_string ("menuReverseVideo", "MenuReverseVideo");
Dave Love <fx@gnu.org>
parents:
diff changeset
246 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
247 if (strcmp(def_val, "on") == 0) reverse = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
248 else if (strcmp(def_val, "off") == 0) reverse = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
249 }
Dave Love <fx@gnu.org>
parents:
diff changeset
250
Dave Love <fx@gnu.org>
parents:
diff changeset
251 def_val = x_get_resource_string ("menuStyle", "MenuStyle");
Dave Love <fx@gnu.org>
parents:
diff changeset
252 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
253 if (strcmp(def_val, "right_hand") == 0) menu_style = RIGHT;
Dave Love <fx@gnu.org>
parents:
diff changeset
254 else if (strcmp(def_val, "left_hand") == 0) menu_style = LEFT;
Dave Love <fx@gnu.org>
parents:
diff changeset
255 else if (strcmp(def_val, "center") == 0) menu_style = CENTER;
Dave Love <fx@gnu.org>
parents:
diff changeset
256 }
Dave Love <fx@gnu.org>
parents:
diff changeset
257
Dave Love <fx@gnu.org>
parents:
diff changeset
258 def_val = x_get_resource_string ("menuMode", "MenuMode");
Dave Love <fx@gnu.org>
parents:
diff changeset
259 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
260 if (strcmp(def_val, "box") == 0) menu_mode = BOX;
Dave Love <fx@gnu.org>
parents:
diff changeset
261 else if (strcmp(def_val, "invert") == 0) menu_mode = INVERT;
Dave Love <fx@gnu.org>
parents:
diff changeset
262 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
263
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
264 def_val = x_get_resource_string ("menuMouse", "MenuMouse");
Dave Love <fx@gnu.org>
parents:
diff changeset
265 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
266 def_val != NULL &&
Dave Love <fx@gnu.org>
parents:
diff changeset
267 DisplayCells(display, DefaultScreen(display)) > 2 &&
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
268 XAllocDisplayColor(display,
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
269 DefaultColormap(display, DefaultScreen(display)),
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
270 def_val,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
271 &mouse_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
272 );
Dave Love <fx@gnu.org>
parents:
diff changeset
273 else if (reverse &&
Dave Love <fx@gnu.org>
parents:
diff changeset
274 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
275 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
276 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
277 &mouse_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
278 );
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
279
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
280 else if (XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
281 DefaultColormap(display, DefaultScreen(display)),
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
282 "black",
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
283 &mouse_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
284 );
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
285
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
286 else ;
Dave Love <fx@gnu.org>
parents:
diff changeset
287
Dave Love <fx@gnu.org>
parents:
diff changeset
288 def_val = x_get_resource_string ("menuBackground", "MenuBackground");
Dave Love <fx@gnu.org>
parents:
diff changeset
289 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
290 def_val != NULL &&
Dave Love <fx@gnu.org>
parents:
diff changeset
291 DisplayCells(display, DefaultScreen(display)) > 2 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
292 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
293 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
294 def_val,
Dave Love <fx@gnu.org>
parents:
diff changeset
295 &bkgnd_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
296 );
Dave Love <fx@gnu.org>
parents:
diff changeset
297 else if (reverse &&
Dave Love <fx@gnu.org>
parents:
diff changeset
298 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
299 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
300 "black",
Dave Love <fx@gnu.org>
parents:
diff changeset
301 &bkgnd_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
302 );
Dave Love <fx@gnu.org>
parents:
diff changeset
303 else if (XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
304 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
305 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
306 &bkgnd_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
307 );
Dave Love <fx@gnu.org>
parents:
diff changeset
308 else;
Dave Love <fx@gnu.org>
parents:
diff changeset
309
Dave Love <fx@gnu.org>
parents:
diff changeset
310 def_val = x_get_resource_string ("menuInactivePattern", "MenuInactivePattern");
Dave Love <fx@gnu.org>
parents:
diff changeset
311 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
312 if (strcmp(def_val, "dimple1") == 0) inact_pnum = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
313 else if (strcmp(def_val, "dimple3") == 0) inact_pnum = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
314 else if (strcmp(def_val, "gray1") == 0) inact_pnum = 2;
Dave Love <fx@gnu.org>
parents:
diff changeset
315 else if (strcmp(def_val, "gray3") == 0) inact_pnum = 3;
Dave Love <fx@gnu.org>
parents:
diff changeset
316 else if (strcmp(def_val, "cross_weave") == 0) inact_pnum = 4;
Dave Love <fx@gnu.org>
parents:
diff changeset
317 }
Dave Love <fx@gnu.org>
parents:
diff changeset
318
Dave Love <fx@gnu.org>
parents:
diff changeset
319 def_val = x_get_resource_string ("paneStyle", "PaneStyle");
Dave Love <fx@gnu.org>
parents:
diff changeset
320 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
321 if (strcmp(def_val, "flush_left") == 0) p_style = LEFT;
Dave Love <fx@gnu.org>
parents:
diff changeset
322 else if (strcmp(def_val, "flush_right") == 0) p_style = RIGHT;
Dave Love <fx@gnu.org>
parents:
diff changeset
323 else if (strcmp(def_val, "center") == 0) p_style = CENTER;
Dave Love <fx@gnu.org>
parents:
diff changeset
324 }
Dave Love <fx@gnu.org>
parents:
diff changeset
325
Dave Love <fx@gnu.org>
parents:
diff changeset
326 def_val = x_get_resource_string ("paneFont", "PaneFont");
Dave Love <fx@gnu.org>
parents:
diff changeset
327 if (def_val != NULL) p_fnt_name = def_val;
Dave Love <fx@gnu.org>
parents:
diff changeset
328
Dave Love <fx@gnu.org>
parents:
diff changeset
329 def_val = x_get_resource_string ("paneForeground", "PaneForeground");
Dave Love <fx@gnu.org>
parents:
diff changeset
330 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
331 def_val != NULL &&
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
332 DisplayCells(display, DefaultScreen(display)) > 2
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
333 )
Dave Love <fx@gnu.org>
parents:
diff changeset
334 XAllocDisplayColor(display, DefaultColormap(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
335 DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
336 def_val,
Dave Love <fx@gnu.org>
parents:
diff changeset
337 &p_frg_color, &color_def);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
338
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
339 else if (reverse) XAllocDisplayColor(display,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
340 DefaultColormap(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
341 DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
342 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
343 &p_frg_color, &color_def);
Dave Love <fx@gnu.org>
parents:
diff changeset
344 else XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
345 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
346 "black",
Dave Love <fx@gnu.org>
parents:
diff changeset
347 &p_frg_color, &color_def);
Dave Love <fx@gnu.org>
parents:
diff changeset
348
Dave Love <fx@gnu.org>
parents:
diff changeset
349 def_val = x_get_resource_string ("paneBorder", "PaneBorder");
Dave Love <fx@gnu.org>
parents:
diff changeset
350 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
351 def_val != NULL &&
Dave Love <fx@gnu.org>
parents:
diff changeset
352 DisplayCells(display, DefaultScreen(display)) > 2 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
353 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
354 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
355 def_val,
Dave Love <fx@gnu.org>
parents:
diff changeset
356 &p_bdr_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
357 );
Dave Love <fx@gnu.org>
parents:
diff changeset
358 else if (reverse &&
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
359 XAllocDisplayColor(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
360 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
361 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
362 &p_bdr_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
363 );
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
364 else XAllocDisplayColor(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
365 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
366 "black",
Dave Love <fx@gnu.org>
parents:
diff changeset
367 &p_bdr_color, &color_def);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
368
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
369 def_val = x_get_resource_string ("paneBorderWidth", "PaneBorderWidth");
Dave Love <fx@gnu.org>
parents:
diff changeset
370 if (def_val != NULL) p_bdr_width = atoi(def_val);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
371
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
372 def_val = x_get_resource_string ("paneSpread", "PaneSpread");
Dave Love <fx@gnu.org>
parents:
diff changeset
373 if (def_val != NULL) p_spread = atof(def_val);
Dave Love <fx@gnu.org>
parents:
diff changeset
374
Dave Love <fx@gnu.org>
parents:
diff changeset
375 def_val = x_get_resource_string ("selectionStyle", "SelectionStyle");
Dave Love <fx@gnu.org>
parents:
diff changeset
376 if (def_val != NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
377 if (strcmp(def_val, "flush_left") == 0) s_style = LEFT;
Dave Love <fx@gnu.org>
parents:
diff changeset
378 else if (strcmp(def_val, "flush_right") == 0) s_style = RIGHT;
Dave Love <fx@gnu.org>
parents:
diff changeset
379 else if (strcmp(def_val, "center") == 0) s_style = CENTER;
Dave Love <fx@gnu.org>
parents:
diff changeset
380 }
Dave Love <fx@gnu.org>
parents:
diff changeset
381
Dave Love <fx@gnu.org>
parents:
diff changeset
382 def_val = x_get_resource_string ("selectionFont", "SelectionFont");
Dave Love <fx@gnu.org>
parents:
diff changeset
383 if (def_val != NULL) s_fnt_name = def_val;
Dave Love <fx@gnu.org>
parents:
diff changeset
384
Dave Love <fx@gnu.org>
parents:
diff changeset
385 def_val = x_get_resource_string ("selectionForeground", "SelectionForeground");
Dave Love <fx@gnu.org>
parents:
diff changeset
386 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
387 def_val != NULL &&
Dave Love <fx@gnu.org>
parents:
diff changeset
388 DisplayCells(display, DefaultScreen(display)) > 2 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
389 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
390 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
391 def_val,
Dave Love <fx@gnu.org>
parents:
diff changeset
392 &s_frg_color, &color_def)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
393 );
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
394 else if (reverse &&
Dave Love <fx@gnu.org>
parents:
diff changeset
395 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
396 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
397 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
398 &s_frg_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
399 ) ;
Dave Love <fx@gnu.org>
parents:
diff changeset
400 else if (XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
401 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
402 "black",
Dave Love <fx@gnu.org>
parents:
diff changeset
403 &s_frg_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
404 ) ;
Dave Love <fx@gnu.org>
parents:
diff changeset
405 else ;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
406
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
407
Dave Love <fx@gnu.org>
parents:
diff changeset
408 def_val = x_get_resource_string ("selectionBorder", "SelectionBorder");
Dave Love <fx@gnu.org>
parents:
diff changeset
409 if (
Dave Love <fx@gnu.org>
parents:
diff changeset
410 def_val != NULL &&
Dave Love <fx@gnu.org>
parents:
diff changeset
411 DisplayCells(display, DefaultScreen(display)) > 2 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
412 XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
413 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
414 def_val,
Dave Love <fx@gnu.org>
parents:
diff changeset
415 &s_bdr_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
416 ) ;
Dave Love <fx@gnu.org>
parents:
diff changeset
417 else if (reverse &&
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
418 XAllocDisplayColor(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
419 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
420 "white",
Dave Love <fx@gnu.org>
parents:
diff changeset
421 &s_bdr_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
422 ) ;
Dave Love <fx@gnu.org>
parents:
diff changeset
423 else if (XAllocDisplayColor(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
424 DefaultColormap(display, DefaultScreen(display)),
Dave Love <fx@gnu.org>
parents:
diff changeset
425 "black",
Dave Love <fx@gnu.org>
parents:
diff changeset
426 &s_bdr_color, &color_def)
Dave Love <fx@gnu.org>
parents:
diff changeset
427 ) ;
Dave Love <fx@gnu.org>
parents:
diff changeset
428 else ;
Dave Love <fx@gnu.org>
parents:
diff changeset
429
Dave Love <fx@gnu.org>
parents:
diff changeset
430 def_val = x_get_resource_string ("selectionBorderWidth", "SelectionBorderWidth");
Dave Love <fx@gnu.org>
parents:
diff changeset
431 if (def_val != NULL) s_bdr_width = atoi(def_val);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
432
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
433 def_val = x_get_resource_string ("selectionSpread", "SelectionSpread");
Dave Love <fx@gnu.org>
parents:
diff changeset
434 if (def_val != NULL) s_spread = atof(def_val);
Dave Love <fx@gnu.org>
parents:
diff changeset
435
Dave Love <fx@gnu.org>
parents:
diff changeset
436 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
437 * Create and store the inactive pattern pixmap.
Dave Love <fx@gnu.org>
parents:
diff changeset
438 */
Dave Love <fx@gnu.org>
parents:
diff changeset
439 {
Dave Love <fx@gnu.org>
parents:
diff changeset
440 char *data = NULL;
Dave Love <fx@gnu.org>
parents:
diff changeset
441 int width, height;
Dave Love <fx@gnu.org>
parents:
diff changeset
442
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
443 switch (inact_pnum)
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
444 {
Dave Love <fx@gnu.org>
parents:
diff changeset
445 case 0:
Dave Love <fx@gnu.org>
parents:
diff changeset
446 data = (char *)dimple1_bits;
Dave Love <fx@gnu.org>
parents:
diff changeset
447 width = dimple1_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
448 height = dimple1_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
449 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
450
Dave Love <fx@gnu.org>
parents:
diff changeset
451 case 1:
Dave Love <fx@gnu.org>
parents:
diff changeset
452 data = (char *)dimple3_bits;
Dave Love <fx@gnu.org>
parents:
diff changeset
453 width = dimple3_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
454 height = dimple3_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
455 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
456
Dave Love <fx@gnu.org>
parents:
diff changeset
457 case 2:
Dave Love <fx@gnu.org>
parents:
diff changeset
458 data = (char *)gray1_bits;
Dave Love <fx@gnu.org>
parents:
diff changeset
459 width = gray1_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
460 height = gray1_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
461 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
462
Dave Love <fx@gnu.org>
parents:
diff changeset
463 case 3:
Dave Love <fx@gnu.org>
parents:
diff changeset
464 data = (char *)gray3_bits;
Dave Love <fx@gnu.org>
parents:
diff changeset
465 width = gray3_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
466 height = gray3_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
467 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
468
Dave Love <fx@gnu.org>
parents:
diff changeset
469 case 4:
Dave Love <fx@gnu.org>
parents:
diff changeset
470 data = (char *)cross_weave_bits;
Dave Love <fx@gnu.org>
parents:
diff changeset
471 width = cross_weave_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
472 height = cross_weave_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
473 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
474 }
Dave Love <fx@gnu.org>
parents:
diff changeset
475
Dave Love <fx@gnu.org>
parents:
diff changeset
476 if (! data)
Dave Love <fx@gnu.org>
parents:
diff changeset
477 {
Dave Love <fx@gnu.org>
parents:
diff changeset
478 _XMErrorCode = XME_STORE_BITMAP;
Dave Love <fx@gnu.org>
parents:
diff changeset
479 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
480 }
Dave Love <fx@gnu.org>
parents:
diff changeset
481
Dave Love <fx@gnu.org>
parents:
diff changeset
482 inact_bitmap =
Dave Love <fx@gnu.org>
parents:
diff changeset
483 XCreatePixmapFromBitmapData
Dave Love <fx@gnu.org>
parents:
diff changeset
484 (display, root, data, width, height,
Dave Love <fx@gnu.org>
parents:
diff changeset
485 p_frg_color.pixel, bkgnd_color.pixel,
Dave Love <fx@gnu.org>
parents:
diff changeset
486 DisplayPlanes (display, DefaultScreen (display)));
Dave Love <fx@gnu.org>
parents:
diff changeset
487 }
Dave Love <fx@gnu.org>
parents:
diff changeset
488
Dave Love <fx@gnu.org>
parents:
diff changeset
489 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
490 * Load the mouse cursor.
Dave Love <fx@gnu.org>
parents:
diff changeset
491 */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
492
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
493 switch (menu_style) {
Dave Love <fx@gnu.org>
parents:
diff changeset
494 case LEFT:
Dave Love <fx@gnu.org>
parents:
diff changeset
495 cursor = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
496 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
497 left_ptr_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
498 left_ptr_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
499 left_ptr_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
500 cursor_mask = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
501 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
502 left_ptrmsk_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
503 left_ptrmsk_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
504 left_ptrmsk_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
505 mouse_cursor = XCreatePixmapCursor(
Dave Love <fx@gnu.org>
parents:
diff changeset
506 display,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
507 cursor, cursor_mask,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
508 &mouse_color, &bkgnd_color,
Dave Love <fx@gnu.org>
parents:
diff changeset
509 left_ptr_x_hot,
Dave Love <fx@gnu.org>
parents:
diff changeset
510 left_ptr_y_hot
Dave Love <fx@gnu.org>
parents:
diff changeset
511 );
Dave Love <fx@gnu.org>
parents:
diff changeset
512 XFreePixmap(display, cursor);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
513 XFreePixmap(display, cursor_mask);
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
514 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
515 case RIGHT:
Dave Love <fx@gnu.org>
parents:
diff changeset
516 cursor = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
517 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
518 right_ptr_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
519 right_ptr_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
520 right_ptr_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
521 cursor_mask = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
522 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
523 right_ptrmsk_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
524 right_ptrmsk_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
525 right_ptrmsk_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
526 mouse_cursor = XCreatePixmapCursor(
Dave Love <fx@gnu.org>
parents:
diff changeset
527 display,
Dave Love <fx@gnu.org>
parents:
diff changeset
528 cursor, cursor_mask,
Dave Love <fx@gnu.org>
parents:
diff changeset
529 &mouse_color, &bkgnd_color,
Dave Love <fx@gnu.org>
parents:
diff changeset
530 right_ptr_x_hot,
Dave Love <fx@gnu.org>
parents:
diff changeset
531 right_ptr_y_hot
Dave Love <fx@gnu.org>
parents:
diff changeset
532 );
Dave Love <fx@gnu.org>
parents:
diff changeset
533 XFreePixmap(display, cursor);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
534 XFreePixmap(display, cursor_mask);
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
535 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
536 case CENTER:
Dave Love <fx@gnu.org>
parents:
diff changeset
537 cursor = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
538 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
539 cntr_ptr_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
540 cntr_ptr_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
541 cntr_ptr_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
542 cursor_mask = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
543 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
544 cntr_ptrmsk_bits,
Dave Love <fx@gnu.org>
parents:
diff changeset
545 cntr_ptrmsk_width,
Dave Love <fx@gnu.org>
parents:
diff changeset
546 cntr_ptrmsk_height);
Dave Love <fx@gnu.org>
parents:
diff changeset
547 mouse_cursor = XCreatePixmapCursor(
Dave Love <fx@gnu.org>
parents:
diff changeset
548 display,
Dave Love <fx@gnu.org>
parents:
diff changeset
549 cursor, cursor_mask,
Dave Love <fx@gnu.org>
parents:
diff changeset
550 &mouse_color, &bkgnd_color,
Dave Love <fx@gnu.org>
parents:
diff changeset
551 cntr_ptr_x_hot,
Dave Love <fx@gnu.org>
parents:
diff changeset
552 cntr_ptr_y_hot
Dave Love <fx@gnu.org>
parents:
diff changeset
553 );
Dave Love <fx@gnu.org>
parents:
diff changeset
554 XFreePixmap(display, cursor);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
555 XFreePixmap(display, cursor_mask);
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
556 break;
Dave Love <fx@gnu.org>
parents:
diff changeset
557 default:
Dave Love <fx@gnu.org>
parents:
diff changeset
558 /* Error! Invalid style parameter. */
Dave Love <fx@gnu.org>
parents:
diff changeset
559 _XMErrorCode = XME_STYLE_PARAM;
Dave Love <fx@gnu.org>
parents:
diff changeset
560 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
561 }
Dave Love <fx@gnu.org>
parents:
diff changeset
562 if (mouse_cursor == _X_FAILURE) {
Dave Love <fx@gnu.org>
parents:
diff changeset
563 _XMErrorCode = XME_CREATE_CURSOR;
Dave Love <fx@gnu.org>
parents:
diff changeset
564 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
565 }
Dave Love <fx@gnu.org>
parents:
diff changeset
566
Dave Love <fx@gnu.org>
parents:
diff changeset
567 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
568 * Open the pane and selection fonts.
Dave Love <fx@gnu.org>
parents:
diff changeset
569 */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
570
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
571 p_fnt_info = XLoadQueryFont(display, p_fnt_name);
Dave Love <fx@gnu.org>
parents:
diff changeset
572 if (p_fnt_info == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
573 _XMErrorCode = XME_OPEN_FONT;
Dave Love <fx@gnu.org>
parents:
diff changeset
574 return(NULL);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
575
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
576 }
Dave Love <fx@gnu.org>
parents:
diff changeset
577
Dave Love <fx@gnu.org>
parents:
diff changeset
578 s_fnt_info = XLoadQueryFont(display, s_fnt_name);
Dave Love <fx@gnu.org>
parents:
diff changeset
579 if (s_fnt_info == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
580 _XMErrorCode = XME_OPEN_FONT;
Dave Love <fx@gnu.org>
parents:
diff changeset
581 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
582 }
Dave Love <fx@gnu.org>
parents:
diff changeset
583 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
584 * Calculate the fixed padding value in pixels for each font.
Dave Love <fx@gnu.org>
parents:
diff changeset
585 */
Dave Love <fx@gnu.org>
parents:
diff changeset
586 p_fnt_height = p_fnt_info->max_bounds.ascent + p_fnt_info->max_bounds.descent;
Dave Love <fx@gnu.org>
parents:
diff changeset
587 s_fnt_height = s_fnt_info->max_bounds.ascent + s_fnt_info->max_bounds.descent;
Dave Love <fx@gnu.org>
parents:
diff changeset
588 p_fnt_pad = s_spread * p_fnt_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
589 s_fnt_pad = s_spread * s_fnt_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
590
Dave Love <fx@gnu.org>
parents:
diff changeset
591 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
592 * Calculate fixed height and offset requirements.
Dave Love <fx@gnu.org>
parents:
diff changeset
593 */
Dave Love <fx@gnu.org>
parents:
diff changeset
594 flag_height = p_fnt_height + (p_fnt_pad << 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
595
Dave Love <fx@gnu.org>
parents:
diff changeset
596 p_height = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
597 p_y_off = flag_height + p_bdr_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
598 p_x_off = p_y_off * p_spread;
Dave Love <fx@gnu.org>
parents:
diff changeset
599
Dave Love <fx@gnu.org>
parents:
diff changeset
600 s_height = s_fnt_height + (s_fnt_pad << 1) + (s_bdr_width << 1);
Dave Love <fx@gnu.org>
parents:
diff changeset
601 s_y_off = s_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
602 s_x_off = p_x_off;
Dave Love <fx@gnu.org>
parents:
diff changeset
603
Dave Love <fx@gnu.org>
parents:
diff changeset
604 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
605 * Set up the pane list header.
Dave Love <fx@gnu.org>
parents:
diff changeset
606 */
Dave Love <fx@gnu.org>
parents:
diff changeset
607 pane->next = pane;
Dave Love <fx@gnu.org>
parents:
diff changeset
608 pane->prev = pane;
Dave Love <fx@gnu.org>
parents:
diff changeset
609 pane->type = PL_HEADER;
Dave Love <fx@gnu.org>
parents:
diff changeset
610 pane->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
611
Dave Love <fx@gnu.org>
parents:
diff changeset
612 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
613 * Initialize the internal pane and selection creation queues.
Dave Love <fx@gnu.org>
parents:
diff changeset
614 */
Dave Love <fx@gnu.org>
parents:
diff changeset
615 _XMWinQueInit();
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
616
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
617 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
618 * Create pane, active, and inactive GC's.
Dave Love <fx@gnu.org>
parents:
diff changeset
619 */
Dave Love <fx@gnu.org>
parents:
diff changeset
620 values = (XGCValues *)malloc(sizeof(XGCValues));
Dave Love <fx@gnu.org>
parents:
diff changeset
621 valuemask = (GCForeground | GCBackground | GCFont | GCLineWidth);
Dave Love <fx@gnu.org>
parents:
diff changeset
622
Dave Love <fx@gnu.org>
parents:
diff changeset
623 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
624 * First, pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
625 */
Dave Love <fx@gnu.org>
parents:
diff changeset
626
Dave Love <fx@gnu.org>
parents:
diff changeset
627 values->foreground = p_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
628 values->background = bkgnd_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
629 values->font = p_fnt_info->fid;
Dave Love <fx@gnu.org>
parents:
diff changeset
630 values->line_width = p_bdr_width;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
631
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
632 pane_GC = XCreateGC(
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
633 display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
634 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
635 valuemask,
Dave Love <fx@gnu.org>
parents:
diff changeset
636 values);
Dave Love <fx@gnu.org>
parents:
diff changeset
637 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
638 * Then normal video selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
639 */
Dave Love <fx@gnu.org>
parents:
diff changeset
640
Dave Love <fx@gnu.org>
parents:
diff changeset
641 values->foreground = s_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
642 values->background = bkgnd_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
643 values->font = s_fnt_info->fid;
Dave Love <fx@gnu.org>
parents:
diff changeset
644 values->line_width = s_bdr_width;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
645 normal_select_GC = XCreateGC(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
646 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
647 valuemask,
Dave Love <fx@gnu.org>
parents:
diff changeset
648 values);
Dave Love <fx@gnu.org>
parents:
diff changeset
649 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
650 * Inverse video selection.
Dave Love <fx@gnu.org>
parents:
diff changeset
651 */
Dave Love <fx@gnu.org>
parents:
diff changeset
652
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
653 values->foreground = bkgnd_color.pixel;
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
654 values->background = s_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
655 values->font = s_fnt_info->fid;
Dave Love <fx@gnu.org>
parents:
diff changeset
656 values->line_width = s_bdr_width;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
657 inverse_select_GC = XCreateGC(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
658 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
659 valuemask,
Dave Love <fx@gnu.org>
parents:
diff changeset
660 values);
Dave Love <fx@gnu.org>
parents:
diff changeset
661 stipple_pixmap = XCreateBitmapFromData(display,
Dave Love <fx@gnu.org>
parents:
diff changeset
662 root,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
663 stipple_bits,
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
664 stipple_width,
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
665 stipple_height);
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
666
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
667 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
668 * Finally, inactive pane header and selections
Dave Love <fx@gnu.org>
parents:
diff changeset
669 */
Dave Love <fx@gnu.org>
parents:
diff changeset
670 valuemask |= (GCFillStyle | GCStipple);
Dave Love <fx@gnu.org>
parents:
diff changeset
671 values->foreground = s_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
672 values->background = bkgnd_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
673 values->font = s_fnt_info->fid;
Dave Love <fx@gnu.org>
parents:
diff changeset
674 values->line_width = s_bdr_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
675 values->fill_style = FillStippled;
Dave Love <fx@gnu.org>
parents:
diff changeset
676 values->stipple = stipple_pixmap;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
677
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
678 inact_GC = XCreateGC(display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
679 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
680 valuemask,
Dave Love <fx@gnu.org>
parents:
diff changeset
681 values);
Dave Love <fx@gnu.org>
parents:
diff changeset
682
Dave Love <fx@gnu.org>
parents:
diff changeset
683 valuemask |= (GCGraphicsExposures);
Dave Love <fx@gnu.org>
parents:
diff changeset
684 values->graphics_exposures = False;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
685 inact_GC_noexpose = XCreateGC (display,
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
686 root,
Dave Love <fx@gnu.org>
parents:
diff changeset
687 valuemask, values);
Dave Love <fx@gnu.org>
parents:
diff changeset
688
Dave Love <fx@gnu.org>
parents:
diff changeset
689
Dave Love <fx@gnu.org>
parents:
diff changeset
690 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
691 * Construct the XMenu object.
Dave Love <fx@gnu.org>
parents:
diff changeset
692 */
Dave Love <fx@gnu.org>
parents:
diff changeset
693 /* -------------------- Menu data -------------------- */
Dave Love <fx@gnu.org>
parents:
diff changeset
694 menu->menu_style = menu_style;
Dave Love <fx@gnu.org>
parents:
diff changeset
695 menu->menu_mode = menu_mode;
Dave Love <fx@gnu.org>
parents:
diff changeset
696 menu->freeze = freeze;
Dave Love <fx@gnu.org>
parents:
diff changeset
697 menu->aeq = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
698 menu->recompute = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
699 menu->parent = parent;
Dave Love <fx@gnu.org>
parents:
diff changeset
700 menu->height = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
701 menu->width = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
702 menu->mouse_cursor = mouse_cursor;
Dave Love <fx@gnu.org>
parents:
diff changeset
703 menu->assoc_tab = assoc_tab;
Dave Love <fx@gnu.org>
parents:
diff changeset
704 menu->p_list = pane;
Dave Love <fx@gnu.org>
parents:
diff changeset
705 /* -------------------- Pane window data -------------------- */
Dave Love <fx@gnu.org>
parents:
diff changeset
706 menu->p_style = p_style;
Dave Love <fx@gnu.org>
parents:
diff changeset
707 menu->p_events = DEF_P_EVENTS;
Dave Love <fx@gnu.org>
parents:
diff changeset
708 menu->p_fnt_info = p_fnt_info;
Dave Love <fx@gnu.org>
parents:
diff changeset
709 menu->p_fnt_pad = p_fnt_pad;
Dave Love <fx@gnu.org>
parents:
diff changeset
710 menu->p_spread = p_spread;
Dave Love <fx@gnu.org>
parents:
diff changeset
711 menu->p_bdr_width = p_bdr_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
712 menu->flag_height = flag_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
713 menu->p_width = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
714 menu->p_height = p_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
715 menu->p_x_off = p_x_off;
Dave Love <fx@gnu.org>
parents:
diff changeset
716 menu->p_y_off = p_y_off;
Dave Love <fx@gnu.org>
parents:
diff changeset
717 menu->p_count = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
718 menu->pane_GC = pane_GC;
Dave Love <fx@gnu.org>
parents:
diff changeset
719 menu->x_pos = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
720 menu->y_pos = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
721 /* -------------------- Selection window data -------------------- */
Dave Love <fx@gnu.org>
parents:
diff changeset
722 menu->s_style = s_style;
Dave Love <fx@gnu.org>
parents:
diff changeset
723 menu->s_events = DEF_S_EVENTS;
Dave Love <fx@gnu.org>
parents:
diff changeset
724 menu->s_fnt_info = s_fnt_info;
Dave Love <fx@gnu.org>
parents:
diff changeset
725 menu->s_fnt_pad = s_fnt_pad;
Dave Love <fx@gnu.org>
parents:
diff changeset
726 menu->s_spread = s_spread;
Dave Love <fx@gnu.org>
parents:
diff changeset
727 menu->s_bdr_width = s_bdr_width; /* unnecessary */
Dave Love <fx@gnu.org>
parents:
diff changeset
728 menu->s_width = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
729 menu->s_height = s_height;
Dave Love <fx@gnu.org>
parents:
diff changeset
730 menu->s_x_off = s_x_off;
Dave Love <fx@gnu.org>
parents:
diff changeset
731 menu->s_y_off = s_y_off;
Dave Love <fx@gnu.org>
parents:
diff changeset
732 menu->s_count = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
733 menu->normal_select_GC = normal_select_GC;
Dave Love <fx@gnu.org>
parents:
diff changeset
734 menu->inverse_select_GC = inverse_select_GC;
Dave Love <fx@gnu.org>
parents:
diff changeset
735 menu->inact_GC = inact_GC;
Dave Love <fx@gnu.org>
parents:
diff changeset
736 /* -------------------- Color data -------------------- */
Dave Love <fx@gnu.org>
parents:
diff changeset
737 menu->p_bdr_color = p_bdr_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
738 menu->s_bdr_color = s_bdr_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
739 menu->p_frg_color = p_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
740 menu->s_frg_color = s_frg_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
741 menu->bkgnd_color = bkgnd_color.pixel;
Dave Love <fx@gnu.org>
parents:
diff changeset
742 /* -------------------- Pixmap data -------------------- */
Dave Love <fx@gnu.org>
parents:
diff changeset
743 menu->p_bdr_pixmap = None;
Dave Love <fx@gnu.org>
parents:
diff changeset
744 menu->s_bdr_pixmap = None;
Dave Love <fx@gnu.org>
parents:
diff changeset
745 menu->p_frg_pixmap = None;
Dave Love <fx@gnu.org>
parents:
diff changeset
746 menu->s_frg_pixmap = None;
Dave Love <fx@gnu.org>
parents:
diff changeset
747 menu->bkgnd_pixmap = None;
Dave Love <fx@gnu.org>
parents:
diff changeset
748 menu->inact_pixmap = inact_bitmap;
Dave Love <fx@gnu.org>
parents:
diff changeset
749
Dave Love <fx@gnu.org>
parents:
diff changeset
750 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
751 * Return the completed XMenu.
Dave Love <fx@gnu.org>
parents:
diff changeset
752 */
Dave Love <fx@gnu.org>
parents:
diff changeset
753 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
754 return(menu);
Dave Love <fx@gnu.org>
parents:
diff changeset
755 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
756
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
757 /* arch-tag: 6945b7d2-3b13-40b9-8b6e-56b1b20f3463
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
758 (do not change this comment) */