From: Thierry Volpiatto <thierry.volpiatto@gmail.com>
To: Lars Magne Ingebrigtsen <larsi@gnus.org>
Cc: 10165@debbugs.gnu.org
Subject: bug#10165: [PATCH] Allow setting corner in mouse avoidance mode.
Date: Thu, 12 Apr 2012 23:12:04 +0200 [thread overview]
Message-ID: <87wr5k1wpn.fsf@gmail.com> (raw)
In-Reply-To: <m3lim0lnt7.fsf@stories.gnus.org> (Lars Magne Ingebrigtsen's message of "Thu, 12 Apr 2012 22:04:04 +0200")
[-- Attachment #1: Type: text/plain, Size: 345 bytes --]
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> Thierry Volpiatto <thierry.volpiatto@gmail.com> writes:
>
>> Yes you are right, sorry, need to use negative values for such setting.
>
> There were lots of different versions of the patch, but we're now in
> Emacs 24.2 land, so installing this now would be OK.
Ok I will install it tomorrow.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: banish mouse --]
[-- Type: text/x-diff, Size: 4201 bytes --]
# HG changeset patch
# User Thierry Volpiatto <thierry.volpiatto@gmail.com>
# Date 1334264470 -7200
# Node ID 3348d7d9ee32577461067f83f3df8f5c9f2106c7
# Parent 6535056f09a7e69005c3ea1402fec39eaa754e5f
* lisp/avoid.el Allow customizing position of mouse when banishing.
(mouse-avoidance-banish-position): New user variable.
(mouse-avoidance-banish-destination): Place mouse pointer according to `mouse-avoidance-banish-position'.
diff --git a/lisp/avoid.el b/lisp/avoid.el
--- a/lisp/avoid.el
+++ b/lisp/avoid.el
@@ -115,6 +115,23 @@
:type 'integer
:group 'avoid)
+(defcustom mouse-avoidance-banish-position '((frame-or-window . frame)
+ (side . right)
+ (side-pos . 3)
+ (top-or-bottom . top)
+ (top-or-bottom-pos . 0))
+ "Position to which Mouse Avoidance mode `banish' moves the mouse.
+An alist where keywords mean:
+FRAME-OR-WINDOW: banish the mouse to corner of frame or window.
+SIDE: banish the mouse on right or left corner of frame or window.
+SIDE-POS: Distance from right or left edge of frame or window.
+TOP-OR-BOTTOM: banish the mouse to top or bottom of frame or window.
+TOP-OR-BOTTOM-POS: Distance from top or bottom edge of frame or window."
+ :group 'avoid
+ :type '(alist :key-type symbol :value-type symbol)
+ :options '(frame-or-window side (side-pos integer)
+ top-or-bottom (top-or-bottom-pos integer)))
+
;; Internal variables
(defvar mouse-avoidance-state nil)
(defvar mouse-avoidance-pointer-shapes nil)
@@ -183,13 +200,45 @@
(defun mouse-avoidance-banish-destination ()
"The position to which Mouse Avoidance mode `banish' moves the mouse.
-You can redefine this if you want the mouse banished to a different corner."
- (let* ((pos (window-edges)))
- (cons (- (nth 2 pos) 2)
- (nth 1 pos))))
+
+If you want the mouse banished to a different corner set
+`mouse-avoidance-banish-position' as you need."
+ (let* ((fra-or-win (assoc-default
+ 'frame-or-window
+ mouse-avoidance-banish-position 'eq))
+ (list-values (case fra-or-win
+ (frame (list 0 0 (frame-width) (frame-height)))
+ (window (window-edges))))
+ (alist (loop for v in list-values
+ for k in '(left top right bottom)
+ collect (cons k v)))
+ (side (assoc-default
+ 'side
+ mouse-avoidance-banish-position 'eq))
+ (side-dist (assoc-default
+ 'side-pos
+ mouse-avoidance-banish-position 'eq))
+ (top-or-bottom (assoc-default
+ 'top-or-bottom
+ mouse-avoidance-banish-position 'eq))
+ (top-or-bottom-dist (assoc-default
+ 'top-or-bottom-pos
+ mouse-avoidance-banish-position 'eq))
+ (side-fn (case side
+ (left '+)
+ (right '-)))
+ (top-or-bottom-fn (case top-or-bottom
+ (top '+)
+ (bottom '-))))
+ (cons (funcall side-fn ; -/+
+ (assoc-default side alist 'eq) ; right or left
+ side-dist) ; distance from side
+ (funcall top-or-bottom-fn ; -/+
+ (assoc-default top-or-bottom alist 'eq) ; top/bottom
+ top-or-bottom-dist)))) ; distance from top/bottom
(defun mouse-avoidance-banish-mouse ()
- ;; Put the mouse pointer in the upper-right corner of the current frame.
+ "Put the mouse pointer to `mouse-avoidance-banish-position'."
(mouse-avoidance-set-mouse-position (mouse-avoidance-banish-destination)))
(defsubst mouse-avoidance-delta (cur delta dist var min max)
[-- Attachment #3: Type: text/plain, Size: 83 bytes --]
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
next prev parent reply other threads:[~2012-04-12 21:12 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-30 5:58 bug#10165: [PATCH] Allow setting corner in mouse avoidance mode Thierry Volpiatto
2011-11-30 6:05 ` Thierry Volpiatto
2011-11-30 9:32 ` Juri Linkov
2011-11-30 10:31 ` Thierry Volpiatto
2011-11-30 17:40 ` Thierry Volpiatto
2011-12-01 7:48 ` Juri Linkov
2011-12-01 8:45 ` Thierry Volpiatto
2011-12-02 7:30 ` Thierry Volpiatto
2011-12-02 7:36 ` Thierry Volpiatto
2011-12-02 10:52 ` Juri Linkov
2011-12-02 11:24 ` Thierry Volpiatto
2011-12-02 17:07 ` Juri Linkov
2011-12-02 17:35 ` Thierry Volpiatto
2011-12-03 8:58 ` Thierry Volpiatto
2011-12-03 9:26 ` Thierry Volpiatto
2011-12-05 10:52 ` Juri Linkov
2011-12-05 18:06 ` Thierry Volpiatto
2011-12-07 17:30 ` Juri Linkov
2011-12-07 18:04 ` Thierry Volpiatto
2011-12-07 19:52 ` Juri Linkov
2011-12-08 6:33 ` Thierry Volpiatto
2011-12-08 20:20 ` Stefan Monnier
2012-04-12 20:04 ` Lars Magne Ingebrigtsen
2012-04-12 21:12 ` Thierry Volpiatto [this message]
2012-04-13 15:19 ` Thierry Volpiatto
2012-04-13 21:13 ` Lars Ingebrigtsen
2012-04-14 5:14 ` Thierry Volpiatto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wr5k1wpn.fsf@gmail.com \
--to=thierry.volpiatto@gmail.com \
--cc=10165@debbugs.gnu.org \
--cc=larsi@gnus.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.