changeset 103956:8fe7030bb370

(x-selection-owner-p, x-own-selection-internal) (x-disown-selection-internal): New functions.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 18 Jul 2009 11:12:41 +0000
parents 67efbd930fef
children 3cb57dcd7653
files lisp/term/pc-win.el
diffstat 1 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/term/pc-win.el	Sat Jul 18 10:37:39 2009 +0000
+++ b/lisp/term/pc-win.el	Sat Jul 18 11:12:41 2009 +0000
@@ -227,6 +227,47 @@
 	 (t
 	  (setq x-last-selected-text text))))))
 
+;; x-selection-owner-p is used in simple.el.
+(defun x-selection-owner-p (&optional type)
+  "Whether the current Emacs process owns the given X Selection.
+The arg should be the name of the selection in question, typically one of
+the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+\(Those are literal upper-case symbol names, since that's what X expects.)
+For convenience, the symbol nil is the same as `PRIMARY',
+and t is the same as `SECONDARY'."
+    (if x-select-enable-clipboard
+      (let (text)
+	;; Don't die if w16-get-clipboard-data signals an error.
+	(ignore-errors
+	  (setq text (w16-get-clipboard-data)))
+	;; We consider ourselves the owner of the selection if it does
+	;; not exist, or exists and compares equal with the last text
+	;; we've put into the Windows clipboard.
+	(cond
+	 ((not text) t)
+	 ((or (eq text x-last-selected-text)
+	      (string= text x-last-selected-text))
+	  text)
+	 (t nil)))))
+
+;; x-own-selection-internal and x-disown-selection-internal are used
+;; in select.el:x-set-selection.
+(defun x-own-selection-internal (type value)
+  "Assert an X selection of the given TYPE with the given VALUE.
+TYPE is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+\(Those are literal upper-case symbol names, since that's what X expects.)
+VALUE is typically a string, or a cons of two markers, but may be
+anything that the functions on `selection-converter-alist' know about."
+  (ignore-errors
+    (x-select-text value))
+  value)
+
+(defun x-disown-selection-internal (selection &optional time)
+  "If we own the selection SELECTION, disown it.
+Disowning it means there is no such selection."
+  (if (x-selection-owner-p selection)
+      t))
+
 ;; From lisp/faces.el: we only have one font, so always return
 ;; it, no matter which variety they've asked for.
 (defun x-frob-font-slant (font which)