Created
December 19, 2009 10:55
-
-
Save bodhi/260042 to your computer and use it in GitHub Desktop.
Emacs 23 patch for non-file url drag-n-drop
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit d37cb54df270fd6bd1b7464af2bc3e285079cdc5 | |
Author: bodhi | |
Date: Sat Dec 19 21:53:27 2009 +1100 | |
Create event when drag-n-dropping non-file URLs on Nextstep | |
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el | |
index 157b2dd..13bd0ac 100644 | |
--- a/lisp/term/ns-win.el | |
+++ b/lisp/term/ns-win.el | |
@@ -277,6 +277,7 @@ The properties returned may include `top', `left', `height', and `width'." | |
(define-key global-map [ns-new-frame] 'make-frame) | |
(define-key global-map [ns-toggle-toolbar] 'ns-toggle-toolbar) | |
(define-key global-map [ns-show-prefs] 'customize) | |
+(define-key global-map [ns-drag-url] 'ns-insert-text) | |
;; Set up a number of aliases and other layers to pretend we're using | |
@@ -315,6 +316,7 @@ The properties returned may include `top', `left', `height', and `width'." | |
(cons (logior (lsh 0 16) 12) 'ns-new-frame) | |
(cons (logior (lsh 0 16) 13) 'ns-toggle-toolbar) | |
(cons (logior (lsh 0 16) 14) 'ns-show-prefs) | |
+ (cons (logior (lsh 0 16) 15) 'ns-drag-url) | |
(cons (logior (lsh 1 16) 32) 'f1) | |
(cons (logior (lsh 1 16) 33) 'f2) | |
(cons (logior (lsh 1 16) 34) 'f3) | |
diff --git a/src/nsterm.h b/src/nsterm.h | |
index 29d312a..8536660 100644 | |
--- a/src/nsterm.h | |
+++ b/src/nsterm.h | |
@@ -365,6 +365,7 @@ typedef unsigned int NSUInteger; | |
#define KEY_NS_NEW_FRAME ((1<<28)|(0<<16)|12) | |
#define KEY_NS_TOGGLE_TOOLBAR ((1<<28)|(0<<16)|13) | |
#define KEY_NS_SHOW_PREFS ((1<<28)|(0<<16)|14) | |
+#define KEY_NS_DRAG_URL ((1<<28)|(0<<16)|15) | |
/* could use list to store these, but rest of emacs has a big infrastructure | |
for managing a table of bitmap "records" */ | |
diff --git a/src/nsterm.m b/src/nsterm.m | |
index 9256c08..73ede9a 100644 | |
--- a/src/nsterm.m | |
+++ b/src/nsterm.m | |
@@ -5456,20 +5456,24 @@ extern void update_window_cursor (struct window *w, int on); | |
} | |
else if ([type isEqualToString: NSURLPboardType]) | |
{ | |
- NSString *file; | |
- NSURL *fileURL; | |
- | |
- if (!(fileURL = [NSURL URLFromPasteboard: pb]) || | |
- [fileURL isFileURL] == NO) | |
- return NO; | |
- | |
- file = [fileURL path]; | |
+ NSString *path; | |
+ NSURL *url; | |
+ | |
+ if (!(url = [NSURL URLFromPasteboard: pb])) { | |
+ return NO; | |
+ } else if ([url isFileURL] == YES) { | |
+ path = [url path]; | |
+ emacs_event->code = KEY_NS_DRAG_FILE; | |
+ ns_input_file = append2 (ns_input_file, build_string ([path UTF8String])); | |
+ } else { | |
+ path = [url absoluteString]; | |
+ emacs_event->code = KEY_NS_DRAG_URL; | |
+ ns_input_text = build_string ([path UTF8String]); | |
+ } | |
emacs_event->kind = NS_NONKEY_EVENT; | |
- emacs_event->code = KEY_NS_DRAG_FILE; | |
+ emacs_event->modifiers = EV_MODIFIERS (theEvent); | |
XSETINT (emacs_event->x, x); | |
XSETINT (emacs_event->y, y); | |
- ns_input_file = append2 (ns_input_file, build_string ([file UTF8String])); | |
- emacs_event->modifiers = EV_MODIFIERS (theEvent); | |
EV_TRAILER (theEvent); | |
return YES; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Patch primarily to support drag-and-drop of emails from Mail.app | |
[1] http://daringfireball.net/2007/12/message_urls_leopard_mail |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment