Mercurial > emacs
annotate src/macselect.c @ 91620:acb32817f0e8
Use "do...while (0)", not "if (1)..else" in macro definitions.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Thu, 07 Feb 2008 12:51:51 +0000 |
parents | 107ccd98fa12 |
children | 4e76a03232e5 |
rev | line source |
---|---|
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1 /* Selection processing for Emacs on Mac OS. |
79759 | 2 Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
3 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
4 This file is part of GNU Emacs. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
5 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
6 GNU Emacs is free software; you can redistribute it and/or modify |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
7 it under the terms of the GNU General Public License as published by |
78260
922696f363b0
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
76745
diff
changeset
|
8 the Free Software Foundation; either version 3, or (at your option) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
9 any later version. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
10 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
11 GNU Emacs is distributed in the hope that it will be useful, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
14 GNU General Public License for more details. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
15 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
16 You should have received a copy of the GNU General Public License |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
17 along with GNU Emacs; see the file COPYING. If not, write to |
64084 | 18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 Boston, MA 02110-1301, USA. */ | |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
20 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
21 #include <config.h> |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
22 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
23 #include "lisp.h" |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
24 #include "macterm.h" |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
25 #include "blockinput.h" |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
26 #include "keymap.h" |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
27 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
28 #if TARGET_API_MAC_CARBON |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
29 typedef ScrapRef Selection; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
30 #else /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
31 #include <Scrap.h> |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
32 #include <Endian.h> |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
33 typedef int Selection; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
34 #endif /* !TARGET_API_MAC_CARBON */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
35 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
36 static OSStatus mac_get_selection_from_symbol P_ ((Lisp_Object, int, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
37 Selection *)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
38 static ScrapFlavorType get_flavor_type_from_symbol P_ ((Lisp_Object, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
39 Selection)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
40 static int mac_valid_selection_target_p P_ ((Lisp_Object)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
41 static OSStatus mac_clear_selection P_ ((Selection *)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
42 static Lisp_Object mac_get_selection_ownership_info P_ ((Selection)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
43 static int mac_valid_selection_value_p P_ ((Lisp_Object, Lisp_Object)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
44 static OSStatus mac_put_selection_value P_ ((Selection, Lisp_Object, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
45 Lisp_Object)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
46 static int mac_selection_has_target_p P_ ((Selection, Lisp_Object)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
47 static Lisp_Object mac_get_selection_value P_ ((Selection, Lisp_Object)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
48 static Lisp_Object mac_get_selection_target_list P_ ((Selection)); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
49 static void x_own_selection P_ ((Lisp_Object, Lisp_Object)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
50 static Lisp_Object x_get_local_selection P_ ((Lisp_Object, Lisp_Object, int)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
51 static Lisp_Object x_get_foreign_selection P_ ((Lisp_Object, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
52 Lisp_Object, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
53 Lisp_Object)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
54 EXFUN (Fx_selection_owner_p, 1); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
55 #ifdef MAC_OSX |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
56 static OSStatus mac_handle_service_event P_ ((EventHandlerCallRef, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
57 EventRef, void *)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
58 void init_service_handler P_ ((void)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
59 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
60 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
61 Lisp_Object QPRIMARY, QSECONDARY, QTIMESTAMP, QTARGETS; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
62 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
63 static Lisp_Object Vx_lost_selection_functions; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
64 /* Coding system for communicating with other programs via selections. */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
65 static Lisp_Object Vselection_coding_system; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
66 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
67 /* Coding system for the next communicating with other programs. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
68 static Lisp_Object Vnext_selection_coding_system; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
69 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
70 static Lisp_Object Qforeign_selection; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
71 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
72 /* The timestamp of the last input event Emacs received from the |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
73 window server. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
74 /* Defined in keyboard.c. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
75 extern unsigned long last_event_timestamp; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
76 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
77 /* This is an association list whose elements are of the form |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
78 ( SELECTION-NAME SELECTION-VALUE SELECTION-TIMESTAMP FRAME OWNERSHIP-INFO) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
79 SELECTION-NAME is a lisp symbol. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
80 SELECTION-VALUE is the value that emacs owns for that selection. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
81 It may be any kind of Lisp object. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
82 SELECTION-TIMESTAMP is the time at which emacs began owning this selection, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
83 as a cons of two 16-bit numbers (making a 32 bit time.) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
84 FRAME is the frame for which we made the selection. |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
85 OWNERSHIP-INFO is a value saved when emacs owns for that selection. |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
86 If another application takes the ownership of that selection |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
87 later, then newly examined ownership info value should be |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
88 different from the saved one. |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
89 If there is an entry in this alist, the current ownership info for |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
90 the selection coincides with OWNERSHIP-INFO, then it can be |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
91 assumed that Emacs owns that selection. |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
92 The only (eq) parts of this list that are visible from Lisp are the |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
93 selection-values. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
94 static Lisp_Object Vselection_alist; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
95 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
96 /* This is an alist whose CARs are selection-types and whose CDRs are |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
97 the names of Lisp functions to call to convert the given Emacs |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
98 selection value to a string representing the given selection type. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
99 This is for Lisp-level extension of the emacs selection |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
100 handling. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
101 static Lisp_Object Vselection_converter_alist; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
102 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
103 /* A selection name (represented as a Lisp symbol) can be associated |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
104 with a named scrap via `mac-scrap-name' property. Likewise for a |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
105 selection type with a scrap flavor type via `mac-ostype'. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
106 static Lisp_Object Qmac_scrap_name, Qmac_ostype; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
107 |
62102
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
108 #ifdef MAC_OSX |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
109 /* Selection name for communication via Services menu. */ |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
110 static Lisp_Object Vmac_service_selection; |
62102
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
111 #endif |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
112 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
113 /* Get a reference to the selection corresponding to the symbol SYM. |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
114 The reference is set to *SEL, and it becomes NULL if there's no |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
115 corresponding selection. Clear the selection if CLEAR_P is |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
116 non-zero. */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
117 |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
118 static OSStatus |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
119 mac_get_selection_from_symbol (sym, clear_p, sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
120 Lisp_Object sym; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
121 int clear_p; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
122 Selection *sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
123 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
124 OSStatus err = noErr; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
125 Lisp_Object str = Fget (sym, Qmac_scrap_name); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
126 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
127 if (!STRINGP (str)) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
128 *sel = NULL; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
129 else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
130 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
131 #if TARGET_API_MAC_CARBON |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
132 #ifdef MAC_OSX |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
133 CFStringRef scrap_name = cfstring_create_with_string (str); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
134 OptionBits options = (clear_p ? kScrapClearNamedScrap |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
135 : kScrapGetNamedScrap); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
136 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
137 err = GetScrapByName (scrap_name, options, sel); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
138 CFRelease (scrap_name); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
139 #else /* !MAC_OSX */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
140 if (clear_p) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
141 err = ClearCurrentScrap (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
142 if (err == noErr) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
143 err = GetCurrentScrap (sel); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
144 #endif /* !MAC_OSX */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
145 #else /* !TARGET_API_MAC_CARBON */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
146 if (clear_p) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
147 err = ZeroScrap (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
148 if (err == noErr) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
149 *sel = 1; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
150 #endif /* !TARGET_API_MAC_CARBON */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
151 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
152 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
153 return err; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
154 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
155 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
156 /* Get a scrap flavor type from the symbol SYM. Return 0 if no |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
157 corresponding flavor type. If SEL is non-zero, the return value is |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
158 non-zero only when the SEL has the flavor type. */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
159 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
160 static ScrapFlavorType |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
161 get_flavor_type_from_symbol (sym, sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
162 Lisp_Object sym; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
163 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
164 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
165 Lisp_Object str = Fget (sym, Qmac_ostype); |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
166 ScrapFlavorType flavor_type; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
167 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
168 if (STRINGP (str) && SBYTES (str) == 4) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
169 flavor_type = EndianU32_BtoN (*((UInt32 *) SDATA (str))); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
170 else |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
171 flavor_type = 0; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
172 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
173 if (flavor_type && sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
174 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
175 #if TARGET_API_MAC_CARBON |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
176 OSStatus err; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
177 ScrapFlavorFlags flags; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
178 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
179 err = GetScrapFlavorFlags (sel, flavor_type, &flags); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
180 if (err != noErr) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
181 flavor_type = 0; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
182 #else /* !TARGET_API_MAC_CARBON */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
183 SInt32 size, offset; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
184 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
185 size = GetScrap (NULL, flavor_type, &offset); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
186 if (size < 0) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
187 flavor_type = 0; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
188 #endif /* !TARGET_API_MAC_CARBON */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
189 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
190 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
191 return flavor_type; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
192 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
193 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
194 /* Check if the symbol SYM has a corresponding selection target type. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
195 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
196 static int |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
197 mac_valid_selection_target_p (sym) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
198 Lisp_Object sym; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
199 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
200 return get_flavor_type_from_symbol (sym, 0) != 0; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
201 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
202 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
203 /* Clear the selection whose reference is *SEL. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
204 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
205 static OSStatus |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
206 mac_clear_selection (sel) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
207 Selection *sel; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
208 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
209 #if TARGET_API_MAC_CARBON |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
210 #ifdef MAC_OSX |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
211 return ClearScrap (sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
212 #else |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
213 OSStatus err; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
214 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
215 err = ClearCurrentScrap (); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
216 if (err == noErr) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
217 err = GetCurrentScrap (sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
218 return err; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
219 #endif |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
220 #else /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
221 return ZeroScrap (); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
222 #endif /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
223 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
224 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
225 /* Get ownership information for SEL. Emacs can detect a change of |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
226 the ownership by comparing saved and current values of the |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
227 ownership information. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
228 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
229 static Lisp_Object |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
230 mac_get_selection_ownership_info (sel) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
231 Selection sel; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
232 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
233 #if TARGET_API_MAC_CARBON |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
234 return long_to_cons ((unsigned long) sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
235 #else /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
236 ScrapStuffPtr scrap_info = InfoScrap (); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
237 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
238 return make_number (scrap_info->scrapCount); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
239 #endif /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
240 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
241 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
242 /* Return non-zero if VALUE is a valid selection value for TARGET. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
243 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
244 static int |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
245 mac_valid_selection_value_p (value, target) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
246 Lisp_Object value, target; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
247 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
248 return STRINGP (value); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
249 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
250 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
251 /* Put Lisp Object VALUE to the selection SEL. The target type is |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
252 specified by TARGET. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
253 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
254 static OSStatus |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
255 mac_put_selection_value (sel, target, value) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
256 Selection sel; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
257 Lisp_Object target, value; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
258 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
259 ScrapFlavorType flavor_type = get_flavor_type_from_symbol (target, 0); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
260 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
261 if (flavor_type == 0 || !STRINGP (value)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
262 return noTypeErr; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
263 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
264 #if TARGET_API_MAC_CARBON |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
265 return PutScrapFlavor (sel, flavor_type, kScrapFlavorMaskNone, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
266 SBYTES (value), SDATA (value)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
267 #else /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
268 return PutScrap (SBYTES (value), flavor_type, SDATA (value)); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
269 #endif /* !TARGET_API_MAC_CARBON */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
270 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
271 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
272 /* Check if data for the target type TARGET is available in SEL. */ |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
273 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
274 static int |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
275 mac_selection_has_target_p (sel, target) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
276 Selection sel; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
277 Lisp_Object target; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
278 { |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
279 return get_flavor_type_from_symbol (target, sel) != 0; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
280 } |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
281 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
282 /* Get data for the target type TARGET from SEL and create a Lisp |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
283 string. Return nil if failed to get data. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
284 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
285 static Lisp_Object |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
286 mac_get_selection_value (sel, target) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
287 Selection sel; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
288 Lisp_Object target; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
289 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
290 OSStatus err; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
291 Lisp_Object result = Qnil; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
292 ScrapFlavorType flavor_type = get_flavor_type_from_symbol (target, sel); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
293 #if TARGET_API_MAC_CARBON |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
294 Size size; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
295 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
296 if (flavor_type) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
297 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
298 err = GetScrapFlavorSize (sel, flavor_type, &size); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
299 if (err == noErr) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
300 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
301 do |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
302 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
303 result = make_uninit_string (size); |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
304 err = GetScrapFlavorData (sel, flavor_type, |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
305 &size, SDATA (result)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
306 if (err != noErr) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
307 result = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
308 else if (size < SBYTES (result)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
309 result = make_unibyte_string (SDATA (result), size); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
310 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
311 while (STRINGP (result) && size > SBYTES (result)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
312 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
313 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
314 #else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
315 Handle handle; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
316 SInt32 size, offset; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
317 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
318 if (flavor_type) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
319 size = GetScrap (NULL, flavor_type, &offset); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
320 if (size >= 0) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
321 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
322 handle = NewHandle (size); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
323 HLock (handle); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
324 size = GetScrap (handle, flavor_type, &offset); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
325 if (size >= 0) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
326 result = make_unibyte_string (*handle, size); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
327 DisposeHandle (handle); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
328 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
329 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
330 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
331 return result; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
332 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
333 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
334 /* Get the list of target types in SEL. The return value is a list of |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
335 target type symbols possibly followed by scrap flavor type |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
336 strings. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
337 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
338 static Lisp_Object |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
339 mac_get_selection_target_list (sel) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
340 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
341 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
342 Lisp_Object result = Qnil, rest, target; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
343 #if TARGET_API_MAC_CARBON |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
344 OSStatus err; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
345 UInt32 count, i, type; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
346 ScrapFlavorInfo *flavor_info = NULL; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
347 Lisp_Object strings = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
348 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
349 err = GetScrapFlavorCount (sel, &count); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
350 if (err == noErr) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
351 flavor_info = xmalloc (sizeof (ScrapFlavorInfo) * count); |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
352 err = GetScrapFlavorInfoList (sel, &count, flavor_info); |
70070
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
353 if (err != noErr) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
354 { |
70070
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
355 xfree (flavor_info); |
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
356 flavor_info = NULL; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
357 } |
64312
c528a5858404
(get_scrap_target_type_list): Avoid NULL pointer dereference.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64084
diff
changeset
|
358 if (flavor_info == NULL) |
c528a5858404
(get_scrap_target_type_list): Avoid NULL pointer dereference.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64084
diff
changeset
|
359 count = 0; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
360 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
361 for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
362 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
363 ScrapFlavorType flavor_type = 0; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
364 |
76745
f6a525134188
(get_scrap_target_type_list, x_own_selection): Move
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75376
diff
changeset
|
365 if (CONSP (XCAR (rest)) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
366 && (target = XCAR (XCAR (rest)), |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
367 SYMBOLP (target)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
368 && (flavor_type = get_flavor_type_from_symbol (target, sel))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
369 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
370 result = Fcons (target, result); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
371 #if TARGET_API_MAC_CARBON |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
372 for (i = 0; i < count; i++) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
373 if (flavor_info[i].flavorType == flavor_type) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
374 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
375 flavor_info[i].flavorType = 0; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
376 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
377 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
378 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
379 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
380 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
381 #if TARGET_API_MAC_CARBON |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
382 if (flavor_info) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
383 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
384 for (i = 0; i < count; i++) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
385 if (flavor_info[i].flavorType) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
386 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
387 type = EndianU32_NtoB (flavor_info[i].flavorType); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
388 strings = Fcons (make_unibyte_string ((char *) &type, 4), strings); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
389 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
390 result = nconc2 (result, strings); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
391 xfree (flavor_info); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
392 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
393 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
394 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
395 return result; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
396 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
397 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
398 /* Do protocol to assert ourself as a selection owner. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
399 Update the Vselection_alist so that we can reply to later requests for |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
400 our selection. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
401 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
402 static void |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
403 x_own_selection (selection_name, selection_value) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
404 Lisp_Object selection_name, selection_value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
405 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
406 OSStatus err; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
407 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
408 struct gcpro gcpro1, gcpro2; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
409 Lisp_Object rest, handler_fn, value, target_type; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
410 int count; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
411 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
412 CHECK_SYMBOL (selection_name); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
413 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
414 GCPRO2 (selection_name, selection_value); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
415 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
416 BLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
417 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
418 err = mac_get_selection_from_symbol (selection_name, 1, &sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
419 if (err == noErr && sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
420 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
421 /* Don't allow a quit within the converter. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
422 When the user types C-g, he would be surprised |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
423 if by luck it came during a converter. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
424 count = SPECPDL_INDEX (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
425 specbind (Qinhibit_quit, Qt); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
426 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
427 for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
428 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
429 if (!(CONSP (XCAR (rest)) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
430 && (target_type = XCAR (XCAR (rest)), |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
431 SYMBOLP (target_type)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
432 && mac_valid_selection_target_p (target_type) |
76745
f6a525134188
(get_scrap_target_type_list, x_own_selection): Move
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75376
diff
changeset
|
433 && (handler_fn = XCDR (XCAR (rest)), |
f6a525134188
(get_scrap_target_type_list, x_own_selection): Move
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75376
diff
changeset
|
434 SYMBOLP (handler_fn)))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
435 continue; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
436 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
437 if (!NILP (handler_fn)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
438 value = call3 (handler_fn, selection_name, |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
439 target_type, selection_value); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
440 |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
441 if (NILP (value)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
442 continue; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
443 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
444 if (mac_valid_selection_value_p (value, target_type)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
445 err = mac_put_selection_value (sel, target_type, value); |
62102
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
446 else if (CONSP (value) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
447 && EQ (XCAR (value), target_type) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
448 && mac_valid_selection_value_p (XCDR (value), target_type)) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
449 err = mac_put_selection_value (sel, target_type, XCDR (value)); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
450 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
451 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
452 unbind_to (count, Qnil); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
453 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
454 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
455 UNBLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
456 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
457 UNGCPRO; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
458 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
459 if (sel && err != noErr) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
460 error ("Can't set selection"); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
461 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
462 /* Now update the local cache */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
463 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
464 Lisp_Object selection_time; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
465 Lisp_Object selection_data; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
466 Lisp_Object ownership_info; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
467 Lisp_Object prev_value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
468 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
469 selection_time = long_to_cons (last_event_timestamp); |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
470 if (sel) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
471 ownership_info = mac_get_selection_ownership_info (sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
472 else |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
473 ownership_info = Qnil; /* dummy value for local-only selection */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
474 selection_data = Fcons (selection_name, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
475 Fcons (selection_value, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
476 Fcons (selection_time, |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
477 Fcons (selected_frame, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
478 Fcons (ownership_info, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
479 Qnil))))); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
480 prev_value = assq_no_quit (selection_name, Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
481 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
482 Vselection_alist = Fcons (selection_data, Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
483 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
484 /* If we already owned the selection, remove the old selection data. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
485 Perhaps we should destructively modify it instead. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
486 Don't use Fdelq as that may QUIT. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
487 if (!NILP (prev_value)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
488 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
489 Lisp_Object rest; /* we know it's not the CAR, so it's easy. */ |
85372
f7d19cfed7da
* xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
82290
diff
changeset
|
490 for (rest = Vselection_alist; CONSP (rest); rest = XCDR (rest)) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
491 if (EQ (prev_value, Fcar (XCDR (rest)))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
492 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
493 XSETCDR (rest, Fcdr (XCDR (rest))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
494 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
495 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
496 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
497 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
498 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
499 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
500 /* Given a selection-name and desired type, look up our local copy of |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
501 the selection value and convert it to the type. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
502 The value is nil or a string. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
503 This function is used both for remote requests (LOCAL_REQUEST is zero) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
504 and for local x-get-selection-internal (LOCAL_REQUEST is nonzero). |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
505 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
506 This calls random Lisp code, and may signal or gc. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
507 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
508 static Lisp_Object |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
509 x_get_local_selection (selection_symbol, target_type, local_request) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
510 Lisp_Object selection_symbol, target_type; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
511 int local_request; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
512 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
513 Lisp_Object local_value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
514 Lisp_Object handler_fn, value, type, check; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
515 int count; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
516 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
517 if (NILP (Fx_selection_owner_p (selection_symbol))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
518 return Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
519 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
520 local_value = assq_no_quit (selection_symbol, Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
521 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
522 /* TIMESTAMP is a special case 'cause that's easiest. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
523 if (EQ (target_type, QTIMESTAMP)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
524 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
525 handler_fn = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
526 value = XCAR (XCDR (XCDR (local_value))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
527 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
528 #if 0 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
529 else if (EQ (target_type, QDELETE)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
530 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
531 handler_fn = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
532 Fx_disown_selection_internal |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
533 (selection_symbol, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
534 XCAR (XCDR (XCDR (local_value)))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
535 value = QNULL; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
536 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
537 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
538 else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
539 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
540 /* Don't allow a quit within the converter. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
541 When the user types C-g, he would be surprised |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
542 if by luck it came during a converter. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
543 count = SPECPDL_INDEX (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
544 specbind (Qinhibit_quit, Qt); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
545 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
546 CHECK_SYMBOL (target_type); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
547 handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
548 /* gcpro is not needed here since nothing but HANDLER_FN |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
549 is live, and that ought to be a symbol. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
550 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
551 if (!NILP (handler_fn)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
552 value = call3 (handler_fn, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
553 selection_symbol, (local_request ? Qnil : target_type), |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
554 XCAR (XCDR (local_value))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
555 else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
556 value = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
557 unbind_to (count, Qnil); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
558 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
559 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
560 if (local_request) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
561 return value; |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
562 |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
563 /* Make sure this value is of a type that we could transmit |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
564 to another application. */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
565 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
566 type = target_type; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
567 check = value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
568 if (CONSP (value) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
569 && SYMBOLP (XCAR (value))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
570 type = XCAR (value), |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
571 check = XCDR (value); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
572 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
573 if (NILP (value) || mac_valid_selection_value_p (check, type)) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
574 return value; |
71985
ae7908422c59
(x_get_local_selection): Use signal_error.
Kim F. Storm <storm@cua.dk>
parents:
70988
diff
changeset
|
575 |
ae7908422c59
(x_get_local_selection): Use signal_error.
Kim F. Storm <storm@cua.dk>
parents:
70988
diff
changeset
|
576 signal_error ("Invalid data returned by selection-conversion function", |
ae7908422c59
(x_get_local_selection): Use signal_error.
Kim F. Storm <storm@cua.dk>
parents:
70988
diff
changeset
|
577 list2 (handler_fn, value)); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
578 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
579 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
580 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
581 /* Clear all selections that were made from frame F. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
582 We do this when about to delete a frame. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
583 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
584 void |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
585 x_clear_frame_selections (f) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
586 FRAME_PTR f; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
587 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
588 Lisp_Object frame; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
589 Lisp_Object rest; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
590 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
591 XSETFRAME (frame, f); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
592 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
593 /* Otherwise, we're really honest and truly being told to drop it. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
594 Don't use Fdelq as that may QUIT;. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
595 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
596 /* Delete elements from the beginning of Vselection_alist. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
597 while (!NILP (Vselection_alist) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
598 && EQ (frame, Fcar (Fcdr (Fcdr (Fcdr (Fcar (Vselection_alist))))))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
599 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
600 /* Let random Lisp code notice that the selection has been stolen. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
601 Lisp_Object hooks, selection_symbol; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
602 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
603 hooks = Vx_lost_selection_functions; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
604 selection_symbol = Fcar (Fcar (Vselection_alist)); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
605 |
62102
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
606 if (!EQ (hooks, Qunbound) |
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
607 && !NILP (Fx_selection_owner_p (selection_symbol))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
608 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
609 for (; CONSP (hooks); hooks = Fcdr (hooks)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
610 call1 (Fcar (hooks), selection_symbol); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
611 #if 0 /* This can crash when deleting a frame |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
612 from x_connection_closed. Anyway, it seems unnecessary; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
613 something else should cause a redisplay. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
614 redisplay_preserve_echo_area (21); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
615 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
616 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
617 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
618 Vselection_alist = Fcdr (Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
619 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
620 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
621 /* Delete elements after the beginning of Vselection_alist. */ |
85372
f7d19cfed7da
* xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
82290
diff
changeset
|
622 for (rest = Vselection_alist; CONSP (rest); rest = XCDR (rest)) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
623 if (EQ (frame, Fcar (Fcdr (Fcdr (Fcdr (Fcar (XCDR (rest)))))))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
624 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
625 /* Let random Lisp code notice that the selection has been stolen. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
626 Lisp_Object hooks, selection_symbol; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
627 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
628 hooks = Vx_lost_selection_functions; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
629 selection_symbol = Fcar (Fcar (XCDR (rest))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
630 |
62102
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
631 if (!EQ (hooks, Qunbound) |
b710f3bc2da3
(x_own_selection): Accept Lisp string as result of
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61819
diff
changeset
|
632 && !NILP (Fx_selection_owner_p (selection_symbol))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
633 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
634 for (; CONSP (hooks); hooks = Fcdr (hooks)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
635 call1 (Fcar (hooks), selection_symbol); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
636 #if 0 /* See above */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
637 redisplay_preserve_echo_area (22); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
638 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
639 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
640 XSETCDR (rest, Fcdr (XCDR (rest))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
641 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
642 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
643 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
644 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
645 /* Do protocol to read selection-data from the server. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
646 Converts this to Lisp data and returns it. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
647 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
648 static Lisp_Object |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
649 x_get_foreign_selection (selection_symbol, target_type, time_stamp) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
650 Lisp_Object selection_symbol, target_type, time_stamp; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
651 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
652 OSStatus err; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
653 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
654 Lisp_Object result = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
655 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
656 BLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
657 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
658 err = mac_get_selection_from_symbol (selection_symbol, 0, &sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
659 if (err == noErr && sel) |
69963
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
660 { |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
661 if (EQ (target_type, QTARGETS)) |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
662 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
663 result = mac_get_selection_target_list (sel); |
69963
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
664 result = Fvconcat (1, &result); |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
665 } |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
666 else |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
667 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
668 result = mac_get_selection_value (sel, target_type); |
69963
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
669 if (STRINGP (result)) |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
670 Fput_text_property (make_number (0), make_number (SBYTES (result)), |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
671 Qforeign_selection, target_type, result); |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
672 } |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
673 } |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
674 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
675 UNBLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
676 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
677 return result; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
678 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
679 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
680 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
681 DEFUN ("x-own-selection-internal", Fx_own_selection_internal, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
682 Sx_own_selection_internal, 2, 2, 0, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
683 doc: /* Assert a selection of the given TYPE with the given VALUE. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
684 TYPE is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
685 VALUE is typically a string, or a cons of two markers, but may be |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
686 anything that the functions on `selection-converter-alist' know about. */) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
687 (selection_name, selection_value) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
688 Lisp_Object selection_name, selection_value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
689 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
690 check_mac (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
691 CHECK_SYMBOL (selection_name); |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
692 if (NILP (selection_value)) error ("SELECTION-VALUE may not be nil"); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
693 x_own_selection (selection_name, selection_value); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
694 return selection_value; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
695 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
696 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
697 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
698 /* Request the selection value from the owner. If we are the owner, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
699 simply return our selection value. If we are not the owner, this |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
700 will block until all of the data has arrived. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
701 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
702 DEFUN ("x-get-selection-internal", Fx_get_selection_internal, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
703 Sx_get_selection_internal, 2, 3, 0, |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
704 doc: /* Return text selected from some Mac application. |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
705 SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
706 TYPE is the type of data desired, typically `STRING'. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
707 TIME_STAMP is ignored on Mac. */) |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
708 (selection_symbol, target_type, time_stamp) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
709 Lisp_Object selection_symbol, target_type, time_stamp; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
710 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
711 Lisp_Object val = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
712 struct gcpro gcpro1, gcpro2; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
713 GCPRO2 (target_type, val); /* we store newly consed data into these */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
714 check_mac (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
715 CHECK_SYMBOL (selection_symbol); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
716 CHECK_SYMBOL (target_type); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
717 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
718 val = x_get_local_selection (selection_symbol, target_type, 1); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
719 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
720 if (NILP (val)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
721 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
722 val = x_get_foreign_selection (selection_symbol, target_type, time_stamp); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
723 goto DONE; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
724 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
725 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
726 if (CONSP (val) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
727 && SYMBOLP (XCAR (val))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
728 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
729 val = XCDR (val); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
730 if (CONSP (val) && NILP (XCDR (val))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
731 val = XCAR (val); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
732 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
733 DONE: |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
734 UNGCPRO; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
735 return val; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
736 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
737 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
738 DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
739 Sx_disown_selection_internal, 1, 2, 0, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
740 doc: /* If we own the selection SELECTION, disown it. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
741 Disowning it means there is no such selection. */) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
742 (selection, time) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
743 Lisp_Object selection; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
744 Lisp_Object time; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
745 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
746 OSStatus err; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
747 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
748 Lisp_Object local_selection_data; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
749 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
750 check_mac (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
751 CHECK_SYMBOL (selection); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
752 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
753 if (NILP (Fx_selection_owner_p (selection))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
754 return Qnil; /* Don't disown the selection when we're not the owner. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
755 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
756 local_selection_data = assq_no_quit (selection, Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
757 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
758 /* Don't use Fdelq as that may QUIT;. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
759 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
760 if (EQ (local_selection_data, Fcar (Vselection_alist))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
761 Vselection_alist = Fcdr (Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
762 else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
763 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
764 Lisp_Object rest; |
85372
f7d19cfed7da
* xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
82290
diff
changeset
|
765 for (rest = Vselection_alist; CONSP (rest); rest = XCDR (rest)) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
766 if (EQ (local_selection_data, Fcar (XCDR (rest)))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
767 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
768 XSETCDR (rest, Fcdr (XCDR (rest))); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
769 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
770 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
771 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
772 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
773 /* Let random lisp code notice that the selection has been stolen. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
774 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
775 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
776 Lisp_Object rest; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
777 rest = Vx_lost_selection_functions; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
778 if (!EQ (rest, Qunbound)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
779 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
780 for (; CONSP (rest); rest = Fcdr (rest)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
781 call1 (Fcar (rest), selection); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
782 prepare_menu_bars (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
783 redisplay_preserve_echo_area (20); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
784 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
785 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
786 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
787 BLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
788 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
789 err = mac_get_selection_from_symbol (selection, 0, &sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
790 if (err == noErr && sel) |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
791 mac_clear_selection (&sel); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
792 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
793 UNBLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
794 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
795 return Qt; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
796 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
797 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
798 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
799 DEFUN ("x-selection-owner-p", Fx_selection_owner_p, Sx_selection_owner_p, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
800 0, 1, 0, |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
801 doc: /* Whether the current Emacs process owns the given SELECTION. |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
802 The arg should be the name of the selection in question, typically one of |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
803 the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
804 For convenience, the symbol nil is the same as `PRIMARY', |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
805 and t is the same as `SECONDARY'. */) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
806 (selection) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
807 Lisp_Object selection; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
808 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
809 OSStatus err; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
810 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
811 Lisp_Object result = Qnil, local_selection_data; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
812 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
813 check_mac (); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
814 CHECK_SYMBOL (selection); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
815 if (EQ (selection, Qnil)) selection = QPRIMARY; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
816 if (EQ (selection, Qt)) selection = QSECONDARY; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
817 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
818 local_selection_data = assq_no_quit (selection, Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
819 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
820 if (NILP (local_selection_data)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
821 return Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
822 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
823 BLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
824 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
825 err = mac_get_selection_from_symbol (selection, 0, &sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
826 if (err == noErr && sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
827 { |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
828 Lisp_Object ownership_info; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
829 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
830 ownership_info = XCAR (XCDR (XCDR (XCDR (XCDR (local_selection_data))))); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
831 if (!NILP (Fequal (ownership_info, |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
832 mac_get_selection_ownership_info (sel)))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
833 result = Qt; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
834 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
835 else |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
836 result = Qt; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
837 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
838 UNBLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
839 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
840 return result; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
841 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
842 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
843 DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
844 0, 1, 0, |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
845 doc: /* Whether there is an owner for the given SELECTION. |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
846 The arg should be the name of the selection in question, typically one of |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
847 the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
848 For convenience, the symbol nil is the same as `PRIMARY', |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
849 and t is the same as `SECONDARY'. */) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
850 (selection) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
851 Lisp_Object selection; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
852 { |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
853 OSStatus err; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
854 Selection sel; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
855 Lisp_Object result = Qnil, rest; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
856 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
857 /* It should be safe to call this before we have an Mac frame. */ |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
858 if (! FRAME_MAC_P (SELECTED_FRAME ())) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
859 return Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
860 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
861 CHECK_SYMBOL (selection); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
862 if (!NILP (Fx_selection_owner_p (selection))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
863 return Qt; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
864 if (EQ (selection, Qnil)) selection = QPRIMARY; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
865 if (EQ (selection, Qt)) selection = QSECONDARY; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
866 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
867 BLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
868 |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
869 err = mac_get_selection_from_symbol (selection, 0, &sel); |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
870 if (err == noErr && sel) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
871 for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
872 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
873 if (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest))) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
874 && mac_selection_has_target_p (sel, XCAR (XCAR (rest)))) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
875 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
876 result = Qt; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
877 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
878 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
879 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
880 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
881 UNBLOCK_INPUT; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
882 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
883 return result; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
884 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
885 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
886 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
887 /*********************************************************************** |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
888 Apple event support |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
889 ***********************************************************************/ |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
890 int mac_ready_for_apple_events = 0; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
891 static Lisp_Object Vmac_apple_event_map; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
892 static Lisp_Object Qmac_apple_event_class, Qmac_apple_event_id; |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
893 static Lisp_Object Qemacs_suspension_id; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
894 extern Lisp_Object Qundefined; |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
895 extern void mac_store_apple_event P_ ((Lisp_Object, Lisp_Object, |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
896 const AEDesc *)); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
897 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
898 struct apple_event_binding |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
899 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
900 UInt32 code; /* Apple event class or ID. */ |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
901 Lisp_Object key, binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
902 }; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
903 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
904 struct suspended_ae_info |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
905 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
906 UInt32 expiration_tick, suspension_id; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
907 AppleEvent apple_event, reply; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
908 struct suspended_ae_info *next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
909 }; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
910 |
72544
f8ade754466c
(get_scrap_from_symbol, clear_scrap, put_scrap_string)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71985
diff
changeset
|
911 /* List of apple events deferred at the startup time. */ |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
912 static struct suspended_ae_info *deferred_apple_events = NULL; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
913 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
914 /* List of suspended apple events, in order of expiration_tick. */ |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
915 static struct suspended_ae_info *suspended_apple_events = NULL; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
916 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
917 static void |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
918 find_event_binding_fun (key, binding, args, data) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
919 Lisp_Object key, binding, args; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
920 void *data; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
921 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
922 struct apple_event_binding *event_binding = |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
923 (struct apple_event_binding *)data; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
924 Lisp_Object code_string; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
925 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
926 if (!SYMBOLP (key)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
927 return; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
928 code_string = Fget (key, args); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
929 if (STRINGP (code_string) && SBYTES (code_string) == 4 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
930 && (EndianU32_BtoN (*((UInt32 *) SDATA (code_string))) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
931 == event_binding->code)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
932 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
933 event_binding->key = key; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
934 event_binding->binding = binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
935 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
936 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
937 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
938 static void |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
939 find_event_binding (keymap, event_binding, class_p) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
940 Lisp_Object keymap; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
941 struct apple_event_binding *event_binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
942 int class_p; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
943 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
944 if (event_binding->code == 0) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
945 event_binding->binding = |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
946 access_keymap (keymap, event_binding->key, 0, 1, 0); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
947 else |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
948 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
949 event_binding->binding = Qnil; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
950 map_keymap (keymap, find_event_binding_fun, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
951 class_p ? Qmac_apple_event_class : Qmac_apple_event_id, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
952 event_binding, 0); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
953 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
954 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
955 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
956 void |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
957 mac_find_apple_event_spec (class, id, class_key, id_key, binding) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
958 AEEventClass class; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
959 AEEventID id; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
960 Lisp_Object *class_key, *id_key, *binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
961 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
962 struct apple_event_binding event_binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
963 Lisp_Object keymap; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
964 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
965 *binding = Qnil; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
966 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
967 keymap = get_keymap (Vmac_apple_event_map, 0, 0); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
968 if (NILP (keymap)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
969 return; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
970 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
971 event_binding.code = class; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
972 event_binding.key = *class_key; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
973 event_binding.binding = Qnil; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
974 find_event_binding (keymap, &event_binding, 1); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
975 *class_key = event_binding.key; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
976 keymap = get_keymap (event_binding.binding, 0, 0); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
977 if (NILP (keymap)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
978 return; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
979 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
980 event_binding.code = id; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
981 event_binding.key = *id_key; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
982 event_binding.binding = Qnil; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
983 find_event_binding (keymap, &event_binding, 0); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
984 *id_key = event_binding.key; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
985 *binding = event_binding.binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
986 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
987 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
988 static OSErr |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
989 defer_apple_events (apple_event, reply) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
990 const AppleEvent *apple_event, *reply; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
991 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
992 OSErr err; |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
993 struct suspended_ae_info *new; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
994 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
995 new = xmalloc (sizeof (struct suspended_ae_info)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
996 bzero (new, sizeof (struct suspended_ae_info)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
997 new->apple_event.descriptorType = typeNull; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
998 new->reply.descriptorType = typeNull; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
999 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1000 err = AESuspendTheCurrentEvent (apple_event); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1001 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1002 /* Mac OS 10.3 Xcode manual says AESuspendTheCurrentEvent makes |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1003 copies of the Apple event and the reply, but Mac OS 10.4 Xcode |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1004 manual says it doesn't. Anyway we create copies of them and save |
69963
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1005 them in `deferred_apple_events'. */ |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1006 if (err == noErr) |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1007 err = AEDuplicateDesc (apple_event, &new->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1008 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1009 err = AEDuplicateDesc (reply, &new->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1010 if (err == noErr) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1011 { |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1012 new->next = deferred_apple_events; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1013 deferred_apple_events = new; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1014 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1015 else |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1016 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1017 AEDisposeDesc (&new->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1018 AEDisposeDesc (&new->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1019 xfree (new); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1020 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1021 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1022 return err; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1023 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1024 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1025 static OSErr |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1026 mac_handle_apple_event_1 (class, id, apple_event, reply) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1027 Lisp_Object class, id; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1028 const AppleEvent *apple_event; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1029 AppleEvent *reply; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1030 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1031 OSErr err; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1032 static UInt32 suspension_id = 0; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1033 struct suspended_ae_info *new; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1034 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1035 new = xmalloc (sizeof (struct suspended_ae_info)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1036 bzero (new, sizeof (struct suspended_ae_info)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1037 new->apple_event.descriptorType = typeNull; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1038 new->reply.descriptorType = typeNull; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1039 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1040 err = AESuspendTheCurrentEvent (apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1041 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1042 err = AEDuplicateDesc (apple_event, &new->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1043 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1044 err = AEDuplicateDesc (reply, &new->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1045 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1046 err = AEPutAttributePtr (&new->apple_event, KEY_EMACS_SUSPENSION_ID_ATTR, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1047 typeUInt32, &suspension_id, sizeof (UInt32)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1048 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1049 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1050 OSErr err1; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1051 SInt32 reply_requested; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1052 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1053 err1 = AEGetAttributePtr (&new->apple_event, keyReplyRequestedAttr, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1054 typeSInt32, NULL, &reply_requested, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1055 sizeof (SInt32), NULL); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1056 if (err1 != noErr) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1057 { |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1058 /* Emulate keyReplyRequestedAttr in older versions. */ |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1059 reply_requested = reply->descriptorType != typeNull; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1060 err = AEPutAttributePtr (&new->apple_event, keyReplyRequestedAttr, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1061 typeSInt32, &reply_requested, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1062 sizeof (SInt32)); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1063 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1064 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1065 if (err == noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1066 { |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1067 SInt32 timeout = 0; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1068 struct suspended_ae_info **p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1069 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1070 new->suspension_id = suspension_id; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1071 suspension_id++; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1072 err = AEGetAttributePtr (apple_event, keyTimeoutAttr, typeSInt32, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1073 NULL, &timeout, sizeof (SInt32), NULL); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1074 new->expiration_tick = TickCount () + timeout; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1075 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1076 for (p = &suspended_apple_events; *p; p = &(*p)->next) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1077 if ((*p)->expiration_tick >= new->expiration_tick) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1078 break; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1079 new->next = *p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1080 *p = new; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1081 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1082 mac_store_apple_event (class, id, &new->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1083 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1084 else |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1085 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1086 AEDisposeDesc (&new->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1087 AEDisposeDesc (&new->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1088 xfree (new); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1089 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1090 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1091 return err; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1092 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1093 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1094 static pascal OSErr |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1095 mac_handle_apple_event (apple_event, reply, refcon) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1096 const AppleEvent *apple_event; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1097 AppleEvent *reply; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1098 SInt32 refcon; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1099 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1100 OSErr err; |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1101 UInt32 suspension_id; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1102 AEEventClass event_class; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1103 AEEventID event_id; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1104 Lisp_Object class_key, id_key, binding; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1105 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1106 if (!mac_ready_for_apple_events) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1107 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1108 err = defer_apple_events (apple_event, reply); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1109 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1110 return errAEEventNotHandled; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1111 return noErr; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1112 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1113 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1114 err = AEGetAttributePtr (apple_event, KEY_EMACS_SUSPENSION_ID_ATTR, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1115 typeUInt32, NULL, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1116 &suspension_id, sizeof (UInt32), NULL); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1117 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1118 /* Previously suspended event. Pass it to the next handler. */ |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1119 return errAEEventNotHandled; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1120 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1121 err = AEGetAttributePtr (apple_event, keyEventClassAttr, typeType, NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1122 &event_class, sizeof (AEEventClass), NULL); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1123 if (err == noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1124 err = AEGetAttributePtr (apple_event, keyEventIDAttr, typeType, NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1125 &event_id, sizeof (AEEventID), NULL); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1126 if (err == noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1127 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1128 mac_find_apple_event_spec (event_class, event_id, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1129 &class_key, &id_key, &binding); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1130 if (!NILP (binding) && !EQ (binding, Qundefined)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1131 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1132 if (INTEGERP (binding)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1133 return XINT (binding); |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1134 err = mac_handle_apple_event_1 (class_key, id_key, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1135 apple_event, reply); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1136 } |
70988
5605e49b641f
(mac_handle_apple_event): Return
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70873
diff
changeset
|
1137 else |
5605e49b641f
(mac_handle_apple_event): Return
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70873
diff
changeset
|
1138 err = errAEEventNotHandled; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1139 } |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1140 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1141 return noErr; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1142 else |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1143 return errAEEventNotHandled; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1144 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1145 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1146 static int |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1147 cleanup_suspended_apple_events (head, all_p) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1148 struct suspended_ae_info **head; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1149 int all_p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1150 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1151 UInt32 current_tick = TickCount (), nresumed = 0; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1152 struct suspended_ae_info *p, *next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1153 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1154 for (p = *head; p; p = next) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1155 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1156 if (!all_p && p->expiration_tick > current_tick) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1157 break; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1158 AESetTheCurrentEvent (&p->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1159 AEResumeTheCurrentEvent (&p->apple_event, &p->reply, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1160 (AEEventHandlerUPP) kAENoDispatch, 0); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1161 AEDisposeDesc (&p->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1162 AEDisposeDesc (&p->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1163 nresumed++; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1164 next = p->next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1165 xfree (p); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1166 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1167 *head = p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1168 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1169 return nresumed; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1170 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1171 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1172 static void |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1173 cleanup_all_suspended_apple_events () |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1174 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1175 cleanup_suspended_apple_events (&deferred_apple_events, 1); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1176 cleanup_suspended_apple_events (&suspended_apple_events, 1); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1177 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1178 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1179 void |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1180 init_apple_event_handler () |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1181 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1182 OSErr err; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1183 long result; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1184 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1185 /* Make sure we have Apple events before starting. */ |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1186 err = Gestalt (gestaltAppleEventsAttr, &result); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1187 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1188 abort (); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1189 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1190 if (!(result & (1 << gestaltAppleEventsPresent))) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1191 abort (); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1192 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1193 err = AEInstallEventHandler (typeWildCard, typeWildCard, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1194 #if TARGET_API_MAC_CARBON |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1195 NewAEEventHandlerUPP (mac_handle_apple_event), |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1196 #else |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1197 NewAEEventHandlerProc (mac_handle_apple_event), |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1198 #endif |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1199 0L, false); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1200 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1201 abort (); |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1202 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1203 atexit (cleanup_all_suspended_apple_events); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1204 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1205 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1206 static UInt32 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1207 get_suspension_id (apple_event) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1208 Lisp_Object apple_event; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1209 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1210 Lisp_Object tem; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1211 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1212 CHECK_CONS (apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1213 CHECK_STRING_CAR (apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1214 if (SBYTES (XCAR (apple_event)) != 4 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1215 || strcmp (SDATA (XCAR (apple_event)), "aevt") != 0) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1216 error ("Not an apple event"); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1217 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1218 tem = assq_no_quit (Qemacs_suspension_id, XCDR (apple_event)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1219 if (NILP (tem)) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1220 error ("Suspension ID not available"); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1221 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1222 tem = XCDR (tem); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1223 if (!(CONSP (tem) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1224 && STRINGP (XCAR (tem)) && SBYTES (XCAR (tem)) == 4 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1225 && strcmp (SDATA (XCAR (tem)), "magn") == 0 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1226 && STRINGP (XCDR (tem)) && SBYTES (XCDR (tem)) == 4)) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1227 error ("Bad suspension ID format"); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1228 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1229 return *((UInt32 *) SDATA (XCDR (tem))); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1230 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1231 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1232 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1233 DEFUN ("mac-process-deferred-apple-events", Fmac_process_deferred_apple_events, Smac_process_deferred_apple_events, 0, 0, 0, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1234 doc: /* Process Apple events that are deferred at the startup time. */) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1235 () |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1236 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1237 if (mac_ready_for_apple_events) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1238 return Qnil; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1239 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1240 BLOCK_INPUT; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1241 mac_ready_for_apple_events = 1; |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1242 if (deferred_apple_events) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1243 { |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1244 struct suspended_ae_info *prev, *tail, *next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1245 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1246 /* `nreverse' deferred_apple_events. */ |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1247 prev = NULL; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1248 for (tail = deferred_apple_events; tail; tail = next) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1249 { |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1250 next = tail->next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1251 tail->next = prev; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1252 prev = tail; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1253 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1254 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1255 /* Now `prev' points to the first cell. */ |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1256 for (tail = prev; tail; tail = next) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1257 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1258 next = tail->next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1259 AEResumeTheCurrentEvent (&tail->apple_event, &tail->reply, |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1260 ((AEEventHandlerUPP) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1261 kAEUseStandardDispatch), 0); |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1262 AEDisposeDesc (&tail->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1263 AEDisposeDesc (&tail->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1264 xfree (tail); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1265 } |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1266 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1267 deferred_apple_events = NULL; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1268 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1269 UNBLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1270 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1271 return Qt; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1272 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1273 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1274 DEFUN ("mac-cleanup-expired-apple-events", Fmac_cleanup_expired_apple_events, Smac_cleanup_expired_apple_events, 0, 0, 0, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1275 doc: /* Clean up expired Apple events. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1276 Return the number of expired events. */) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1277 () |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1278 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1279 int nexpired; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1280 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1281 BLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1282 nexpired = cleanup_suspended_apple_events (&suspended_apple_events, 0); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1283 UNBLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1284 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1285 return make_number (nexpired); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1286 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1287 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1288 DEFUN ("mac-ae-set-reply-parameter", Fmac_ae_set_reply_parameter, Smac_ae_set_reply_parameter, 3, 3, 0, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1289 doc: /* Set parameter KEYWORD to DESCRIPTOR on reply of APPLE-EVENT. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1290 KEYWORD is a 4-byte string. DESCRIPTOR is a Lisp representation of an |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1291 Apple event descriptor. It has the form of (TYPE . DATA), where TYPE |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1292 is a 4-byte string. Valid format of DATA is as follows: |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1293 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1294 * If TYPE is "null", then DATA is nil. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1295 * If TYPE is "list", then DATA is a list (DESCRIPTOR1 ... DESCRIPTORn). |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1296 * If TYPE is "reco", then DATA is a list ((KEYWORD1 . DESCRIPTOR1) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1297 ... (KEYWORDn . DESCRIPTORn)). |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1298 * If TYPE is "aevt", then DATA is ignored and the descriptor is |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1299 treated as null. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1300 * Otherwise, DATA is a string. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1301 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1302 If a (sub-)descriptor is in an invalid format, it is silently treated |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1303 as null. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1304 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1305 Return t if the parameter is successfully set. Otherwise return nil. */) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1306 (apple_event, keyword, descriptor) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1307 Lisp_Object apple_event, keyword, descriptor; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1308 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1309 Lisp_Object result = Qnil; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1310 UInt32 suspension_id; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1311 struct suspended_ae_info *p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1312 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1313 suspension_id = get_suspension_id (apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1314 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1315 CHECK_STRING (keyword); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1316 if (SBYTES (keyword) != 4) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1317 error ("Apple event keyword must be a 4-byte string: %s", |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1318 SDATA (keyword)); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1319 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1320 BLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1321 for (p = suspended_apple_events; p; p = p->next) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1322 if (p->suspension_id == suspension_id) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1323 break; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1324 if (p && p->reply.descriptorType != typeNull) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1325 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1326 OSErr err; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1327 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1328 err = mac_ae_put_lisp (&p->reply, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1329 EndianU32_BtoN (*((UInt32 *) SDATA (keyword))), |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1330 descriptor); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1331 if (err == noErr) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1332 result = Qt; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1333 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1334 UNBLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1335 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1336 return result; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1337 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1338 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1339 DEFUN ("mac-resume-apple-event", Fmac_resume_apple_event, Smac_resume_apple_event, 1, 2, 0, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1340 doc: /* Resume handling of APPLE-EVENT. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1341 Every Apple event handled by the Lisp interpreter is suspended first. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1342 This function resumes such a suspended event either to complete Apple |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1343 event handling to give a reply, or to redispatch it to other handlers. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1344 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1345 If optional ERROR-CODE is an integer, it specifies the error number |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1346 that is set in the reply. If ERROR-CODE is t, the resumed event is |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1347 handled with the standard dispatching mechanism, but it is not handled |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1348 by Emacs again, thus it is redispatched to other handlers. |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1349 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1350 Return t if APPLE-EVENT is successfully resumed. Otherwise return |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1351 nil, which means the event is already resumed or expired. */) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1352 (apple_event, error_code) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1353 Lisp_Object apple_event, error_code; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1354 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1355 Lisp_Object result = Qnil; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1356 UInt32 suspension_id; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1357 struct suspended_ae_info **p, *ae; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1358 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1359 suspension_id = get_suspension_id (apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1360 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1361 BLOCK_INPUT; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1362 for (p = &suspended_apple_events; *p; p = &(*p)->next) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1363 if ((*p)->suspension_id == suspension_id) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1364 break; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1365 if (*p) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1366 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1367 ae = *p; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1368 *p = (*p)->next; |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1369 if (INTEGERP (error_code) |
75240
ffa0f75caa03
(Fmac_resume_apple_event): Set error number when
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74628
diff
changeset
|
1370 && ae->reply.descriptorType != typeNull) |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1371 { |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1372 SInt32 errn = XINT (error_code); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1373 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1374 AEPutParamPtr (&ae->reply, keyErrorNumber, typeSInt32, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1375 &errn, sizeof (SInt32)); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1376 } |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1377 AESetTheCurrentEvent (&ae->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1378 AEResumeTheCurrentEvent (&ae->apple_event, &ae->reply, |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1379 ((AEEventHandlerUPP) |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1380 (EQ (error_code, Qt) ? |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1381 kAEUseStandardDispatch : kAENoDispatch)), |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1382 0); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1383 AEDisposeDesc (&ae->reply); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1384 AEDisposeDesc (&ae->apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1385 xfree (ae); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1386 result = Qt; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1387 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1388 UNBLOCK_INPUT; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1389 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1390 return result; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1391 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1392 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1393 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1394 /*********************************************************************** |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1395 Drag and drop support |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1396 ***********************************************************************/ |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1397 #if TARGET_API_MAC_CARBON |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1398 static Lisp_Object Vmac_dnd_known_types; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1399 static pascal OSErr mac_do_track_drag P_ ((DragTrackingMessage, WindowRef, |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1400 void *, DragRef)); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1401 static pascal OSErr mac_do_receive_drag P_ ((WindowRef, void *, DragRef)); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1402 static DragTrackingHandlerUPP mac_do_track_dragUPP = NULL; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1403 static DragReceiveHandlerUPP mac_do_receive_dragUPP = NULL; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1404 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1405 extern void mac_store_drag_event P_ ((WindowRef, Point, SInt16, |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1406 const AEDesc *)); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1407 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1408 static pascal OSErr |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1409 mac_do_track_drag (message, window, refcon, drag) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1410 DragTrackingMessage message; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1411 WindowRef window; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1412 void *refcon; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1413 DragRef drag; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1414 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1415 OSErr err = noErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1416 static int can_accept; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1417 UInt16 num_items, index; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1418 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1419 if (GetFrontWindowOfClass (kMovableModalWindowClass, false)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1420 return dragNotAcceptedErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1421 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1422 switch (message) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1423 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1424 case kDragTrackingEnterHandler: |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1425 err = CountDragItems (drag, &num_items); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1426 if (err != noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1427 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1428 can_accept = 0; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1429 for (index = 1; index <= num_items; index++) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1430 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1431 ItemReference item; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1432 FlavorFlags flags; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1433 Lisp_Object rest; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1434 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1435 err = GetDragItemReferenceNumber (drag, index, &item); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1436 if (err != noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1437 continue; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1438 for (rest = Vmac_dnd_known_types; CONSP (rest); rest = XCDR (rest)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1439 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1440 Lisp_Object str; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1441 FlavorType type; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1442 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1443 str = XCAR (rest); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1444 if (!(STRINGP (str) && SBYTES (str) == 4)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1445 continue; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1446 type = EndianU32_BtoN (*((UInt32 *) SDATA (str))); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1447 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1448 err = GetFlavorFlags (drag, item, type, &flags); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1449 if (err == noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1450 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1451 can_accept = 1; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1452 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1453 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1454 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1455 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1456 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1457 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1458 case kDragTrackingEnterWindow: |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1459 if (can_accept) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1460 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1461 RgnHandle hilite_rgn = NewRgn (); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1462 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1463 if (hilite_rgn) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1464 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1465 Rect r; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1466 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1467 GetWindowPortBounds (window, &r); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1468 OffsetRect (&r, -r.left, -r.top); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1469 RectRgn (hilite_rgn, &r); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1470 ShowDragHilite (drag, hilite_rgn, true); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1471 DisposeRgn (hilite_rgn); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1472 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1473 SetThemeCursor (kThemeCopyArrowCursor); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1474 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1475 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1476 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1477 case kDragTrackingInWindow: |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1478 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1479 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1480 case kDragTrackingLeaveWindow: |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1481 if (can_accept) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1482 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1483 HideDragHilite (drag); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1484 SetThemeCursor (kThemeArrowCursor); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1485 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1486 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1487 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1488 case kDragTrackingLeaveHandler: |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1489 break; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1490 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1491 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1492 if (err != noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1493 return dragNotAcceptedErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1494 return noErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1495 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1496 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1497 static pascal OSErr |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1498 mac_do_receive_drag (window, refcon, drag) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1499 WindowRef window; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1500 void *refcon; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1501 DragRef drag; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1502 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1503 OSErr err; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1504 int num_types, i; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1505 Lisp_Object rest, str; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1506 FlavorType *types; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1507 AppleEvent apple_event; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1508 Point mouse_pos; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1509 SInt16 modifiers; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1510 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1511 if (GetFrontWindowOfClass (kMovableModalWindowClass, false)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1512 return dragNotAcceptedErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1513 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1514 num_types = 0; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1515 for (rest = Vmac_dnd_known_types; CONSP (rest); rest = XCDR (rest)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1516 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1517 str = XCAR (rest); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1518 if (STRINGP (str) && SBYTES (str) == 4) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1519 num_types++; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1520 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1521 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1522 types = xmalloc (sizeof (FlavorType) * num_types); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1523 i = 0; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1524 for (rest = Vmac_dnd_known_types; CONSP (rest); rest = XCDR (rest)) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1525 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1526 str = XCAR (rest); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1527 if (STRINGP (str) && SBYTES (str) == 4) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1528 types[i++] = EndianU32_BtoN (*((UInt32 *) SDATA (str))); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1529 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1530 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1531 err = create_apple_event_from_drag_ref (drag, num_types, types, |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1532 &apple_event); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1533 xfree (types); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1534 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1535 if (err == noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1536 err = GetDragMouse (drag, &mouse_pos, NULL); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1537 if (err == noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1538 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1539 GlobalToLocal (&mouse_pos); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1540 err = GetDragModifiers (drag, NULL, NULL, &modifiers); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1541 } |
75376
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1542 if (err == noErr) |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1543 { |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1544 UInt32 key_modifiers = modifiers; |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1545 |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1546 err = AEPutParamPtr (&apple_event, kEventParamKeyModifiers, |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1547 typeUInt32, &key_modifiers, sizeof (UInt32)); |
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1548 } |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1549 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1550 if (err == noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1551 { |
75376
7b70538ea11c
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1552 mac_store_drag_event (window, mouse_pos, 0, &apple_event); |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1553 AEDisposeDesc (&apple_event); |
74628
6f17f4d8d9d6
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73574
diff
changeset
|
1554 mac_wakeup_from_rne (); |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1555 return noErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1556 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1557 else |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1558 return dragNotAcceptedErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1559 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1560 #endif /* TARGET_API_MAC_CARBON */ |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1561 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1562 OSErr |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1563 install_drag_handler (window) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1564 WindowRef window; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1565 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1566 OSErr err = noErr; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1567 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1568 #if TARGET_API_MAC_CARBON |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1569 if (mac_do_track_dragUPP == NULL) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1570 mac_do_track_dragUPP = NewDragTrackingHandlerUPP (mac_do_track_drag); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1571 if (mac_do_receive_dragUPP == NULL) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1572 mac_do_receive_dragUPP = NewDragReceiveHandlerUPP (mac_do_receive_drag); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1573 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1574 err = InstallTrackingHandler (mac_do_track_dragUPP, window, NULL); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1575 if (err == noErr) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1576 err = InstallReceiveHandler (mac_do_receive_dragUPP, window, NULL); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1577 #endif |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1578 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1579 return err; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1580 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1581 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1582 void |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1583 remove_drag_handler (window) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1584 WindowRef window; |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1585 { |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1586 #if TARGET_API_MAC_CARBON |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1587 if (mac_do_track_dragUPP) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1588 RemoveTrackingHandler (mac_do_track_dragUPP, window); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1589 if (mac_do_receive_dragUPP) |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1590 RemoveReceiveHandler (mac_do_receive_dragUPP, window); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1591 #endif |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1592 } |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1593 |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1594 |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1595 /*********************************************************************** |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1596 Services menu support |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1597 ***********************************************************************/ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1598 #ifdef MAC_OSX |
81241
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1599 OSStatus |
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1600 install_service_handler () |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1601 { |
73574
848513456fe7
(init_service_handler): Make variable `specs' static
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72544
diff
changeset
|
1602 static const EventTypeSpec specs[] = |
848513456fe7
(init_service_handler): Make variable `specs' static
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72544
diff
changeset
|
1603 {{kEventClassService, kEventServiceGetTypes}, |
848513456fe7
(init_service_handler): Make variable `specs' static
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72544
diff
changeset
|
1604 {kEventClassService, kEventServiceCopy}, |
848513456fe7
(init_service_handler): Make variable `specs' static
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72544
diff
changeset
|
1605 {kEventClassService, kEventServicePaste}, |
848513456fe7
(init_service_handler): Make variable `specs' static
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72544
diff
changeset
|
1606 {kEventClassService, kEventServicePerform}}; |
81241
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1607 |
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1608 return InstallApplicationEventHandler (NewEventHandlerUPP |
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1609 (mac_handle_service_event), |
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1610 GetEventTypeCount (specs), |
b453bc0cb471
[MAC_OSX] (install_service_handler): Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
76745
diff
changeset
|
1611 specs, NULL, NULL); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1612 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1613 |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1614 extern OSStatus mac_store_service_event P_ ((EventRef)); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1615 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1616 static OSStatus |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1617 copy_scrap_flavor_data (from_scrap, to_scrap, flavor_type) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1618 ScrapRef from_scrap, to_scrap; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1619 ScrapFlavorType flavor_type; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1620 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1621 OSStatus err; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1622 Size size, size_allocated; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1623 char *buf = NULL; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1624 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1625 err = GetScrapFlavorSize (from_scrap, flavor_type, &size); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1626 if (err == noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1627 buf = xmalloc (size); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1628 while (buf) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1629 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1630 size_allocated = size; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1631 err = GetScrapFlavorData (from_scrap, flavor_type, &size, buf); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1632 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1633 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1634 xfree (buf); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1635 buf = NULL; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1636 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1637 else if (size_allocated < size) |
70070
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
1638 buf = xrealloc (buf, size); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1639 else |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1640 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1641 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1642 if (err == noErr) |
69963
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1643 { |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1644 if (buf == NULL) |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1645 err = memFullErr; |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1646 else |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1647 { |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1648 err = PutScrapFlavor (to_scrap, flavor_type, kScrapFlavorMaskNone, |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1649 size, buf); |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1650 xfree (buf); |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1651 } |
b25e279aa874
(get_flavor_type_from_symbol): Remove unused variable `val'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67489
diff
changeset
|
1652 } |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1653 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1654 return err; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1655 } |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1656 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1657 static OSStatus |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1658 mac_handle_service_event (call_ref, event, data) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1659 EventHandlerCallRef call_ref; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1660 EventRef event; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1661 void *data; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1662 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1663 OSStatus err = noErr; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1664 ScrapRef cur_scrap, specific_scrap; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1665 UInt32 event_kind = GetEventKind (event); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1666 CFMutableArrayRef copy_types, paste_types; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1667 CFStringRef type; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1668 Lisp_Object rest; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1669 ScrapFlavorType flavor_type; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1670 |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1671 /* Check if Vmac_service_selection is a valid selection that has a |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1672 corresponding scrap. */ |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1673 if (!SYMBOLP (Vmac_service_selection)) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1674 err = eventNotHandledErr; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1675 else |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
1676 err = mac_get_selection_from_symbol (Vmac_service_selection, 0, &cur_scrap); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1677 if (!(err == noErr && cur_scrap)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1678 return eventNotHandledErr; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1679 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1680 switch (event_kind) |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1681 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1682 case kEventServiceGetTypes: |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1683 /* Set paste types. */ |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1684 err = GetEventParameter (event, kEventParamServicePasteTypes, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1685 typeCFMutableArrayRef, NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1686 sizeof (CFMutableArrayRef), NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1687 &paste_types); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1688 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1689 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1690 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1691 for (rest = Vselection_converter_alist; CONSP (rest); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1692 rest = XCDR (rest)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1693 if (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest))) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1694 && (flavor_type = |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
1695 get_flavor_type_from_symbol (XCAR (XCAR (rest)), 0))) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1696 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1697 type = CreateTypeStringWithOSType (flavor_type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1698 if (type) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1699 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1700 CFArrayAppendValue (paste_types, type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1701 CFRelease (type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1702 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1703 } |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1704 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1705 /* Set copy types. */ |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1706 err = GetEventParameter (event, kEventParamServiceCopyTypes, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1707 typeCFMutableArrayRef, NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1708 sizeof (CFMutableArrayRef), NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1709 ©_types); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1710 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1711 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1712 |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1713 if (NILP (Fx_selection_owner_p (Vmac_service_selection))) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1714 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1715 else |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1716 goto copy_all_flavors; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1717 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1718 case kEventServiceCopy: |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1719 err = GetEventParameter (event, kEventParamScrapRef, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1720 typeScrapRef, NULL, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1721 sizeof (ScrapRef), NULL, &specific_scrap); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1722 if (err != noErr |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1723 || NILP (Fx_selection_owner_p (Vmac_service_selection))) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1724 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1725 err = eventNotHandledErr; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1726 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1727 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1728 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1729 copy_all_flavors: |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1730 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1731 UInt32 count, i; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1732 ScrapFlavorInfo *flavor_info = NULL; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1733 ScrapFlavorFlags flags; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1734 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1735 err = GetScrapFlavorCount (cur_scrap, &count); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1736 if (err == noErr) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1737 flavor_info = xmalloc (sizeof (ScrapFlavorInfo) * count); |
70070
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
1738 err = GetScrapFlavorInfoList (cur_scrap, &count, flavor_info); |
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
1739 if (err != noErr) |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1740 { |
70070
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
1741 xfree (flavor_info); |
9559d7f62131
(get_scrap_target_type_list, defer_apple_events)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69963
diff
changeset
|
1742 flavor_info = NULL; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1743 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1744 if (flavor_info == NULL) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1745 break; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1746 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1747 for (i = 0; i < count; i++) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1748 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1749 flavor_type = flavor_info[i].flavorType; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1750 err = GetScrapFlavorFlags (cur_scrap, flavor_type, &flags); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1751 if (err == noErr && !(flags & kScrapFlavorMaskSenderOnly)) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1752 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1753 if (event_kind == kEventServiceCopy) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1754 err = copy_scrap_flavor_data (cur_scrap, specific_scrap, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1755 flavor_type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1756 else /* event_kind == kEventServiceGetTypes */ |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1757 { |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1758 type = CreateTypeStringWithOSType (flavor_type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1759 if (type) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1760 { |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1761 CFArrayAppendValue (copy_types, type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1762 CFRelease (type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1763 } |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1764 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1765 } |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1766 } |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1767 xfree (flavor_info); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1768 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1769 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1770 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1771 case kEventServicePaste: |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1772 case kEventServicePerform: |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1773 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1774 int data_exists_p = 0; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1775 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1776 err = GetEventParameter (event, kEventParamScrapRef, typeScrapRef, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1777 NULL, sizeof (ScrapRef), NULL, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1778 &specific_scrap); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1779 if (err == noErr) |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
1780 err = mac_clear_selection (&cur_scrap); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1781 if (err == noErr) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1782 for (rest = Vselection_converter_alist; CONSP (rest); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1783 rest = XCDR (rest)) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1784 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1785 if (! (CONSP (XCAR (rest)) && SYMBOLP (XCAR (XCAR (rest))))) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1786 continue; |
82290
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
1787 flavor_type = get_flavor_type_from_symbol (XCAR (XCAR (rest)), |
6502a9d89b26
[!TARGET_API_MAC_CARBON] Include Scrap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
1788 specific_scrap); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1789 if (flavor_type == 0) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1790 continue; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1791 err = copy_scrap_flavor_data (specific_scrap, cur_scrap, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1792 flavor_type); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1793 if (err == noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1794 data_exists_p = 1; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1795 } |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1796 if (!data_exists_p) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1797 err = eventNotHandledErr; |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1798 else |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1799 err = mac_store_service_event (event); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1800 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1801 break; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1802 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1803 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1804 if (err != noErr) |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1805 err = eventNotHandledErr; |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1806 return err; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1807 } |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1808 #endif |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1809 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1810 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1811 void |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1812 syms_of_macselect () |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1813 { |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1814 defsubr (&Sx_get_selection_internal); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1815 defsubr (&Sx_own_selection_internal); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1816 defsubr (&Sx_disown_selection_internal); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1817 defsubr (&Sx_selection_owner_p); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1818 defsubr (&Sx_selection_exists_p); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1819 defsubr (&Smac_process_deferred_apple_events); |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1820 defsubr (&Smac_cleanup_expired_apple_events); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1821 defsubr (&Smac_resume_apple_event); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1822 defsubr (&Smac_ae_set_reply_parameter); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1823 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1824 Vselection_alist = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1825 staticpro (&Vselection_alist); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1826 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1827 DEFVAR_LISP ("selection-converter-alist", &Vselection_converter_alist, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1828 doc: /* An alist associating selection-types with functions. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1829 These functions are called to convert the selection, with three args: |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1830 the name of the selection (typically `PRIMARY', `SECONDARY', or `CLIPBOARD'); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1831 a desired type to which the selection should be converted; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1832 and the local selection value (whatever was given to `x-own-selection'). |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1833 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1834 The function should return the value to send to the Scrap Manager |
64607
fefea1491def
(Fx_own_selection_internal): Follow error conventions.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64312
diff
changeset
|
1835 \(must be a string). A return value of nil |
76745
f6a525134188
(get_scrap_target_type_list, x_own_selection): Move
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75376
diff
changeset
|
1836 means that the conversion could not be done. */); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1837 Vselection_converter_alist = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1838 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1839 DEFVAR_LISP ("x-lost-selection-functions", &Vx_lost_selection_functions, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1840 doc: /* A list of functions to be called when Emacs loses a selection. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1841 \(This happens when a Lisp program explicitly clears the selection.) |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1842 The functions are called with one argument, the selection type |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1843 \(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'). */); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1844 Vx_lost_selection_functions = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1845 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1846 DEFVAR_LISP ("selection-coding-system", &Vselection_coding_system, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1847 doc: /* Coding system for communicating with other programs. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1848 When sending or receiving text via cut_buffer, selection, and clipboard, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1849 the text is encoded or decoded by this coding system. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1850 The default value is determined by the system script code. */); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1851 Vselection_coding_system = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1852 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1853 DEFVAR_LISP ("next-selection-coding-system", &Vnext_selection_coding_system, |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1854 doc: /* Coding system for the next communication with other programs. |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1855 Usually, `selection-coding-system' is used for communicating with |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1856 other programs. But, if this variable is set, it is used for the |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1857 next communication only. After the communication, this variable is |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1858 set to nil. */); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1859 Vnext_selection_coding_system = Qnil; |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1860 |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1861 DEFVAR_LISP ("mac-apple-event-map", &Vmac_apple_event_map, |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1862 doc: /* Keymap for Apple events handled by Emacs. */); |
67489
e9ee2ee1d26e
(syms_of_macselect) <mac-apple-event-map>:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67457
diff
changeset
|
1863 Vmac_apple_event_map = Qnil; |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1864 |
70383
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1865 #if TARGET_API_MAC_CARBON |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1866 DEFVAR_LISP ("mac-dnd-known-types", &Vmac_dnd_known_types, |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1867 doc: /* The types accepted by default for dropped data. |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1868 The types are chosen in the order they appear in the list. */); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1869 Vmac_dnd_known_types = list4 (build_string ("hfs "), build_string ("utxt"), |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1870 build_string ("TEXT"), build_string ("TIFF")); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1871 #ifdef MAC_OSX |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1872 Vmac_dnd_known_types = Fcons (build_string ("furl"), Vmac_dnd_known_types); |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1873 #endif |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1874 #endif |
84a220b0dd72
Update copyright year.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70070
diff
changeset
|
1875 |
62271
6cae229f309b
(syms_of_macselect) [MAC_OSX]: Apply a change that was previously
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62102
diff
changeset
|
1876 #ifdef MAC_OSX |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1877 DEFVAR_LISP ("mac-service-selection", &Vmac_service_selection, |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1878 doc: /* Selection name for communication via Services menu. */); |
70562
e2bd086e6902
(Vmac_service_selection) [MAC_OSX]: Rename from
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70495
diff
changeset
|
1879 Vmac_service_selection = intern ("PRIMARY"); |
62271
6cae229f309b
(syms_of_macselect) [MAC_OSX]: Apply a change that was previously
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62102
diff
changeset
|
1880 #endif |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1881 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1882 QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1883 QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1884 QTIMESTAMP = intern ("TIMESTAMP"); staticpro (&QTIMESTAMP); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1885 QTARGETS = intern ("TARGETS"); staticpro (&QTARGETS); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1886 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1887 Qforeign_selection = intern ("foreign-selection"); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1888 staticpro (&Qforeign_selection); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1889 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1890 Qmac_scrap_name = intern ("mac-scrap-name"); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1891 staticpro (&Qmac_scrap_name); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1892 |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1893 Qmac_ostype = intern ("mac-ostype"); |
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1894 staticpro (&Qmac_ostype); |
67457
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1895 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1896 Qmac_apple_event_class = intern ("mac-apple-event-class"); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1897 staticpro (&Qmac_apple_event_class); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1898 |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1899 Qmac_apple_event_id = intern ("mac-apple-event-id"); |
819dc1a5c256
Include keymap.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64607
diff
changeset
|
1900 staticpro (&Qmac_apple_event_id); |
70873
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1901 |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1902 Qemacs_suspension_id = intern ("emacs-suspension-id"); |
523dd2f40cc1
(Qemacs_suspension_id): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70562
diff
changeset
|
1903 staticpro (&Qemacs_suspension_id); |
61777
c323711ae68f
New file for selection processing on Mac OS.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
diff
changeset
|
1904 } |
61819 | 1905 |
1906 /* arch-tag: f3c91ad8-99e0-4bd6-9eef-251b2f848732 | |
1907 (do not change this comment) */ |