Mercurial > emacs
annotate lisp/x-dnd.el @ 111146:25f363b1aa1f
* configure.in: Remove the BROKEN annotation from gnutls.
author | Lars Magne Ingebrigtsen <larsi@gnus.org> |
---|---|
date | Sun, 24 Oct 2010 22:46:17 +0200 |
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 |