--- /dev/null
+Return-Path: <amdragon@mit.edu>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by olra.theworths.org (Postfix) with ESMTP id 28F2E431FAF\r
+ for <notmuch@notmuchmail.org>; Mon, 7 Jan 2013 13:20:19 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+ tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+ by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id L1q3r1sDa6+T for <notmuch@notmuchmail.org>;\r
+ Mon, 7 Jan 2013 13:20:18 -0800 (PST)\r
+Received: from dmz-mailsec-scanner-1.mit.edu (DMZ-MAILSEC-SCANNER-1.MIT.EDU\r
+ [18.9.25.12])\r
+ by olra.theworths.org (Postfix) with ESMTP id 4524C431FAE\r
+ for <notmuch@notmuchmail.org>; Mon, 7 Jan 2013 13:20:18 -0800 (PST)\r
+X-AuditID: 1209190c-b7fa86d000001d37-9e-50eb3c111241\r
+Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\r
+ by dmz-mailsec-scanner-1.mit.edu (Symantec Messaging Gateway) with SMTP\r
+ id 81.8E.07479.11C3BE05; Mon, 7 Jan 2013 16:20:17 -0500 (EST)\r
+Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])\r
+ by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id r07LKAZK029031; \r
+ Mon, 7 Jan 2013 16:20:11 -0500\r
+Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91])\r
+ (authenticated bits=0)\r
+ (User authenticated as amdragon@ATHENA.MIT.EDU)\r
+ by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id r07LK8PD003845\r
+ (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT);\r
+ Mon, 7 Jan 2013 16:20:09 -0500 (EST)\r
+Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.80)\r
+ (envelope-from <amdragon@mit.edu>)\r
+ id 1TsK76-00010G-Go; Mon, 07 Jan 2013 16:20:08 -0500\r
+Date: Mon, 7 Jan 2013 16:20:08 -0500\r
+From: Austin Clements <amdragon@MIT.EDU>\r
+To: Mark Walters <markwalters1009@gmail.com>\r
+Subject: Re: [PATCH v2] emacs: show: make buttons select window\r
+Message-ID: <20130107212008.GM17581@mit.edu>\r
+References: <20130107202221.GL17581@mit.edu>\r
+ <1357592840-31155-1-git-send-email-markwalters1009@gmail.com>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+Content-Disposition: inline\r
+In-Reply-To: <1357592840-31155-1-git-send-email-markwalters1009@gmail.com>\r
+User-Agent: Mutt/1.5.21 (2010-09-15)\r
+X-Brightmail-Tracker:\r
+ H4sIAAAAAAAAA+NgFvrHIsWRmVeSWpSXmKPExsUixCmqrSto8zrA4PgjA4vVc3ksrt+cyezA\r
+ 5LFz1l12j2erbjEHMEVx2aSk5mSWpRbp2yVwZTTuWMFUsEa14tGh3UwNjHPkuhg5OSQETCR2\r
+ Xm1mgbDFJC7cW88GYgsJ7GOUODzHG8Jezyjx5JUNhH2BSeLZFYUuRi4gewmjxK6lPawgCRYB\r
+ FYlNv68ygdhsAhoS2/YvZwSxRQR0JG4fWsAOYjMLSEt8+90MVMPBISxgL/H2gy5ImBeoZOf6\r
+ 2+wgYSGBHInVDyogwoISJ2c+YYHo1JK48e8lWCfIlOX/OEDCnAJeEjMuHgK7WBTogCknt7FN\r
+ YBSahaR7FpLuWQjdCxiZVzHKpuRW6eYmZuYUpybrFicn5uWlFuka6uVmluilppRuYgQHsyTP\r
+ DsY3B5UOMQpwMCrx8F4weBUgxJpYVlyZe4hRkoNJSZR3leXrACG+pPyUyozE4oz4otKc1OJD\r
+ jBIczEoivN8eAJXzpiRWVqUW5cOkpDlYlMR5L6fc9BcSSE8sSc1OTS1ILYLJynBwKEnwRloD\r
+ DRUsSk1PrUjLzClBSDNxcIIM5wEa3glSw1tckJhbnJkOkT/FqCglztsLkhAASWSU5sH1wpLN\r
+ K0ZxoFeEeTNAqniAiQqu+xXQYCagwamPn4MMLklESEk1MHpksziKTV813WV1wE7XH2wscdxf\r
+ vjvdTD5oI7sqWCX4MN9fv1T5j0LdL030Z8Ut49NcKb7JZuut14vbpX4dPblCNDp0u37cEqci\r
+ 1oOL25vecOuWl9Rvdfx/cpm1v3LM7JyGpv0n1G/Kvtm35danjsbakEmHZvb8bMjV8dow6db/\r
+ KfPmySkW9CqxFGckGmoxFxUnAgB4DGOWEQMAAA==\r
+Cc: notmuch@notmuchmail.org\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Mon, 07 Jan 2013 21:20:19 -0000\r
+\r
+LGTM.\r
+\r
+Quoth Mark Walters on Jan 07 at 9:07 pm:\r
+> Emacs has two button type objects: widgets (as used for saved searches\r
+> in notmuch-hello) and buttons as used by parts/citations and id links\r
+> in notmuch-show. These two behave subtly differently when clicked with\r
+> the mouse: widgets select the window clicked before running the\r
+> action, buttons do not.\r
+> \r
+> This patch makes all of these behave the same: clicking always selects\r
+> the clicked window. It does this by defining a notmuch-button-type\r
+> supertype that the other notmuch buttons can inherit from. This\r
+> supertype binds the mouse-action to select the window and then\r
+> activate the button.\r
+> ---\r
+> \r
+> This versions fixes most of the comments raised by Austin's review.\r
+> The one change I didn't make was changing :supertype to 'supertype. In\r
+> principle I agree with Austin but the : form is used for inheritance\r
+> for other notmuch buttons in wash and crypto.\r
+> \r
+> Best wishes\r
+> \r
+> Mark\r
+> \r
+> \r
+> \r
+> \r
+> emacs/notmuch-crypto.el | 5 ++++-\r
+> emacs/notmuch-lib.el | 15 +++++++++++++++\r
+> emacs/notmuch-show.el | 4 +++-\r
+> emacs/notmuch-wash.el | 3 ++-\r
+> 4 files changed, 24 insertions(+), 3 deletions(-)\r
+> \r
+> diff --git a/emacs/notmuch-crypto.el b/emacs/notmuch-crypto.el\r
+> index 83e5d37..5233824 100644\r
+> --- a/emacs/notmuch-crypto.el\r
+> +++ b/emacs/notmuch-crypto.el\r
+> @@ -19,6 +19,8 @@\r
+> ;;\r
+> ;; Authors: Jameson Rollins <jrollins@finestructure.net>\r
+> \r
+> +(require 'notmuch-lib)\r
+> +\r
+> (defcustom notmuch-crypto-process-mime nil\r
+> "Should cryptographic MIME parts be processed?\r
+> \r
+> @@ -76,7 +78,8 @@ mode."\r
+> (define-button-type 'notmuch-crypto-status-button-type\r
+> 'action (lambda (button) (message (button-get button 'help-echo)))\r
+> 'follow-link t\r
+> - 'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts.")\r
+> + 'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts."\r
+> + :supertype 'notmuch-button-type)\r
+> \r
+> (defun notmuch-crypto-insert-sigstatus-button (sigstatus from)\r
+> (let* ((status (plist-get sigstatus :status))\r
+> diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el\r
+> index 0407f8a..6836192 100644\r
+> --- a/emacs/notmuch-lib.el\r
+> +++ b/emacs/notmuch-lib.el\r
+> @@ -97,6 +97,21 @@ For example, if you wanted to remove an \"inbox\" tag and add an\r
+> :group 'notmuch-search\r
+> :group 'notmuch-show)\r
+> \r
+> +;; By default clicking on a button does not select the window\r
+> +;; containing the button (as opposed to clicking on a widget which\r
+> +;; does). This means that the button action is then executed in the\r
+> +;; current selected window which can cause problems if the button\r
+> +;; changes the buffer (e.g., id: links) or moves point.\r
+> +;;\r
+> +;; This provides a button type which overrides mouse-action so that\r
+> +;; the button's window is selected before the action is run. Other\r
+> +;; notmuch buttons can get the same behaviour by inheriting from this\r
+> +;; button type.\r
+> +(define-button-type 'notmuch-button-type\r
+> + 'mouse-action (lambda (button)\r
+> + (select-window (posn-window (event-start last-input-event)))\r
+> + (button-activate button)))\r
+> +\r
+> (defun notmuch-version ()\r
+> "Return a string with the notmuch version number."\r
+> (let ((long-string\r
+> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el\r
+> index 5751d98..059194d 100644\r
+> --- a/emacs/notmuch-show.el\r
+> +++ b/emacs/notmuch-show.el\r
+> @@ -469,7 +469,8 @@ message at DEPTH in the current thread."\r
+> 'action 'notmuch-show-part-button-default\r
+> 'keymap 'notmuch-show-part-button-map\r
+> 'follow-link t\r
+> - 'face 'message-mml)\r
+> + 'face 'message-mml\r
+> + :supertype 'notmuch-button-type)\r
+> \r
+> (defvar notmuch-show-part-button-map\r
+> (let ((map (make-sparse-keymap)))\r
+> @@ -1075,6 +1076,7 @@ buttons for a corresponding notmuch search."\r
+> ;; Remove the overlay created by goto-address-mode\r
+> (remove-overlays (first link) (second link) 'goto-address t)\r
+> (make-text-button (first link) (second link)\r
+> + :type 'notmuch-button-type\r
+> 'action `(lambda (arg)\r
+> (notmuch-show ,(third link)))\r
+> 'follow-link t\r
+> diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el\r
+> index d6db4fa..826b6f4 100644\r
+> --- a/emacs/notmuch-wash.el\r
+> +++ b/emacs/notmuch-wash.el\r
+> @@ -115,7 +115,8 @@ lower).")\r
+> (define-button-type 'notmuch-wash-button-invisibility-toggle-type\r
+> 'action 'notmuch-wash-toggle-invisible-action\r
+> 'follow-link t\r
+> - 'face 'font-lock-comment-face)\r
+> + 'face 'font-lock-comment-face\r
+> + :supertype 'notmuch-button-type)\r
+> \r
+> (define-button-type 'notmuch-wash-button-citation-toggle-type\r
+> 'help-echo "mouse-1, RET: Show citation"\r