From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Subject: Re: Patch for windowing problem Date: Fri, 17 Jul 2009 01:26:00 +0200 Message-ID: <87k5281a7r.fsf@bzg.ath.cx> References: <4A5F8060.3060607@sift.info> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MRaL7-00045T-JQ for emacs-orgmode@gnu.org; Thu, 16 Jul 2009 19:26:13 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MRaL2-00042B-SK for emacs-orgmode@gnu.org; Thu, 16 Jul 2009 19:26:12 -0400 Received: from [199.232.76.173] (port=43198 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MRaL2-000428-Lb for emacs-orgmode@gnu.org; Thu, 16 Jul 2009 19:26:08 -0400 Received: from mail-pz0-f202.google.com ([209.85.222.202]:53101) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MRaL2-0002o4-4z for emacs-orgmode@gnu.org; Thu, 16 Jul 2009 19:26:08 -0400 Received: by pzk40 with SMTP id 40so279929pzk.14 for ; Thu, 16 Jul 2009 16:26:07 -0700 (PDT) In-Reply-To: <4A5F8060.3060607@sift.info> (Robert Goldman's message of "Thu, 16 Jul 2009 14:32:48 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Robert Goldman Cc: emacs-orgmode@gnu.org Yes, would be nice if the Aquamacs crowd could test this! Thanks Robert for the patch. Robert Goldman writes: > In an earlier posting, I mentioned that I had a problem with org-mode on > aquamacs; the cursor (really input focus) was getting "trapped" in a > different frame when the *Calendar* buffer was not in the same frame as > the source of the org-schedule command (either an org-mode buffer or a > remember buffer). The attached patch to org.el fixes this problem for > me. Would some of you all mind testing it out? It just wraps current > frame save and pop around the use of the calendar (frames aren't managed > by the save-excursion and save-window-excursion that already wrap this > interaction). > > Thanks, > Robert > index feaa115..be07d58 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -12010,6 +12010,15 @@ So these are more for recording a certain time/date." > (defvar org-read-date-history nil) > (defvar org-read-date-final-answer nil) > > +(defmacro save-frame-excursion (&rest body) > + "Carry out some operations and then return to the currently > +selected frame." > + (let ((frame-var (gensym "FRAME"))) > + `(let ((,frame-var (selected-frame))) > + (unwind-protect > + (progn ,@body) > + (select-frame-set-input-focus ,frame-var) )))) > + > (defun org-read-date (&optional with-time to-time from-string prompt > default-time default-input) > "Read a date, possibly a time, and make things smooth for the user. > @@ -12088,77 +12097,78 @@ user." > (org-read-date-popup-calendar > (save-excursion > (save-window-excursion > - (calendar) > - (calendar-forward-day (- (time-to-days def) > - (calendar-absolute-from-gregorian > - (calendar-current-date)))) > - (org-eval-in-calendar nil t) > - (let* ((old-map (current-local-map)) > - (map (copy-keymap calendar-mode-map)) > - (minibuffer-local-map (copy-keymap minibuffer-local-map))) > - (org-defkey map (kbd "RET") 'org-calendar-select) > - (org-defkey map (if (featurep 'xemacs) [button1] [mouse-1]) > - 'org-calendar-select-mouse) > - (org-defkey map (if (featurep 'xemacs) [button2] [mouse-2]) > - 'org-calendar-select-mouse) > - (org-defkey minibuffer-local-map [(meta shift left)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-month 1)))) > - (org-defkey minibuffer-local-map [(meta shift right)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-month 1)))) > - (org-defkey minibuffer-local-map [(meta shift up)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-year 1)))) > - (org-defkey minibuffer-local-map [(meta shift down)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-year 1)))) > - (org-defkey minibuffer-local-map [?\e (shift left)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-month 1)))) > - (org-defkey minibuffer-local-map [?\e (shift right)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-month 1)))) > - (org-defkey minibuffer-local-map [?\e (shift up)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-year 1)))) > - (org-defkey minibuffer-local-map [?\e (shift down)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-year 1)))) > - (org-defkey minibuffer-local-map [(shift up)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-week 1)))) > - (org-defkey minibuffer-local-map [(shift down)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-week 1)))) > - (org-defkey minibuffer-local-map [(shift left)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-backward-day 1)))) > - (org-defkey minibuffer-local-map [(shift right)] > - (lambda () (interactive) > - (org-eval-in-calendar '(calendar-forward-day 1)))) > - (org-defkey minibuffer-local-map ">" > - (lambda () (interactive) > - (org-eval-in-calendar '(scroll-calendar-left 1)))) > - (org-defkey minibuffer-local-map "<" > - (lambda () (interactive) > - (org-eval-in-calendar '(scroll-calendar-right 1)))) > - (run-hooks 'org-read-date-minibuffer-setup-hook) > - (unwind-protect > - (progn > - (use-local-map map) > - (add-hook 'post-command-hook 'org-read-date-display) > - (setq org-ans0 (read-string prompt default-input > - 'org-read-date-history nil)) > - ;; org-ans0: from prompt > - ;; org-ans1: from mouse click > - ;; org-ans2: from calendar motion > - (setq ans (concat org-ans0 " " (or org-ans1 org-ans2)))) > - (remove-hook 'post-command-hook 'org-read-date-display) > - (use-local-map old-map) > - (when org-read-date-overlay > - (org-delete-overlay org-read-date-overlay) > - (setq org-read-date-overlay nil))))))) > + (save-frame-excursion > + (calendar) > + (calendar-forward-day (- (time-to-days def) > + (calendar-absolute-from-gregorian > + (calendar-current-date)))) > + (org-eval-in-calendar nil t) > + (let* ((old-map (current-local-map)) > + (map (copy-keymap calendar-mode-map)) > + (minibuffer-local-map (copy-keymap minibuffer-local-map))) > + (org-defkey map (kbd "RET") 'org-calendar-select) > + (org-defkey map (if (featurep 'xemacs) [button1] [mouse-1]) > + 'org-calendar-select-mouse) > + (org-defkey map (if (featurep 'xemacs) [button2] [mouse-2]) > + 'org-calendar-select-mouse) > + (org-defkey minibuffer-local-map [(meta shift left)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-month 1)))) > + (org-defkey minibuffer-local-map [(meta shift right)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-month 1)))) > + (org-defkey minibuffer-local-map [(meta shift up)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-year 1)))) > + (org-defkey minibuffer-local-map [(meta shift down)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-year 1)))) > + (org-defkey minibuffer-local-map [?\e (shift left)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-month 1)))) > + (org-defkey minibuffer-local-map [?\e (shift right)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-month 1)))) > + (org-defkey minibuffer-local-map [?\e (shift up)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-year 1)))) > + (org-defkey minibuffer-local-map [?\e (shift down)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-year 1)))) > + (org-defkey minibuffer-local-map [(shift up)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-week 1)))) > + (org-defkey minibuffer-local-map [(shift down)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-week 1)))) > + (org-defkey minibuffer-local-map [(shift left)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-backward-day 1)))) > + (org-defkey minibuffer-local-map [(shift right)] > + (lambda () (interactive) > + (org-eval-in-calendar '(calendar-forward-day 1)))) > + (org-defkey minibuffer-local-map ">" > + (lambda () (interactive) > + (org-eval-in-calendar '(scroll-calendar-left 1)))) > + (org-defkey minibuffer-local-map "<" > + (lambda () (interactive) > + (org-eval-in-calendar '(scroll-calendar-right 1)))) > + (run-hooks 'org-read-date-minibuffer-setup-hook) > + (unwind-protect > + (progn > + (use-local-map map) > + (add-hook 'post-command-hook 'org-read-date-display) > + (setq org-ans0 (read-string prompt default-input > + 'org-read-date-history nil)) > + ;; org-ans0: from prompt > + ;; org-ans1: from mouse click > + ;; org-ans2: from calendar motion > + (setq ans (concat org-ans0 " " (or org-ans1 org-ans2)))) > + (remove-hook 'post-command-hook 'org-read-date-display) > + (use-local-map old-map) > + (when org-read-date-overlay > + (org-delete-overlay org-read-date-overlay) > + (setq org-read-date-overlay nil)))))))) > > (t ; Naked prompt only > (unwind-protect > _______________________________________________ > Emacs-orgmode mailing list > Remember: use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode -- Bastien