Update of /project/beirc/cvsroot/beirc In directory clnet:/tmp/cvs-serv9260
Modified Files: application.lisp Log Message: Apply patch by Troels Henriksen to not handle events twice in some situations.
--- /project/beirc/cvsroot/beirc/application.lisp 2007/09/05 22:27:53 1.92 +++ /project/beirc/cvsroot/beirc/application.lisp 2008/05/22 09:52:56 1.93 @@ -1032,38 +1032,40 @@ read-frame-command will handle it and save the input line."))
#+mcclim -(defmethod frame-input-context-button-press-handler :around ((frame beirc) stream event) +(defmethod frame-input-context-button-press-handler ((frame beirc) stream event) "Unportable method for saving the current input buffer in case the user invokes a command while typing." (let* ((x (pointer-event-x event)) (y (pointer-event-y event)) (window (event-sheet event)) (presentation (frame-find-innermost-applicable-presentation frame *input-context* stream x y :event event))) - (when presentation - (multiple-value-bind (p translator context) - (climi::find-innermost-presentation-match *input-context* - presentation - *application-frame* - (event-sheet event) - x y - event - 0 - nil) - (when p - (multiple-value-bind (object ptype options) - (call-presentation-translator translator - p - (input-context-type context) - *application-frame* - event - window - x y) - (declare (ignore object options)) - (when (and ptype (presentation-subtypep ptype 'command) - (boundp 'climi::*current-input-stream*) climi::*current-input-stream*) - (restart-case (signal 'invoked-command-by-clicking) - (acknowledged ())))))))) - (call-next-method)) + (if presentation + (multiple-value-bind (p translator context) + (climi::find-innermost-presentation-match *input-context* + presentation + *application-frame* + (event-sheet event) + x y + event + 0 + nil) + (if p + (multiple-value-bind (object ptype options) + (call-presentation-translator translator + p + (input-context-type context) + *application-frame* + event + window + x y) + (when ptype + (when (and (presentation-subtypep ptype 'command) + (boundp 'climi::*current-input-stream*) climi::*current-input-stream*) + (restart-case (signal 'invoked-command-by-clicking) + (acknowledged ()))) + (funcall (cdr context) object ptype event options))) + (call-next-method))) + (call-next-method))))
(defmethod read-frame-command ((frame beirc) &key (stream *standard-input*)) (let ((bad-input nil)) @@ -1108,14 +1110,15 @@ (simple-completion-error (c) #+mcclim (let ((preliminary-line (save-input-line stream frame))) - (setf (incomplete-input (current-receiver frame)) - (subseq preliminary-line 0 - (search (climi::completion-error-input-so-far c) - preliminary-line)) - bad-input (subseq preliminary-line - (search (climi::completion-error-input-so-far c) - preliminary-line)) - force-restore-input-state t)) + (when (current-receiver frame) + (setf (incomplete-input (current-receiver frame)) + (subseq preliminary-line 0 + (search (climi::completion-error-input-so-far c) + preliminary-line)) + bad-input (subseq preliminary-line + (search (climi::completion-error-input-so-far c) + preliminary-line)) + force-restore-input-state t))) (beep) nil))) (t