emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/xt-mouse.el,v


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/xt-mouse.el,v
Date: Wed, 29 Aug 2007 05:28:42 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     07/08/29 05:28:10

Index: lisp/xt-mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/xt-mouse.el,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- lisp/xt-mouse.el    13 Aug 2007 13:41:00 -0000      1.43
+++ lisp/xt-mouse.el    29 Aug 2007 05:28:03 -0000      1.44
@@ -45,6 +45,7 @@
 
 (defvar xterm-mouse-debug-buffer nil)
 
+;; XXX Perhaps this should be terminal-local instead. --lorentey
 (define-key function-key-map "\e[M" 'xterm-mouse-translate)
 
 (defvar xterm-mouse-last)
@@ -104,11 +105,13 @@
                (vector (list down-where down-data) down)
              (vector down))))))))
 
-(defvar xterm-mouse-x 0
-  "Position of last xterm mouse event relative to the frame.")
-
-(defvar xterm-mouse-y 0
-  "Position of last xterm mouse event relative to the frame.")
+;; These two variables have been converted to terminal parameters.
+;;
+;;(defvar xterm-mouse-x 0
+;;  "Position of last xterm mouse event relative to the frame.")
+;;
+;;(defvar xterm-mouse-y 0
+;;  "Position of last xterm mouse event relative to the frame.")
 
 (defvar xt-mouse-epoch nil)
 
@@ -116,7 +119,9 @@
 
 (defun xterm-mouse-position-function (pos)
   "Bound to `mouse-position-function' in XTerm mouse mode."
-  (setcdr pos (cons xterm-mouse-x xterm-mouse-y))
+  (when (terminal-parameter nil 'xterm-mouse-x)
+    (setcdr pos (cons (terminal-parameter nil 'xterm-mouse-x)
+                     (terminal-parameter nil 'xterm-mouse-y))))
   pos)
 
 ;; read xterm sequences above ascii 127 (#x7f)
@@ -175,8 +180,8 @@
          (left (nth 0 ltrb))
          (top (nth 1 ltrb)))
 
-    (setq xterm-mouse-x x
-         xterm-mouse-y y)
+    (set-terminal-parameter nil 'xterm-mouse-x x)
+    (set-terminal-parameter nil 'xterm-mouse-y y)
     (setq
      last-input-event
      (list mouse
@@ -202,7 +207,7 @@
   :global t :group 'mouse
   (if xterm-mouse-mode
       ;; Turn it on
-      (unless window-system
+      (progn
        (setq mouse-position-function #'xterm-mouse-position-function)
        (turn-on-xterm-mouse-tracking))
     ;; Turn it off
@@ -211,15 +216,43 @@
 
 (defun turn-on-xterm-mouse-tracking ()
   "Enable Emacs mouse tracking in xterm."
-  (if xterm-mouse-mode
-      (send-string-to-terminal "\e[?1000h")))
+  (dolist (f (frame-list))
+    (when (eq t (frame-live-p f))
+      (with-selected-frame f
+       (when xterm-mouse-mode
+         (send-string-to-terminal "\e[?1000h"))))))
 
 (defun turn-off-xterm-mouse-tracking (&optional force)
   "Disable Emacs mouse tracking in xterm."
-  (if (or force xterm-mouse-mode)
-      (send-string-to-terminal "\e[?1000l")))
+  (dolist (f (frame-list))
+    (when (eq t (frame-live-p f))
+      (with-selected-frame f
+       (when (or force xterm-mouse-mode)
+         (send-string-to-terminal "\e[?1000l"))))))
+
+(defun turn-on-xterm-mouse-tracking-on-terminal (terminal)
+  "Enable xterm mouse tracking on TERMINAL."
+  (when (and xterm-mouse-mode (eq t (terminal-live-p terminal)))
+    (send-string-to-terminal "\e[?1000h" terminal)))
+
+(defun turn-off-xterm-mouse-tracking-on-terminal (terminal)
+  "Disable xterm mouse tracking on TERMINAL."
+  (when (and xterm-mouse-mode (eq t (terminal-live-p terminal)))
+    (send-string-to-terminal "\e[?1000l" terminal)))
+
+(defun xterm-mouse-handle-delete-frame (frame)
+  "Turn off xterm mouse tracking if FRAME is the last frame on its device."
+  (when (and (eq t (frame-live-p frame))
+            (<= 1 (length (frames-on-display-list (frame-terminal frame)))))
+    (turn-off-xterm-mouse-tracking-on-terminal frame)))
+
+;; Frame creation and deletion.
+(add-hook 'after-make-frame-functions 
'turn-on-xterm-mouse-tracking-on-terminal)
+(add-hook 'delete-frame-functions 'xterm-mouse-handle-delete-frame)
 
 ;; Restore normal mouse behaviour outside Emacs.
+(add-hook 'suspend-tty-functions 'turn-off-xterm-mouse-tracking-on-terminal)
+(add-hook 'resume-tty-functions 'turn-on-xterm-mouse-tracking-on-terminal)
 (add-hook 'suspend-hook 'turn-off-xterm-mouse-tracking)
 (add-hook 'suspend-resume-hook 'turn-on-xterm-mouse-tracking)
 (add-hook 'kill-emacs-hook 'turn-off-xterm-mouse-tracking)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]