Mercurial > emacs
annotate lisp/x-dnd.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 280c8ae2476d |
children | de02b794c330 |
rev | line source |
---|---|
109259
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
1 ;;; x-dnd.el --- drag and drop support for X -*- coding: utf-8 -*- |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
2 |
106815 | 3 ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
104823
68150c643e2e
Use default-value rather than default-enable-multibyte-characters.
Glenn Morris <rgm@gnu.org>
parents:
102285
diff
changeset
|
4 ;; Free Software Foundation, Inc. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
5 |
109259
e76d2bc9dbbe
* dnd.el, font-setting.el, x-dnd.el: Use utf-8 coding (for author name).
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
6 ;; Author: Jan Djärv <jan.h.d@swipnet.se> |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
7 ;; Maintainer: FSF |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
8 ;; Keywords: window, drag, drop |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
109259
diff
changeset
|
9 ;; Package: emacs |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
10 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
11 ;; This file is part of GNU Emacs. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
12 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
16 ;; (at your option) any later version. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
17 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
18 ;; GNU Emacs is distributed in the hope that it will be useful, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
21 ;; GNU General Public License for more details. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
22 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
23 ;; You should have received a copy of the GNU General Public License |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
25 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
26 ;;; Commentary: |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
27 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
28 ;; This file provides the drop part only. Currently supported protocols |
53949
7edbce1dd20a
* x-dnd.el: Mention support for Motif in commentary.
Jan Djärv <jan.h.d@swipnet.se>
parents:
53913
diff
changeset
|
29 ;; are XDND, Motif and the old KDE 1.x protocol. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
30 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
31 ;;; Code: |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
32 |
61476 | 33 (require 'dnd) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
34 |
61476 | 35 ;;; Customizable variables |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
36 (defcustom x-dnd-test-function 'x-dnd-default-test-function |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
37 "The function drag and drop uses to determine if to accept or reject a drop. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
38 The function takes three arguments, WINDOW, ACTION and TYPES. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
39 WINDOW is where the mouse is when the function is called. WINDOW may be a |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
40 frame if the mouse isn't over a real window (i.e. menu bar, tool bar or |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
41 scroll bar). ACTION is the suggested action from the drag and drop source, |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
42 one of the symbols move, copy, link or ask. TYPES is a list of available |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
43 types for the drop. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
44 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
45 The function shall return nil to reject the drop or a cons with two values, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
46 the wanted action as car and the wanted type as cdr. The wanted action |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
47 can be copy, move, link, ask or private. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
48 The default value for this variable is `x-dnd-default-test-function'." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
49 :version "22.1" |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
50 :type 'symbol |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
51 :group 'x) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
52 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
53 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
54 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
55 (defcustom x-dnd-types-alist |
105765
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
56 `( |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
57 (,(purecopy "text/uri-list") . x-dnd-handle-uri-list) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
58 (,(purecopy "text/x-moz-url") . x-dnd-handle-moz-url) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
59 (,(purecopy "_NETSCAPE_URL") . x-dnd-handle-uri-list) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
60 (,(purecopy "FILE_NAME") . x-dnd-handle-file-name) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
61 (,(purecopy "UTF8_STRING") . x-dnd-insert-utf8-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
62 (,(purecopy "text/plain;charset=UTF-8") . x-dnd-insert-utf8-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
63 (,(purecopy "text/plain;charset=utf-8") . x-dnd-insert-utf8-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
64 (,(purecopy "text/unicode") . x-dnd-insert-utf16-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
65 (,(purecopy "text/plain") . dnd-insert-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
66 (,(purecopy "COMPOUND_TEXT") . x-dnd-insert-ctext) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
67 (,(purecopy "STRING") . dnd-insert-text) |
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
68 (,(purecopy "TEXT") . dnd-insert-text) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
69 ) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
70 "Which function to call to handle a drop of that type. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
71 If the type for the drop is not present, or the function is nil, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
72 the drop is rejected. The function takes three arguments, WINDOW, ACTION |
75140
6674b79afd5e
(x-dnd-types-alist): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
72485
diff
changeset
|
73 and DATA. WINDOW is where the drop occurred, ACTION is the action for |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
74 this drop (copy, move, link, private or ask) as determined by a previous |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
75 call to `x-dnd-test-function'. DATA is the drop data. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
76 The function shall return the action used (copy, move, link or private) |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
77 if drop is successful, nil if not." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
78 :version "22.1" |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
79 :type 'alist |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
80 :group 'x) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
81 |
56852
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
82 (defcustom x-dnd-known-types |
105870
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105765
diff
changeset
|
83 (mapcar 'purecopy |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
84 '("text/uri-list" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
85 "text/x-moz-url" |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
86 "_NETSCAPE_URL" |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
87 "FILE_NAME" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
88 "UTF8_STRING" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
89 "text/plain;charset=UTF-8" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
90 "text/plain;charset=utf-8" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
91 "text/unicode" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
92 "text/plain" |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
93 "COMPOUND_TEXT" |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
94 "STRING" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
95 "TEXT" |
105870
26baacb565b0
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105765
diff
changeset
|
96 )) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
97 "The types accepted by default for dropped data. |
56852
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
98 The types are chosen in the order they appear in the list." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
99 :version "22.1" |
56852
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
100 :type '(repeat string) |
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
101 :group 'x |
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
102 ) |
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
103 |
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
104 ;; Internal variables |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
105 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
106 (defvar x-dnd-current-state nil |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
107 "The current state for a drop. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
108 This is an alist with one entry for each display. The value for each display |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
109 is a vector that contains the state for drag and drop for that display. |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
110 Elements in the vector are: |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
111 Last buffer drag was in, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
112 last window drag was in, |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
113 types available for drop, |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
114 the action suggested by the source, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
115 the type we want for the drop, |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
116 the action we want for the drop, |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
117 any protocol specific data.") |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
118 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
119 (defvar x-dnd-empty-state [nil nil nil nil nil nil nil]) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
120 |
86325
613267d53431
(x-register-dnd-atom, x-get-atom-name, x-send-client-message):
Juanma Barranquero <lekktu@gmail.com>
parents:
83648
diff
changeset
|
121 (declare-function x-register-dnd-atom "xselect.c") |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
122 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
123 (defun x-dnd-init-frame (&optional frame) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
124 "Setup drag and drop for FRAME (i.e. create appropriate properties)." |
83040
b0da1c792c48
Don't try to init X drag and drop on a termcap frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
53949
diff
changeset
|
125 (when (eq 'x (window-system frame)) |
83541 | 126 (x-register-dnd-atom "DndProtocol" frame) |
127 (x-register-dnd-atom "_MOTIF_DRAG_AND_DROP_MESSAGE" frame) | |
128 (x-register-dnd-atom "XdndEnter" frame) | |
129 (x-register-dnd-atom "XdndPosition" frame) | |
130 (x-register-dnd-atom "XdndLeave" frame) | |
131 (x-register-dnd-atom "XdndDrop" frame) | |
83040
b0da1c792c48
Don't try to init X drag and drop on a termcap frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
53949
diff
changeset
|
132 (x-dnd-init-xdnd-for-frame frame) |
b0da1c792c48
Don't try to init X drag and drop on a termcap frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
53949
diff
changeset
|
133 (x-dnd-init-motif-for-frame frame))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
134 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
135 (defun x-dnd-get-state-cons-for-frame (frame-or-window) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
136 "Return the entry in `x-dnd-current-state' for a frame or window." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
137 (let* ((frame (if (framep frame-or-window) frame-or-window |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
138 (window-frame frame-or-window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
139 (display (frame-parameter frame 'display))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
140 (if (not (assoc display x-dnd-current-state)) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
141 (push (cons display (copy-sequence x-dnd-empty-state)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
142 x-dnd-current-state)) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
143 (assoc display x-dnd-current-state))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
144 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
145 (defun x-dnd-get-state-for-frame (frame-or-window) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
146 "Return the state in `x-dnd-current-state' for a frame or window." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
147 (cdr (x-dnd-get-state-cons-for-frame frame-or-window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
148 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
149 (defun x-dnd-default-test-function (window action types) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
150 "The default test function for drag and drop. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
151 WINDOW is where the mouse is when this function is called. It may be |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
152 a frame if the mouse is over the menu bar, scroll bar or tool bar. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
153 ACTION is the suggested action from the source, and TYPES are the |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
154 types the drop data can have. This function only accepts drops with |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
155 types in `x-dnd-known-types'. It always returns the action private." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
156 (let ((type (x-dnd-choose-type types))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
157 (when type (cons 'private type)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
158 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
159 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
160 (defun x-dnd-current-type (frame-or-window) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
161 "Return the type we want the DND data to be in for the current drop. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
162 FRAME-OR-WINDOW is the frame or window that the mouse is over." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
163 (aref (x-dnd-get-state-for-frame frame-or-window) 4)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
164 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
165 (defun x-dnd-forget-drop (frame-or-window) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
166 "Remove all state for the last drop. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
167 FRAME-OR-WINDOW is the frame or window that the mouse is over." |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
168 (setcdr (x-dnd-get-state-cons-for-frame frame-or-window) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
169 (copy-sequence x-dnd-empty-state))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
170 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
171 (defun x-dnd-maybe-call-test-function (window action) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
172 "Call `x-dnd-test-function' if something has changed. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
173 WINDOW is the window the mouse is over. ACTION is the suggested |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
174 action from the source. If nothing has changed, return the last |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
175 action and type we got from `x-dnd-test-function'." |
81390
fe478726dca2
(x-dnd-maybe-call-test-function, x-dnd-save-state, x-dnd-drop-data):
Juanma Barranquero <lekktu@gmail.com>
parents:
75347
diff
changeset
|
176 (let ((buffer (when (window-live-p window) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
177 (window-buffer window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
178 (current-state (x-dnd-get-state-for-frame window))) |
105994
009383a57ce8
* x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105870
diff
changeset
|
179 (unless (and (equal buffer (aref current-state 0)) |
009383a57ce8
* x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105870
diff
changeset
|
180 (equal window (aref current-state 1)) |
009383a57ce8
* x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105870
diff
changeset
|
181 (equal action (aref current-state 3))) |
009383a57ce8
* x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105870
diff
changeset
|
182 (save-current-buffer |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
183 (when buffer (set-buffer buffer)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
184 (let* ((action-type (funcall x-dnd-test-function |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
185 window |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
186 action |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
187 (aref current-state 2))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
188 (handler (cdr (assoc (cdr action-type) x-dnd-types-alist)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
189 ;; Ignore action-type if we have no handler. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
190 (setq current-state |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
191 (x-dnd-save-state window |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
192 action |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
193 (when handler action-type))))))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
194 (let ((current-state (x-dnd-get-state-for-frame window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
195 (cons (aref current-state 5) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
196 (aref current-state 4)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
197 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
198 (defun x-dnd-save-state (window action action-type &optional types extra-data) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
199 "Save the state of the current drag and drop. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
200 WINDOW is the window the mouse is over. ACTION is the action suggested |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
201 by the source. ACTION-TYPE is the result of calling `x-dnd-test-function'. |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
202 If given, TYPES are the types for the drop data that the source supports. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
203 EXTRA-DATA is data needed for a specific protocol." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
204 (let ((current-state (x-dnd-get-state-for-frame window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
205 (aset current-state 5 (car action-type)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
206 (aset current-state 4 (cdr action-type)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
207 (aset current-state 3 action) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
208 (when types (aset current-state 2 types)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
209 (when extra-data (aset current-state 6 extra-data)) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
210 (aset current-state 1 window) |
81390
fe478726dca2
(x-dnd-maybe-call-test-function, x-dnd-save-state, x-dnd-drop-data):
Juanma Barranquero <lekktu@gmail.com>
parents:
75347
diff
changeset
|
211 (aset current-state 0 (and (window-live-p window) (window-buffer window))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
212 (setcdr (x-dnd-get-state-cons-for-frame window) current-state))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
213 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
214 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
215 (defun x-dnd-handle-moz-url (window action data) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
216 "Handle one item of type text/x-moz-url. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
217 WINDOW is the window where the drop happened. ACTION is ignored. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
218 DATA is the moz-url, which is formatted as two strings separated by \\r\\n. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
219 The first string is the URL, the second string is the title of that URL. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
220 DATA is encoded in utf-16. Decode the URL and call `x-dnd-handle-uri-list'." |
54682
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
221 ;; Mozilla and applications based on it (Galeon for example) uses |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
222 ;; text/unicode, but it is impossible to tell if it is le or be. Use what |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
223 ;; the machine Emacs runs on use. This looses if dropping between machines |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
224 ;; with different endian, but it is the best we can do. |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
225 (let* ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le)) |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
226 (string (decode-coding-string data coding)) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
227 (strings (split-string string "[\r\n]" t)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
228 ;; Can one drop more than one moz-url ?? Assume not. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
229 (url (car strings)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
230 (title (car (cdr strings)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
231 (x-dnd-handle-uri-list window action url))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
232 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
233 (defun x-dnd-insert-utf8-text (window action text) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
234 "Decode the UTF-8 text and insert it at point. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
235 TEXT is the text as a string, WINDOW is the window where the drop happened." |
61476 | 236 (dnd-insert-text window action (decode-coding-string text 'utf-8))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
237 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
238 (defun x-dnd-insert-utf16-text (window action text) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
239 "Decode the UTF-16 text and insert it at point. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
240 TEXT is the text as a string, WINDOW is the window where the drop happened." |
54682
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
241 ;; See comment in x-dnd-handle-moz-url about coding. |
bd0296e87c16
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
Jan Djärv <jan.h.d@swipnet.se>
parents:
53949
diff
changeset
|
242 (let ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le))) |
61476 | 243 (dnd-insert-text window action (decode-coding-string text coding)))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
244 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
245 (defun x-dnd-insert-ctext (window action text) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
246 "Decode the compound text and insert it at point. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
247 TEXT is the text as a string, WINDOW is the window where the drop happened." |
61476 | 248 (dnd-insert-text window action |
249 (decode-coding-string text | |
250 'compound-text-with-extensions))) | |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
251 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
252 (defun x-dnd-handle-uri-list (window action string) |
61476 | 253 "Split an uri-list into separate URIs and call `dnd-handle-one-url'. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
254 WINDOW is the window where the drop happened. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
255 STRING is the uri-list as a string. The URIs are separated by \\r\\n." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
256 (let ((uri-list (split-string string "[\0\r\n]" t)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
257 retval) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
258 (dolist (bf uri-list) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
259 ;; If one URL is handled, treat as if the whole drop succeeded. |
61476 | 260 (let ((did-action (dnd-handle-one-url window action bf))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
261 (when did-action (setq retval did-action)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
262 retval)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
263 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
264 (defun x-dnd-handle-file-name (window action string) |
70761
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
265 "Convert file names to URLs and call `dnd-handle-one-url'. |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
266 WINDOW is the window where the drop happened. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
267 STRING is the file names as a string, separated by nulls." |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
268 (let ((uri-list (split-string string "[\0\r\n]" t)) |
104823
68150c643e2e
Use default-value rather than default-enable-multibyte-characters.
Glenn Morris <rgm@gnu.org>
parents:
102285
diff
changeset
|
269 (coding (and (default-value 'enable-multibyte-characters) |
70761
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
270 (or file-name-coding-system |
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
271 default-file-name-coding-system))) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
272 retval) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
273 (dolist (bf uri-list) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
274 ;; If one URL is handled, treat as if the whole drop succeeded. |
70761
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
275 (if coding (setq bf (encode-coding-string bf coding))) |
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
276 (let* ((file-uri (concat "file://" |
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
277 (mapconcat 'url-hexify-string |
b1742b0066f2
(x-dnd-handle-file-name): Encode and escape file names
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
68651
diff
changeset
|
278 (split-string bf "/") "/"))) |
61476 | 279 (did-action (dnd-handle-one-url window action file-uri))) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
280 (when did-action (setq retval did-action)))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
281 retval)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
282 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
283 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
284 (defun x-dnd-choose-type (types &optional known-types) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
285 "Choose which type we want to receive for the drop. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
286 TYPES are the types the source of the drop offers, a vector of type names |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
287 as strings or symbols. Select among the types in `x-dnd-known-types' or |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
288 KNOWN-TYPES if given, and return that type name. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
289 If no suitable type is found, return nil." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
290 (let* ((known-list (or known-types x-dnd-known-types)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
291 (first-known-type (car known-list)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
292 (types-array types) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
293 (found (when first-known-type |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
294 (catch 'done |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
295 (dotimes (i (length types-array)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
296 (let* ((type (aref types-array i)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
297 (typename (if (symbolp type) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
298 (symbol-name type) type))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
299 (when (equal first-known-type typename) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
300 (throw 'done first-known-type)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
301 nil)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
302 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
303 (if (and (not found) (cdr known-list)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
304 (x-dnd-choose-type types (cdr known-list)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
305 found))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
306 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
307 (defun x-dnd-drop-data (event frame window data type) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
308 "Drop one data item onto a frame. |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
309 EVENT is the client message for the drop, FRAME is the frame the drop |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
310 occurred on. WINDOW is the window of FRAME where the drop happened. |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
311 DATA is the data received from the source, and type is the type for DATA, |
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
312 see `x-dnd-types-alist'). |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
313 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
314 Returns the action used (move, copy, link, private) if drop was successful, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
315 nil if not." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
316 (let* ((type-info (assoc type x-dnd-types-alist)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
317 (handler (cdr type-info)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
318 (state (x-dnd-get-state-for-frame frame)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
319 (action (aref state 5)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
320 (w (posn-window (event-start event)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
321 (when handler |
81390
fe478726dca2
(x-dnd-maybe-call-test-function, x-dnd-save-state, x-dnd-drop-data):
Juanma Barranquero <lekktu@gmail.com>
parents:
75347
diff
changeset
|
322 (if (and (window-live-p w) |
65836
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
323 (not (window-minibuffer-p w)) |
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
324 (not (window-dedicated-p w))) |
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
325 ;; If dropping in an ordinary window which we could use, |
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
326 ;; let dnd-open-file-other-window specify what to do. |
65807
637dfc9b8d2e
* x-dnd.el (x-dnd-drop-data): Don't set dnd-open-file-other-window
Jan Djärv <jan.h.d@swipnet.se>
parents:
64762
diff
changeset
|
327 (progn |
72485
030d7ce12631
* x-dnd.el (x-dnd-drop-data): Don't call goto-char if
Jan Djärv <jan.h.d@swipnet.se>
parents:
72356
diff
changeset
|
328 (when (not mouse-yank-at-point) |
030d7ce12631
* x-dnd.el (x-dnd-drop-data): Don't call goto-char if
Jan Djärv <jan.h.d@swipnet.se>
parents:
72356
diff
changeset
|
329 (goto-char (posn-point (event-start event)))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
330 (funcall handler window action data)) |
65836
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
331 ;; If we can't display the file here, |
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
332 ;; make a new window for it. |
c502b2c18f47
(x-dnd-drop-data): Check for dedicated windows.
Richard M. Stallman <rms@gnu.org>
parents:
65807
diff
changeset
|
333 (let ((dnd-open-file-other-window t)) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
334 (select-frame frame) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
335 (funcall handler window action data)))))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
336 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
337 (defun x-dnd-handle-drag-n-drop-event (event) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
338 "Receive drag and drop events (X client messages). |
53949
7edbce1dd20a
* x-dnd.el: Mention support for Motif in commentary.
Jan Djärv <jan.h.d@swipnet.se>
parents:
53913
diff
changeset
|
339 Currently XDND, Motif and old KDE 1.x protocols are recognized." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
340 (interactive "e") |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
341 (let* ((client-message (car (cdr (cdr event)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
342 (window (posn-window (event-start event))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
343 (message-atom (aref client-message 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
344 (frame (aref client-message 1)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
345 (format (aref client-message 2)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
346 (data (aref client-message 3))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
347 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
348 (cond ((equal "DndProtocol" message-atom) ; Old KDE 1.x. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
349 (x-dnd-handle-old-kde event frame window message-atom format data)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
350 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
351 ((equal "_MOTIF_DRAG_AND_DROP_MESSAGE" message-atom) ; Motif |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
352 (x-dnd-handle-motif event frame window message-atom format data)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
353 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
354 ((and (> (length message-atom) 4) ; XDND protocol. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
355 (equal "Xdnd" (substring message-atom 0 4))) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
356 (x-dnd-handle-xdnd event frame window message-atom format data))))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
357 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
358 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
359 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
360 ;;; Old KDE protocol. Only dropping of files. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
361 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
362 (declare-function x-window-property "xfns.c" |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
363 (prop &optional frame type source delete-p vector-ret-p)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
364 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
365 (defun x-dnd-handle-old-kde (event frame window message format data) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
366 "Open the files in a KDE 1.x drop." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
367 (let ((values (x-window-property "DndSelection" frame nil 0 t))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
368 (x-dnd-handle-uri-list window 'private |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
369 (replace-regexp-in-string "\0$" "" values)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
370 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
371 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
372 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
373 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
374 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
375 ;;; XDND protocol. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
376 |
105765
db5e4a5897ec
* textmodes/tex-mode.el (tex-dvi-view-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104823
diff
changeset
|
377 (defconst x-dnd-xdnd-to-action |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
378 '(("XdndActionPrivate" . private) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
379 ("XdndActionCopy" . copy) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
380 ("XdndActionMove" . move) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
381 ("XdndActionLink" . link) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
382 ("XdndActionAsk" . ask)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
383 "Mapping from XDND action types to lisp symbols.") |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
384 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
385 (declare-function x-change-window-property "xfns.c" |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
386 (prop value &optional frame type format outer-P)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
387 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
388 (defun x-dnd-init-xdnd-for-frame (frame) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
389 "Set the XdndAware property for FRAME to indicate that we do XDND." |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
390 (x-change-window-property "XdndAware" |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
391 '(5) ;; The version of XDND we support. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
392 frame "ATOM" 32 t)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
393 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
394 (defun x-dnd-get-drop-width-height (frame w accept) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
395 "Return the width/height to be sent in a XDndStatus message. |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
396 FRAME is the frame and W is the window where the drop happened. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
397 If ACCEPT is nil return 0 (empty rectangle), |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
398 otherwise if W is a window, return its width/height, |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
399 otherwise return the frame width/height." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
400 (if accept |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
401 (if (windowp w) ;; w is not a window if dropping on the menu bar, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
402 ;; scroll bar or tool bar. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
403 (let ((edges (window-inside-pixel-edges w))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
404 (cons |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
405 (- (nth 2 edges) (nth 0 edges)) ;; right - left |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
406 (- (nth 3 edges) (nth 1 edges)))) ;; bottom - top |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
407 (cons (frame-pixel-width frame) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
408 (frame-pixel-height frame))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
409 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
410 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
411 (defun x-dnd-get-drop-x-y (frame w) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
412 "Return the x/y coordinates to be sent in a XDndStatus message. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
413 Coordinates are required to be absolute. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
414 FRAME is the frame and W is the window where the drop happened. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
415 If W is a window, return its absolute corrdinates, |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
416 otherwise return the frame coordinates." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
417 (let* ((frame-left (frame-parameter frame 'left)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
418 ;; If the frame is outside the display, frame-left looks like |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
419 ;; '(0 -16). Extract the -16. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
420 (frame-real-left (if (consp frame-left) (car (cdr frame-left)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
421 frame-left)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
422 (frame-top (frame-parameter frame 'top)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
423 (frame-real-top (if (consp frame-top) (car (cdr frame-top)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
424 frame-top))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
425 (if (windowp w) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
426 (let ((edges (window-inside-pixel-edges w))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
427 (cons |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
428 (+ frame-real-left (nth 0 edges)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
429 (+ frame-real-top (nth 1 edges)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
430 (cons frame-real-left frame-real-top)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
431 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
432 (declare-function x-get-atom-name "xselect.c" (value &optional frame)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
433 (declare-function x-send-client-message "xselect.c" |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
434 (display dest from message-type format values)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
435 (declare-function x-get-selection-internal "xselect.c" |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
436 (selection-symbol target-type &optional time-stamp)) |
86325
613267d53431
(x-register-dnd-atom, x-get-atom-name, x-send-client-message):
Juanma Barranquero <lekktu@gmail.com>
parents:
83648
diff
changeset
|
437 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
438 (defun x-dnd-handle-xdnd (event frame window message format data) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
439 "Receive one XDND event (client message) and send the appropriate reply. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
440 EVENT is the client message. FRAME is where the mouse is now. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
441 WINDOW is the window within FRAME where the mouse is now. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
442 FORMAT is 32 (not used). MESSAGE is the data part of an XClientMessageEvent." |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
443 (cond ((equal "XdndEnter" message) |
59932
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
444 (let* ((flags (aref data 1)) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
445 (version (and (consp flags) (ash (car flags) -8))) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
446 (more-than-3 (and (consp flags) (cdr flags))) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
447 (dnd-source (aref data 0))) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
448 (if version ;; If flags is bad, version will be nil. |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
449 (x-dnd-save-state |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
450 window nil nil |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
451 (if (> more-than-3 0) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
452 (x-window-property "XdndTypeList" |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
453 frame "AnyPropertyType" |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
454 dnd-source nil t) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
455 (vector (x-get-atom-name (aref data 2)) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
456 (x-get-atom-name (aref data 3)) |
c7c51386376c
* x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags
Jan Djärv <jan.h.d@swipnet.se>
parents:
57811
diff
changeset
|
457 (x-get-atom-name (aref data 4)))))))) |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
458 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
459 ((equal "XdndPosition" message) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
460 (let* ((x (car (aref data 2))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
461 (y (cdr (aref data 2))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
462 (action (x-get-atom-name (aref data 4))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
463 (dnd-source (aref data 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
464 (dnd-time (aref data 3)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
465 (action-type (x-dnd-maybe-call-test-function |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
466 window |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
467 (cdr (assoc action x-dnd-xdnd-to-action)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
468 (reply-action (car (rassoc (car action-type) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
469 x-dnd-xdnd-to-action))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
470 (accept ;; 1 = accept, 0 = reject |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
471 (if (and reply-action action-type) 1 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
472 (list-to-send |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
473 (list (string-to-number |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
474 (frame-parameter frame 'outer-window-id)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
475 accept ;; 1 = Accept, 0 = reject. |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
476 (x-dnd-get-drop-x-y frame window) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
477 (x-dnd-get-drop-width-height |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
478 frame window (eq accept 1)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
479 (or reply-action 0) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
480 ))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
481 (x-send-client-message |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
482 frame dnd-source frame "XdndStatus" 32 list-to-send) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
483 )) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
484 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
485 ((equal "XdndLeave" message) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
486 (x-dnd-forget-drop window)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
487 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
488 ((equal "XdndDrop" message) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
489 (if (windowp window) (select-window window)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
490 (let* ((dnd-source (aref data 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
491 (value (and (x-dnd-current-type window) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
492 (x-get-selection-internal |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
493 'XdndSelection |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
494 (intern (x-dnd-current-type window))))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
495 success action ret-action) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
496 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
497 (setq action (if value |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
498 (condition-case info |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
499 (x-dnd-drop-data event frame window value |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
500 (x-dnd-current-type window)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
501 (error |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
502 (message "Error: %s" info) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
503 nil)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
504 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
505 (setq success (if action 1 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
506 (setq ret-action |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
507 (if (eq success 1) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
508 (or (car (rassoc action x-dnd-xdnd-to-action)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
509 "XdndActionPrivate") |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
510 0)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
511 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
512 (x-send-client-message |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
513 frame dnd-source frame "XdndFinished" 32 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
514 (list (string-to-number (frame-parameter frame 'outer-window-id)) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
515 success ;; 1 = Success, 0 = Error |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
516 (if success "XdndActionPrivate" 0) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
517 )) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
518 (x-dnd-forget-drop window))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
519 |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
520 (t (error "Unknown XDND message %s %s" message data)))) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
521 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
522 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
523 ;;; Motif protocol. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
524 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
525 (defun x-dnd-init-motif-for-frame (frame) |
102285
ece8e00c3763
* x-dnd.el (x-dnd-test-function, x-dnd-get-state-cons-for-frame)
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
526 "Set _MOTIF_DRAG_RECEIVER_INFO for FRAME to indicate that we do Motif DND." |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
527 (x-change-window-property "_MOTIF_DRAG_RECEIVER_INFO" |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
528 (list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
529 (byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
530 0 ; The Motif DND version. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
531 5 ; We want drag dynamic. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
532 0 0 0 0 0 0 0 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
533 0 0 0 0 0 0) ; Property must be 16 bytes. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
534 frame "_MOTIF_DRAG_RECEIVER_INFO" 8 t)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
535 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
536 (defun x-dnd-get-motif-value (data offset size byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
537 (cond ((eq size 2) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
538 (if (eq byteorder ?l) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
539 (+ (ash (aref data (1+ offset)) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
540 (aref data offset)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
541 (+ (ash (aref data offset) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
542 (aref data (1+ offset))))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
543 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
544 ((eq size 4) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
545 (if (eq byteorder ?l) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
546 (cons (+ (ash (aref data (+ 3 offset)) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
547 (aref data (+ 2 offset))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
548 (+ (ash (aref data (1+ offset)) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
549 (aref data offset))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
550 (cons (+ (ash (aref data offset) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
551 (aref data (1+ offset))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
552 (+ (ash (aref data (+ 2 offset)) 8) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
553 (aref data (+ 3 offset)))))))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
554 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
555 (defun x-dnd-motif-value-to-list (value size byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
556 (let ((bytes (cond ((eq size 2) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
557 (list (logand (lsh value -8) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
558 (logand value ?\xff))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
559 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
560 ((eq size 4) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
561 (if (consp value) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
562 (list (logand (lsh (car value) -8) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
563 (logand (car value) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
564 (logand (lsh (cdr value) -8) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
565 (logand (cdr value) ?\xff)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
566 (list (logand (lsh value -24) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
567 (logand (lsh value -16) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
568 (logand (lsh value -8) ?\xff) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
569 (logand value ?\xff))))))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
570 (if (eq byteorder ?l) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
571 (reverse bytes) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
572 bytes))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
573 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
574 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
575 (defvar x-dnd-motif-message-types |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
576 '((0 . XmTOP_LEVEL_ENTER) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
577 (1 . XmTOP_LEVEL_LEAVE) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
578 (2 . XmDRAG_MOTION) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
579 (3 . XmDROP_SITE_ENTER) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
580 (4 . XmDROP_SITE_LEAVE) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
581 (5 . XmDROP_START) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
582 (6 . XmDROP_FINISH) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
583 (7 . XmDRAG_DROP_FINISH) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
584 (8 . XmOPERATION_CHANGED)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
585 "Mapping from numbers to Motif DND message types.") |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
586 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
587 (defvar x-dnd-motif-to-action |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
588 '((1 . move) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
589 (2 . copy) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
590 (3 . link) ; Both 3 and 4 has been seen as link. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
591 (4 . link) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
592 (2 . private)) ; Motif does not have private, so use copy for private. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
593 "Mapping from number to operation for Motif DND.") |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
594 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
595 (defun x-dnd-handle-motif (event frame window message-atom format data) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
596 (let* ((message-type (cdr (assoc (aref data 0) x-dnd-motif-message-types))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
597 (source-byteorder (aref data 1)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
598 (my-byteorder (byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
599 (source-flags (x-dnd-get-motif-value data 2 2 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
600 (source-action (cdr (assoc (logand ?\xF source-flags) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
601 x-dnd-motif-to-action)))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
602 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
603 (cond ((eq message-type 'XmTOP_LEVEL_ENTER) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
604 (let* ((dnd-source (x-dnd-get-motif-value |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
605 data 8 4 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
606 (selection-atom (x-dnd-get-motif-value |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
607 data 12 4 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
608 (atom-name (x-get-atom-name selection-atom)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
609 (types (when atom-name |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
610 (x-get-selection-internal (intern atom-name) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
611 'TARGETS)))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
612 (x-dnd-forget-drop frame) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
613 (when types (x-dnd-save-state window nil nil |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
614 types |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
615 dnd-source)))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
616 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
617 ;; Can not forget drop here, LEAVE comes before DROP_START and |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
618 ;; we need the state in DROP_START. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
619 ((eq message-type 'XmTOP_LEVEL_LEAVE) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
620 nil) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
621 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
622 ((eq message-type 'XmDRAG_MOTION) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
623 (let* ((state (x-dnd-get-state-for-frame frame)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
624 (timestamp (x-dnd-motif-value-to-list |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
625 (x-dnd-get-motif-value data 4 4 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
626 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
627 4 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
628 (x (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
629 (x-dnd-get-motif-value data 8 2 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
630 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
631 (y (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
632 (x-dnd-get-motif-value data 10 2 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
633 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
634 (dnd-source (aref state 6)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
635 (first-move (not (aref state 3))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
636 (action-type (x-dnd-maybe-call-test-function |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
637 window |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
638 source-action)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
639 (reply-action (car (rassoc (car action-type) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
640 x-dnd-motif-to-action))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
641 (reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
642 (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
643 (if reply-action |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
644 (+ reply-action |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
645 ?\x30 ; 30: valid drop site |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
646 ?\x700) ; 700: can do copy, move or link |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
647 ?\x30) ; 30: drop site, but noop. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
648 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
649 (reply (append |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
650 (list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
651 (+ ?\x80 ; 0x80 indicates a reply. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
652 (if first-move |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
653 3 ; First time, reply is SITE_ENTER. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
654 2)) ; Not first time, reply is DRAG_MOTION. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
655 my-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
656 reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
657 timestamp |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
658 x |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
659 y))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
660 (x-send-client-message frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
661 dnd-source |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
662 frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
663 "_MOTIF_DRAG_AND_DROP_MESSAGE" |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
664 8 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
665 reply))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
666 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
667 ((eq message-type 'XmOPERATION_CHANGED) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
668 (let* ((state (x-dnd-get-state-for-frame frame)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
669 (timestamp (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
670 (x-dnd-get-motif-value data 4 4 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
671 4 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
672 (dnd-source (aref state 6)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
673 (action-type (x-dnd-maybe-call-test-function |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
674 window |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
675 source-action)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
676 (reply-action (car (rassoc (car action-type) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
677 x-dnd-motif-to-action))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
678 (reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
679 (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
680 (if reply-action |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
681 (+ reply-action |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
682 ?\x30 ; 30: valid drop site |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
683 ?\x700) ; 700: can do copy, move or link |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
684 ?\x30) ; 30: drop site, but noop |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
685 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
686 (reply (append |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
687 (list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
688 (+ ?\x80 ; 0x80 indicates a reply. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
689 8) ; 8 is OPERATION_CHANGED |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
690 my-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
691 reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
692 timestamp))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
693 (x-send-client-message frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
694 dnd-source |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
695 frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
696 "_MOTIF_DRAG_AND_DROP_MESSAGE" |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
697 8 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
698 reply))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
699 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
700 ((eq message-type 'XmDROP_START) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
701 (let* ((x (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
702 (x-dnd-get-motif-value data 8 2 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
703 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
704 (y (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
705 (x-dnd-get-motif-value data 10 2 source-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
706 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
707 (selection-atom (x-dnd-get-motif-value |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
708 data 12 4 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
709 (atom-name (x-get-atom-name selection-atom)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
710 (dnd-source (x-dnd-get-motif-value |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
711 data 16 4 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
712 (action-type (x-dnd-maybe-call-test-function |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
713 window |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
714 source-action)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
715 (reply-action (car (rassoc (car action-type) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
716 x-dnd-motif-to-action))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
717 (reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
718 (x-dnd-motif-value-to-list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
719 (if reply-action |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
720 (+ reply-action |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
721 ?\x30 ; 30: valid drop site |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
722 ?\x700) ; 700: can do copy, move or link |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
723 (+ ?\x30 ; 30: drop site, but noop. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
724 ?\x200)) ; 200: drop cancel. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
725 2 my-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
726 (reply (append |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
727 (list |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
728 (+ ?\x80 ; 0x80 indicates a reply. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
729 5) ; DROP_START. |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
730 my-byteorder) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
731 reply-flags |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
732 x |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
733 y)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
734 (timestamp (x-dnd-get-motif-value |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
735 data 4 4 source-byteorder)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
736 action) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
737 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
738 (x-send-client-message frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
739 dnd-source |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
740 frame |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
741 "_MOTIF_DRAG_AND_DROP_MESSAGE" |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
742 8 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
743 reply) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
744 (setq action |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
745 (when (and reply-action atom-name) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
746 (let* ((value (x-get-selection-internal |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
747 (intern atom-name) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
748 (intern (x-dnd-current-type window))))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
749 (when value |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
750 (condition-case info |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
751 (x-dnd-drop-data event frame window value |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
752 (x-dnd-current-type window)) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
753 (error |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
754 (message "Error: %s" info) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
755 nil)))))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
756 (x-get-selection-internal |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
757 (intern atom-name) |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
758 (if action 'XmTRANSFER_SUCCESS 'XmTRANSFER_FAILURE) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
759 timestamp) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
760 (x-dnd-forget-drop frame))) |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
761 |
56852
4504840779eb
* x-dnd.el (x-dnd-protocol-alist): Document update.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54986
diff
changeset
|
762 (t (error "Unknown Motif DND message %s %s" message-atom data))))) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59932
diff
changeset
|
763 |
53913
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
764 |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
765 ;;; |
e83b3b3941cf
x-dnd.el: Add COMPOUND_TEXT, handle FILE_NAME correctly, add Motif (CDE)
Jan Djärv <jan.h.d@swipnet.se>
parents:
53823
diff
changeset
|
766 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
767 (provide 'x-dnd) |
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
768 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
769 ;; arch-tag: b621fb7e-50da-4323-850b-5fc71ae64621 |
53789
7efe8089eadf
* x-dnd.el: New file for drag and drop.
Jan Djärv <jan.h.d@swipnet.se>
parents:
diff
changeset
|
770 ;;; x-dnd.el ends here |