From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.bugs Subject: bug#10165: [PATCH] Allow setting corner in mouse avoidance mode. Date: Sat, 03 Dec 2011 09:58:02 +0100 Message-ID: <877h2eav6t.fsf@gmail.com> References: <877h2itald.fsf@gmail.com> <87pqgaj757.fsf@mail.jurta.org> <87liqxj401.fsf@gmail.com> <871uspy0e3.fsf@gmail.com> <87ipm0spfp.fsf@mail.jurta.org> <874nxj4ei8.fsf@gmail.com> <87zkfb2znw.fsf@gmail.com> <87y5uvb5x8.fsf@mail.jurta.org> <87wrafusgd.fsf@gmail.com> <87wraezyvf.fsf@mail.jurta.org> <874nxi7u70.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1322902734 21850 80.91.229.12 (3 Dec 2011 08:58:54 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 3 Dec 2011 08:58:54 +0000 (UTC) To: 10165@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 03 09:58:50 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RWlQn-0004Ih-LU for geb-bug-gnu-emacs@m.gmane.org; Sat, 03 Dec 2011 09:58:50 +0100 Original-Received: from localhost ([::1]:48113 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQn-0007q5-Ar for geb-bug-gnu-emacs@m.gmane.org; Sat, 03 Dec 2011 03:58:49 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:52005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQj-0007pp-Gl for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:47 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RWlQh-0007bt-7d for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:45 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:50020) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQh-0007bp-4o for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:43 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1RWlR0-0002Ff-5r for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:59:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <877h2itald.fsf@gmail.com> Resent-From: Thierry Volpiatto Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Dec 2011 08:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10165 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13229027228629 (code B ref -1); Sat, 03 Dec 2011 08:59:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2011 08:58:42 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RWlQg-0002F8-Gg for submit@debbugs.gnu.org; Sat, 03 Dec 2011 03:58:42 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RWlQd-0002F1-Uz for submit@debbugs.gnu.org; Sat, 03 Dec 2011 03:58:41 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RWlQJ-0007XV-JH for submit@debbugs.gnu.org; Sat, 03 Dec 2011 03:58:20 -0500 Original-Received: from lists.gnu.org ([140.186.70.17]:50799) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQJ-0007XR-Hr for submit@debbugs.gnu.org; Sat, 03 Dec 2011 03:58:19 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:51926) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQI-0007pa-Em for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:19 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RWlQH-0007X9-8u for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:18 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:35318) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RWlQH-0007Wq-0A for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 03:58:17 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RWlQE-00048b-Nr for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2011 09:58:14 +0100 Original-Received: from 132.78.88.79.rev.sfr.net ([79.88.78.132]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 03 Dec 2011 09:58:14 +0100 Original-Received: from thierry.volpiatto by 132.78.88.79.rev.sfr.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 03 Dec 2011 09:58:14 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 113 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 132.78.88.79.rev.sfr.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) Cancel-Lock: sha1:2rNI/wNAFnr9GSVvZcVdlkyXu08= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Sat, 03 Dec 2011 03:59:02 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:54642 Archived-At: --=-=-= Content-Type: text/plain Thierry Volpiatto writes: > I will try to rework my patch then. I use only one user variable now: --8<---------------cut here---------------start------------->8--- (defcustom mouse-avoidance-banish-position '((frame-or-window . frame) (side . right) (side-pos . 3) (top-or-bottom . top) (top-or-bottom-pos . 0)) --8<---------------cut here---------------end--------------->8--- Which allow to set also the vertical position (top-or-bottom-pos). See attached patch. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=Singlepatch-r118037ToTip.patch Content-Description: mouse avoidance banish ##Merge of all patches applied from revision 118111 ## patch-r118037: * lisp/avoid.el: Allow setting in which corner banish move the mouse. ## patch-r118084: * lisp/avoid.el (mouse-avoidance-banish-distance-from-edge): Allow banishing mouse in frame or window corner. ## patch-r118114: * lisp/avoid.el Allow specifying a vertical position when banishing mouse. ## 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 sexp :value-type sexp) + :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,10 +200,40 @@ (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)) + (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 + ;; distance from side + (cdr mouse-avoidance-banish-distance-from-edge)) + (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. --=-=-= Content-Type: text/plain -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997 --=-=-=--