annotate src/sunfns.c @ 42829:07bd6e693cb6

(easy-mmode-defmap): Enable "Up Stack", "Down Stack", and "Finish Function" menu map entries for jdb mode. (gud-jdb-use-classpath): New customization variable. (gud-jdb-command-name): Add customization. (gud-jdb-classpath, gud-marker-acc-max-length): New variables. (gud-jdb-classpath-string): New variable. (gud-jdb-source-files, gud-jdb-class-source-alist): Add doc strings. (gud-jdb-build-source-files-list): Likewise. (gud-jdb-massage-args): Record any command argument classpath string in `gud-jdb-classpath-string'. (gud-jdb-lowest-stack-level): New function, finds bottom of current java call stack in jdb output. (gud-jdb-find-source-using-classpath, gud-jdb-find-source) (gud-jdb-parse-classpath-string): New functions. (gud-jdb-marker-filter): Search/detect classpath information in jdb's output. marker regexp updated to match oldjdb and jdb output formats. Expand search for source files to include new/old methods using new functions above. Do not allow `gud-marker-acc' to grow without bound. (jdb): Set classpath information (if available) as jdb is started. Change `gud-break' and `gud-remove' to use new %c ("class") escape in format strings. Add `gud-finish', `gud-up', `gud-down' command string functions, and add them to the local menu map. Update `comint-prompt-regexp' for jdb and oldjdb. If attaching to an already running java VM and configured to use classpath, send command to query for classpath, else use previous method for finding and parsing java sources. Set `gud-jdb-find-source' function accordingly. (gud-mode): Doc fix. (gud-format-command): Add support for new %c ("class") escape. (gud-find-class): New function in support of %c escape.
author Richard M. Stallman <rms@gnu.org>
date Fri, 18 Jan 2002 18:57:20 +0000
parents b192e8b73558
children 40db0673e6f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
1 /* Functions for Sun Windows menus and selection buffer.
39584
6145836b795c Use SYMBOL_VALUE/ SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2 Copyright (C) 1987, 1999, 2001 Free Software Foundation, Inc.
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
3
4250
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
4 This file is probably totally obsolete. In any case, the FSF is
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
5 unwilling to support it. We agreed to include it in our distribution
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
6 only on the understanding that we would spend no time at all on it.
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
7
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
8 If you have complaints about this file, send them to peck@sun.com.
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
9 If no one at Sun wants to maintain this, then consider it not
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
10 maintained at all. It would be a bad thing for the GNU project if
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
11 this file took our effort away from higher-priority things.
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
12
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
13
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14 This file is part of GNU Emacs.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
16 GNU Emacs is free software; you can redistribute it and/or modify
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
17 it under the terms of the GNU General Public License as published by
12244
ac7375e60931 Update GPL to version 2.
Karl Heuer <kwzh@gnu.org>
parents: 9112
diff changeset
18 the Free Software Foundation; either version 2, or (at your option)
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
19 any later version.
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
21 GNU Emacs is distributed in the hope that it will be useful,
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
24 GNU General Public License for more details.
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
25
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
26 You should have received a copy of the GNU General Public License
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 19
diff changeset
27 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
28 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
29 Boston, MA 02111-1307, USA. */
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30
4250
d7d028324845 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
31 /* Author: Jeff Peck, Sun Microsystems, Inc. <peck@sun.com>
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
32 Original ideas by David Kastan and Eric Negaard, SRI International
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33 Major help from: Steve Greenbaum, Reasoning Systems, Inc.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
34 <froud@kestrel.arpa>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
35 who first discovered the Menu_Base_Kludge.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
36 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
37
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
38 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
39 * Emacs Lisp-Callable functions for sunwindows
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
40 */
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4250
diff changeset
41 #include <config.h>
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
42
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
43 #include <stdio.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
44 #include <errno.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
45 #include <signal.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
46 #include <sunwindow/window_hs.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
47 #include <suntool/selection.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
48 #include <suntool/menu.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
49 #include <suntool/walkmenu.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
50 #include <suntool/frame.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
51 #include <suntool/window.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
52
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
53 #include <fcntl.h>
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
54 #undef NULL /* We don't need sunview's idea of NULL */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
55 #include "lisp.h"
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
56 #include "window.h"
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
57 #include "buffer.h"
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
58 #include "termhooks.h"
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
59
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
60 /* conversion to/from character & frame coordinates */
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
61 /* From Gosling Emacs SunWindow driver by Chris Torek */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
62
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
63 /* Chars to frame coords. Note that we speak in zero origin. */
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
64 #define CtoSX(cx) ((cx) * Sun_Font_Xsize)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
65 #define CtoSY(cy) ((cy) * Sun_Font_Ysize)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
67 /* Frame coords to chars */
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
68 #define StoCX(sx) ((sx) / Sun_Font_Xsize)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
69 #define StoCY(sy) ((sy) / Sun_Font_Ysize)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
70
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
71 #define CHECK_GFX(x) if((win_fd<0)&&(Fsun_window_init(),(win_fd<0)))return(x)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
72 int win_fd = -1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
73 struct pixfont *Sun_Font; /* The font */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
74 int Sun_Font_Xsize; /* Width of font */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
75 int Sun_Font_Ysize; /* Height of font */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
76
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
77 #define Menu_Base_Kludge /* until menu_show_using_fd gets fixed */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
78 #ifdef Menu_Base_Kludge
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
79 static Frame Menu_Base_Frame;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
80 static int Menu_Base_fd;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
81 static Lisp_Object sm_kludge_string;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
82 #endif
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
83 struct cursor CurrentCursor; /* The current cursor */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
84
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
85 static short CursorData[16]; /* Build cursor here */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
86 static mpr_static(CursorMpr, 16, 16, 1, CursorData);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
87 static struct cursor NewCursor = {0, 0, PIX_SRC ^ PIX_DST, &CursorMpr};
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
88
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
89 #define RIGHT_ARROW_CURSOR /* if you want the right arrow */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
90 #ifdef RIGHT_ARROW_CURSOR
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
91 /* The default right-arrow cursor, with XOR drawing. */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
92 static short ArrowCursorData[16] = {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
93 0x0001,0x0003,0x0007,0x000F,0x001F,0x003F,0x007F,0x000F,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
94 0x001B,0x0019,0x0030,0x0030,0x0060,0x0060,0x00C0,0x00C0};
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
95 static mpr_static(ArrowCursorMpr, 16, 16, 1, ArrowCursorData);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
96 struct cursor DefaultCursor = {15, 0, PIX_SRC ^ PIX_DST, &ArrowCursorMpr};
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
97
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
98 #else
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 1437
diff changeset
99 /* The default left-arrow cursor, with XOR drawing. */
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
100 static short ArrowCursorData[16] = {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
101 0x8000,0xC000,0xE000,0xF000,0xF800,0xFC00,0xFE00,0xF000,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
102 0xD800,0x9800,0x0C00,0x0C00,0x0600,0x0600,0x0300,0x0300};
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
103 static mpr_static(ArrowCursorMpr, 16, 16, 1, ArrowCursorData);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
104 struct cursor DefaultCursor = {0, 0, PIX_SRC ^ PIX_DST, &ArrowCursorMpr};
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
105 #endif
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
106
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
107 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
108 * Initialize window
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
109 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
110 DEFUN ("sun-window-init", Fsun_window_init, Ssun_window_init, 0, 1, 0,
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
111 doc: /* One time setup for using Sun Windows with mouse.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
112 Unless optional argument FORCE is non-nil, is a noop after its first call.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
113 Returns a number representing the file descriptor of the open Sun Window,
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
114 or -1 if can not open it. */)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
115 (force)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
116 Lisp_Object force;
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
117 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
118 char *cp;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
119 static int already_initialized = 0;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
120
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 116
diff changeset
121 if ((! already_initialized) || (!NILP(force))) {
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
122 cp = getenv("WINDOW_GFX");
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25663
diff changeset
123 if (cp != 0) win_fd = emacs_open (cp, O_RDWR, 0);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
124 if (win_fd > 0)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
125 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
126 Sun_Font = pf_default();
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
127 Sun_Font_Xsize = Sun_Font->pf_defaultsize.x;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
128 Sun_Font_Ysize = Sun_Font->pf_defaultsize.y;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
129 Fsun_change_cursor_icon (Qnil); /* set up the default cursor */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
130 already_initialized = 1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
131 #ifdef Menu_Base_Kludge
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
132
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
133 /* Make a frame to use for putting the menu on, and get its fd. */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
134 Menu_Base_Frame = window_create(0, FRAME,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
135 WIN_X, 0, WIN_Y, 0,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
136 WIN_ROWS, 1, WIN_COLUMNS, 1,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
137 WIN_SHOW, FALSE,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
138 FRAME_NO_CONFIRM, 1,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
139 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
140 Menu_Base_fd = (int) window_get(Menu_Base_Frame, WIN_FD);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
141 #endif
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
142 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
143 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
144 return(make_number(win_fd));
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
145 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
146
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
147 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
148 * Mouse sit-for (allows a shorter interval than the regular sit-for
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
149 * and can be interrupted by the mouse)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
150 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
151 DEFUN ("sit-for-millisecs", Fsit_for_millisecs, Ssit_for_millisecs, 1, 1, 0,
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
152 doc: /* Like sit-for, but ARG is milliseconds.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
153 Perform redisplay, then wait for ARG milliseconds or until
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
154 input is available. Returns t if wait completed with no input.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
155 Redisplay does not happen if input is available before it starts. */)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
156 (n)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
157 Lisp_Object n;
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
158 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
159 struct timeval Timeout;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
160 int waitmask = 1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
161
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
162 CHECK_NUMBER (n);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
163 Timeout.tv_sec = XINT(n) / 1000;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
164 Timeout.tv_usec = (XINT(n) - (Timeout.tv_sec * 1000)) * 1000;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
165
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
166 if (detect_input_pending()) return(Qnil);
35336
002c02db42d3 Call redisplay_preserve_echo_area with additional arg.
Gerd Moellmann <gerd@gnu.org>
parents: 26088
diff changeset
167 redisplay_preserve_echo_area (16);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
168 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
169 * Check for queued keyboard input/mouse hits again
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
170 * (A bit screen update can take some time!)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
171 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
172 if (detect_input_pending()) return(Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
173 select(1,&waitmask,0,0,&Timeout);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
174 if (detect_input_pending()) return(Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
175 return(Qt);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
176 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
177
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
178 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
179 * Sun sleep-for (allows a shorter interval than the regular sleep-for)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
180 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
181 DEFUN ("sleep-for-millisecs",
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
182 Fsleep_for_millisecs,
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
183 Ssleep_for_millisecs, 1, 1, 0,
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
184 doc: /* Pause, without updating display, for ARG milliseconds. */)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
185 (n)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
186 Lisp_Object n;
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
187 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
188 unsigned useconds;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
189
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
190 CHECK_NUMBER (n);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
191 useconds = XINT(n) * 1000;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
192 usleep(useconds);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
193 return(Qt);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
194 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
195
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
196 DEFUN ("update-display", Fupdate_display, Supdate_display, 0, 0, 0,
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
197 doc: /* Perform redisplay. */)
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
198 ()
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
199 {
35336
002c02db42d3 Call redisplay_preserve_echo_area with additional arg.
Gerd Moellmann <gerd@gnu.org>
parents: 26088
diff changeset
200 redisplay_preserve_echo_area (17);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
201 return(Qt);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
202 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
203
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
204
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
205 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
206 * Change the Sun mouse icon
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
207 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
208 DEFUN ("sun-change-cursor-icon",
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
209 Fsun_change_cursor_icon,
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
210 Ssun_change_cursor_icon, 1, 1, 0,
41024
b192e8b73558 (Fsun_change_cursor_icon): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40656
diff changeset
211 doc: /* Change the Sun mouse cursor icon.
b192e8b73558 (Fsun_change_cursor_icon): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 40656
diff changeset
212 ICON is a lisp vector whose 1st element
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
213 is the X offset of the cursor hot-point, whose 2nd element is the Y offset
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
214 of the cursor hot-point and whose 3rd element is the cursor pixel data
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
215 expressed as a string. If ICON is nil then the original arrow cursor is used. */)
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
216 (Icon)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
217 Lisp_Object Icon;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
218 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
219 register unsigned char *cp;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
220 register short *p;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
221 register int i;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
222 Lisp_Object X_Hot, Y_Hot, Data;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
223
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
224 CHECK_GFX (Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
225 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
226 * If the icon is null, we just restore the DefaultCursor
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
227 */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 116
diff changeset
228 if (NILP(Icon))
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
229 CurrentCursor = DefaultCursor;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
230 else {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
231 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
232 * extract the data from the vector
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
233 */
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
234 CHECK_VECTOR (Icon);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
235 if (XVECTOR(Icon)->size < 3) return(Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
236 X_Hot = XVECTOR(Icon)->contents[0];
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
237 Y_Hot = XVECTOR(Icon)->contents[1];
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
238 Data = XVECTOR(Icon)->contents[2];
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
239
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
240 CHECK_NUMBER (X_Hot);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
241 CHECK_NUMBER (Y_Hot);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
242 CHECK_STRING (Data);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
243 if (XSTRING(Data)->size != 32) return(Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
244 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
245 * Setup the new cursor
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
246 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
247 NewCursor.cur_xhot = X_Hot;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
248 NewCursor.cur_yhot = Y_Hot;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
249 cp = XSTRING(Data)->data;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
250 p = CursorData;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251 i = 16;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
252 while(--i >= 0)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
253 *p++ = (cp[0] << 8) | cp[1], cp += 2;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
254 CurrentCursor = NewCursor;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
255 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
256 win_setcursor(win_fd, &CurrentCursor);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
257 return(Qt);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
258 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
259
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
260 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
261 * Interface for sunwindows selection
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
262 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
263 static Lisp_Object Current_Selection;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
264
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
265 static
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
266 sel_write (sel, file)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
267 struct selection *sel;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
268 FILE *file;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
269 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
270 fwrite (XSTRING (Current_Selection)->data, sizeof (char),
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
271 sel->sel_items, file);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
272 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
273
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
274 static
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
275 sel_clear (sel, windowfd)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
276 struct selection *sel;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
277 int windowfd;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
278 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
279 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
280
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
281 static
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
282 sel_read (sel, file)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
283 struct selection *sel;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
284 FILE *file;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
285 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
286 register int i, n;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
287 register char *cp;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
288
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
289 Current_Selection = make_string ("", 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
290 if (sel->sel_items <= 0)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
291 return (0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
292 cp = (char *) malloc(sel->sel_items);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
293 if (cp == (char *)0) {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
294 error("malloc failed in sel_read");
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
295 return(-1);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
296 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
297 n = fread(cp, sizeof(char), sel->sel_items, file);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
298 if (n > sel->sel_items) {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
299 error("fread botch in sel_read");
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
300 return(-1);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
301 } else if (n < 0) {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
302 error("Error reading selection.");
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
303 return(-1);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
304 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
305 /*
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 1437
diff changeset
306 * The shelltool select saves newlines as carriage returns,
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
307 * but emacs wants newlines.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
308 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
309 for (i = 0; i < n; i++)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
310 if (cp[i] == '\r') cp[i] = '\n';
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
311
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
312 Current_Selection = make_string (cp, n);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
313 free (cp);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
314 return (0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
315 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
316
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
317 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
318 * Set the window system "selection" to be the arg STRING
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
319 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
320 DEFUN ("sun-set-selection", Fsun_set_selection, Ssun_set_selection, 1, 1,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
321 "sSet selection to: ",
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
322 doc: /* Set the current sunwindow selection to STRING. */)
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
323 (str)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
324 Lisp_Object str;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
325 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
326 struct selection selection;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
327
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
328 CHECK_STRING (str);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
329 Current_Selection = str;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
330
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
331 CHECK_GFX (Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
332 selection.sel_type = SELTYPE_CHAR;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
333 selection.sel_items = XSTRING (str)->size;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
334 selection.sel_itembytes = 1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
335 selection.sel_pubflags = 1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
336 selection_set(&selection, sel_write, sel_clear, win_fd);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
337 return (Qt);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
338 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
339 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
340 * Stuff the current window system selection into the current buffer
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
341 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
342 DEFUN ("sun-get-selection", Fsun_get_selection, Ssun_get_selection, 0, 0, 0,
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
343 doc: /* Return the current sunwindows selection as a string. */)
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
344 ()
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
345 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
346 CHECK_GFX (Current_Selection);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
347 selection_get (sel_read, win_fd);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
348 return (Current_Selection);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
349 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
350
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
351 Menu sun_menu_create();
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
352
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
353 Menu_item
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
354 sun_item_create (Pair)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
355 Lisp_Object Pair;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
356 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
357 /* In here, we depend on Lisp supplying zero terminated strings in the data*/
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
358 /* so we can just pass the pointers, and not recopy anything */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
359
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
360 Menu_item menu_item;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
361 Menu submenu;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
362 Lisp_Object String;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
363 Lisp_Object Value;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
364
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
365 if (!CONSP(Pair)) wrong_type_argument(Qlistp, Pair);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
366 String = Fcar(Pair);
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
367 CHECK_STRING(String);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
368 Value = Fcdr(Pair);
9112
85182997b9c9 (sun_item_create): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
369 if (SYMBOLP (Value))
39584
6145836b795c Use SYMBOL_VALUE/ SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
370 Value = SYMBOL_VALUE (Value);
9112
85182997b9c9 (sun_item_create): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 4696
diff changeset
371 if (VECTORP (Value)) {
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
372 submenu = sun_menu_create (Value);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
373 menu_item = menu_create_item
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
374 (MENU_RELEASE, MENU_PULLRIGHT_ITEM, XSTRING(String)->data, submenu, 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
375 } else {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
376 menu_item = menu_create_item
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
377 (MENU_RELEASE, MENU_STRING_ITEM, XSTRING(String)->data, Value, 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
378 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
379 return menu_item;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
380 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
381
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
382 Menu
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
383 sun_menu_create (Vector)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
384 Lisp_Object Vector;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
385 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
386 Menu menu;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
387 int i;
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
388 CHECK_VECTOR(Vector);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
389 menu=menu_create(0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
390 for(i = 0; i < XVECTOR(Vector)->size; i++) {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
391 menu_set (menu, MENU_APPEND_ITEM,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
392 sun_item_create(XVECTOR(Vector)->contents[i]), 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
393 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
394 return menu;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
395 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
396
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
397 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
398 * If the first item of the menu has nil as its value, then make the
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
399 * item look like a label by inverting it and making it unselectable.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
400 * Returns 1 if the label was made, 0 otherwise.
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
401 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
402 int
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
403 make_menu_label (menu)
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
404 Menu menu;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
405 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
406 int made_label_p = 0;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
407
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
408 if (( menu_get(menu, MENU_NITEMS) > 0 ) && /* At least one item */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
409 ((Lisp_Object) menu_get(menu_get(menu, MENU_NTH_ITEM, 1),
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
410 MENU_VALUE) == Qnil )) {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
411 menu_set(menu_get(menu, MENU_NTH_ITEM, 1),
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
412 MENU_INVERT, TRUE,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
413 MENU_FEEDBACK, FALSE,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
414 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
415 made_label_p = 1;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
416 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
417 return made_label_p;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
418 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
419
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
420 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
421 * Do a pop-up menu and return the selected value
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
422 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
423 DEFUN ("sun-menu-internal",
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
424 Fsun_menu_internal,
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
425 Ssun_menu_internal, 5, 5, 0,
40123
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
426 doc: /* Set up a SunView pop-up menu and return the user's choice.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
427 Arguments WINDOW, X, Y, BUTTON, and MENU.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
428 *** User code should generally use sun-menu-evaluate ***
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
429
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
430 Arguments WINDOW, X, Y, BUTTON, and MENU.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
431 Put MENU up in WINDOW at position X, Y.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
432 The BUTTON argument specifies the button to be released that selects an item:
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
433 1 = LEFT BUTTON
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
434 2 = MIDDLE BUTTON
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
435 4 = RIGHT BUTTON
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
436 The MENU argument is a vector containing (STRING . VALUE) pairs.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
437 The VALUE of the selected item is returned.
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
438 If the VALUE of the first pair is nil, then the first STRING will be used
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
439 as a menu label. */)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
440 (window, X_Position, Y_Position, Button, MEnu)
e528f2adeed4 Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39584
diff changeset
441 Lisp_Object window, X_Position, Y_Position, Button, MEnu;
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
442 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
443 Menu menu;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
444 int button, xpos, ypos;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
445 Event event0;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
446 Event *event = &event0;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
447 Lisp_Object Value, Pair;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
448
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
449 CHECK_NUMBER(X_Position);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
450 CHECK_NUMBER(Y_Position);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
451 CHECK_LIVE_WINDOW(window);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
452 CHECK_NUMBER(Button);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40123
diff changeset
453 CHECK_VECTOR(MEnu);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
454
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
455 CHECK_GFX (Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
456
16261
c8a6a5b01690 (Fsun_menu_internal): Use new WINDOW_LEFT_MARGIN macro.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
457 xpos = CtoSX (WINDOW_LEFT_MARGIN (XWINDOW (window)) + XINT(X_Position));
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
458 ypos = CtoSY (XWINDOW(window)->top + XINT(Y_Position));
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
459 #ifdef Menu_Base_Kludge
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
460 {static Lisp_Object symbol[2];
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
461 symbol[0] = Fintern (sm_kludge_string, Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
462 Pair = Ffuncall (1, symbol);
25663
a5eaace0fa01 Use XCAR and XCDR instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 21259
diff changeset
463 xpos += XINT (XCDR (Pair));
a5eaace0fa01 Use XCAR and XCDR instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 21259
diff changeset
464 ypos += XINT (XCAR (Pair));
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
465 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
466 #endif
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
467
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
468 button = XINT(Button);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
469 if(button == 4) button = 3;
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
470 event_set_id (event, BUT(button));
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
471 event_set_down (event);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
472 event_set_x (event, xpos);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
473 event_set_y (event, ypos);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
474
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
475 menu = sun_menu_create(MEnu);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
476 make_menu_label(menu);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
477
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
478 #ifdef Menu_Base_Kludge
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
479 Value = (Lisp_Object) menu_show(menu, Menu_Base_Frame, event, 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
480 #else
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
481 /* This confuses the notifier or something: */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
482 Value = (Lisp_Object) menu_show_using_fd(menu, win_fd, event, 0);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
483 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
484 * Right button gets lost, and event sequencing or delivery gets mixed up
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
485 * So, until that gets fixed, we use this <Menu_Base_Frame> kludge:
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
486 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
487 #endif
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
488 menu_destroy (menu);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
489
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
490 return ((int)Value ? Value : Qnil);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
491 }
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
492
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
493
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
494 /*
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
495 * Define everything
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
496 */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
497 syms_of_sunfns()
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
498 {
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
499 #ifdef Menu_Base_Kludge
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
500 /* i'm just too lazy to re-write this into C code */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
501 /* so we will call this elisp function from C */
21259
3abae7d11d07 (syms_of_sunfns): Pass new arg to make_pure_string.
Richard M. Stallman <rms@gnu.org>
parents: 16261
diff changeset
502 sm_kludge_string = make_pure_string ("sm::menu-kludge", 15, 15, 0);
19
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
503 #endif /* Menu_Base_Kludge */
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
504
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
505 defsubr(&Ssun_window_init);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
506 defsubr(&Ssit_for_millisecs);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
507 defsubr(&Ssleep_for_millisecs);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
508 defsubr(&Supdate_display);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
509 defsubr(&Ssun_change_cursor_icon);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
510 defsubr(&Ssun_set_selection);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
511 defsubr(&Ssun_get_selection);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
512 defsubr(&Ssun_menu_internal);
58b14548d982 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
513 }