Update of /project/mcclim/cvsroot/mcclim In directory common-lisp.net:/tmp/cvs-serv13053
Modified Files: frames.lisp package.lisp ports.lisp Log Message: Fix mixed up arguments to set-port-keyboard-focus.
Renamed set-port-keyboard-focus to %set-port-keyboard-focus to avoid confusion with the CLIM 2.0 function port-keyboard-input-focus.
Added a timestamp keyword to %set-port-keyboard-focus (not used by any callers yet).
Added some comments about how the keyboard focus functions are connected.
Date: Tue Feb 22 04:14:26 2005 Author: ahefner
Index: mcclim/frames.lisp diff -u mcclim/frames.lisp:1.105 mcclim/frames.lisp:1.106 --- mcclim/frames.lisp:1.105 Wed Feb 2 12:33:58 2005 +++ mcclim/frames.lisp Tue Feb 22 04:14:17 2005 @@ -1280,7 +1280,7 @@ (declare (ignore pane state)))
(defmethod (setf keyboard-input-focus) :after (focus frame) - (set-port-keyboard-focus focus (port frame))) + (%set-port-keyboard-focus (port frame) focus))
(defmethod (setf client-setting) (value frame setting) (setf (getf (client-settings frame) setting) value))
Index: mcclim/package.lisp diff -u mcclim/package.lisp:1.47 mcclim/package.lisp:1.48 --- mcclim/package.lisp:1.47 Tue Jan 11 14:35:18 2005 +++ mcclim/package.lisp Tue Feb 22 04:14:26 2005 @@ -1942,7 +1942,7 @@ #:port-set-sheet-region #:port-set-sheet-transformation #:port-ungrab-pointer - #:set-port-keyboard-focus + #:%set-port-keyboard-focus #:set-sheet-pointer-cursor #:synthesize-pointer-motion-event #:text-style-character-width
Index: mcclim/ports.lisp diff -u mcclim/ports.lisp:1.47 mcclim/ports.lisp:1.48 --- mcclim/ports.lisp:1.47 Sun Jul 11 21:48:16 2004 +++ mcclim/ports.lisp Tue Feb 22 04:14:26 2005 @@ -72,9 +72,26 @@ ))
;; Keyboard focus is now managed per-frame rather than per-port, -;; which makes a lot of sense. The CLIM spec suggests this in a -;; "Minor Issue". So, redirect PORT-KEYBOARD-INPUT-FOCUS to the -;; current application frame for compatibility. +;; which makes a lot of sense (less sense in the presense of +;; multiple top-level windows, but no one does that yet). The CLIM +;; spec suggests this in a "Minor Issue". So, redirect +;; PORT-KEYBOARD-INPUT-FOCUS to the current application frame +;; for compatibility. + +;; Note: This would prevent you from using the function the +;; function to query who currently has the focus. I don't +;; know if this is an intended use or not. + +;; The big picture: +;; PORT-KEYBOARD-INPUT-FOCUS is defined by CLIM 2.0 +;; Our default method on this delegates to KEYBOARD-INPUT-FOCUS +;; on the current application frame. +;; %SET-PORT-KEYBOARD-FOCUS is the function which +;; should be implemented in a McCLIM backend and +;; does the work of changing the focus. +;; A method on (SETF KEYBOARD-INPUT-FOCUS) brings them together, +;; calling %SET-PORT-KEYBOARD-FOCUS. + (defmethod port-keyboard-input-focus (port) (declare (ignore port)) (when *application-frame* @@ -84,14 +101,14 @@ (when focus (if (pane-frame focus) (setf (keyboard-input-focus (pane-frame focus)) focus) - (set-port-keyboard-focus focus port)))) + (%set-port-keyboard-focus port focus))))
;; This is not in the CLIM spec, but since (setf port-keyboard-input-focus) ;; now calls (setf keyboard-input-focus), we need something concrete the ;; backend can implement to set the focus. -(defmethod set-port-keyboard-focus (focus port) - (declare (ignore focus)) - (warn "SET-PORT-KEYBOARD-FOCUS is not implemented on ~W" port)) +(defmethod %set-port-keyboard-focus (port focus &key timestamp) + (declare (ignore focus)) + (warn "%SET-PORT-KEYBOARD-FOCUS is not implemented on ~W" port))
(defun find-port (&key (server-path *default-server-path*))