Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Don't try to get the sheet of NIL. Patch from Juliusz Chroboczek. (I don't know how to trigger this bug, but it's clearly a bug.)
Fix compile dependencies.
Removed some code duplication in dead key handling.
Really Fix dead keys. Now integrated with the gesture reading machinery in standard-extended-input-steeam, so it can be circumvented if you really don't want it by handling events manually.
New click-to-focus policy for text-editor gadgets and panes, implemented for the CLX, Null and gtkairo backends (but gtk_window_get_focus() hand-inserted into gtkairo/ffi.lisp). PORT-KEYBOARD-INPUT-FOCUS is now a trampoline to PORT-FRAME-KEYBOARD-INPUT-FOCUS, a per-port function to set the keyboard focus for a particular frame. Not implemented for Beagle or OpenGL backends. Now Drei / Goatee gadgets don't have to do their own keyboard focus handling on arm/disarm any more. Various kludges sprinkled all over the place to make this so.
Added implementation of `delete-gesture-name'.
Change policy from "gadgets eat all events" to "active gadgets eat all events".
Removed strange half-definition dirt that SBCL could somehow digest, but which caused errors in CLISP.
Many more generic function defgenerics in decls.lisp ... moving some out from their individual files. ... one or two tiny code cleanups I think the only substantive changes in this commit are: * remove the workaround for sbcl-0.9.8 broken forward-referenced-class metacircularity; * delete the unused uniform-design protocol-class; * put the standard-sheet-input-mixin as a superclass of standard-extended-input-stream, not of the protocol class extended-input-stream. If someone wants to tell me that these things are wrong, that's fine; at least some things appear still to work. Now we only emit 209 style warnings when loading mcclim under sbcl. (When compiling and loading, it's closer to 500). This commit cures all but a few redefinition style-warnings -- so now almost all generic functions are defined before the first method definition is seen. It doesn't cure implicit definition of generic function style warnings, so there are probably plenty of specified generic functions which are not explicitly defined. (Leaving aside the issues with unspecified generic functions) TODO: * DEFGENERIC* forward declarations * specified methods and macros * specified special variables * unification of protocol-classes and decls
Patches from dtc for Scieneer Common Lisp, and a few other fixes too.
Fixed destination highlighting for drag-and-drop translators. Added documentation for dnd translators. Corrected the default value for modifier-state in find-innermost-applicable-presentation and friends. This isn't as big as it looks :)
Move most protocol class definitions into protocol-classes.lisp, which is compiled and loaded early. Some class definitions, which had slot definitions that I didn't have the stomach to tease apart, stayed behind. Replace the presentation documentation state mechanism with updating-output so that other functions / programs can write to the pointer documentation area and not screw things up. We still use the state to actually print the documentation.
Rearrange pointer class hierarchy a little, according to mail message "pointer protocol class / standard-pointer" mcclim-devel 2005-06-15.
Fixed presentation highlighting to do the right thing in the :SINGLE-BOX NIL case. Fixed Goatee to not draw anything when drawing is not enabled for the stream. Changed input editing streams to never put activation gestures in the input buffer. There is only one place to receive an activation gesture: the end of the buffer. If the user types an activation gesture, the insertion pointer is moved to the end of the buffer. Fixed various problems with accepting-values. In particular, the insertion pointer does not need to be left at the end of a field when the user exits the dialog. Also, the behavior in the presence of errors new: if an error occurs while the user is typing in an accepting-values field, the bell is beeped and the insertion pointer is positioned before the stream position where the error occured.
Save the last character returned by stream-read-gesture for unreading
Improved (fixed) support for keystroke accelerators --------------------------------------------------- File commands.lisp: add-command-to-command-table: When given a keystroke, call add-keystroke-to-command-table. %add-keystroke-item: Changed error handling logic, added support for literal keystroke specifications remove-keystroke-from-command-table: When searching keystroke accelerators, use :test #'equal New function partial-command-from-name, which given a command name produces a command whose requried args are *unsupplied-argument-marker* lookup-keystroke-command-item: Add support for keystroke accelerators which specify only a command name. A partial command is created via partial-command-from-name. Class command-parsers: Added slots required-args and keyword-args, needed in order to construct a partial command. %define-command: Init required/keyword arguments in command-parser object read-command-using-keystrokes: Invoke partial command parser if a partial command is returned. File events.lisp: Add :wheel-up and :wheel-down to key-modifier-state-match-p button mapping. (This has been sitting around my tree for months, but somehow never got committed..) File frames.lisp: In read-frame-command, supply ':use-keystrokes t' by default. File stream-input.lisp: Factored the bulk of add-gesture-name out into a new function, realize-gesture-spec, which converts modifier names to symbols and does general massaging of the gesture specification. Added translations for :wheel-up, :wheel-down device names, which have also been sitting around my tree for months. realize-gesture-spec: Don't signal an error if the device-name is not found in +name-to-char+, doing so would preclude the use of port-specific keyboard gestures. %event-matches-gesture: In the method specialized on key-press-event and gesture type :keyboard, compare against the key-name of the event when there is no key-character available, so that we can match keys/gestures outside the CL character set via device names. event-matches-gesture-name-p: Added the ability to match against other than defined gesture-names. Specifically, it can now match against a 'physical' gesture-spec of the form (type device-name modifier-state). Matching against characters is also supported. Fix random typo. Misc changes ------------ recording.lisp: Comment on 'constructor' arg to invoke-with-output-recording-options, use of untransform on rotation angles. table-formatting.lisp: Supply required 'constructor' arg, which was missing.
Replaced every call to keyboard-event-key-name by a call to keyboard-event-character, since the two mostly returned the same thing anyway. The plan is to start modifying the contents of the key-name slot of keyboard events to conform to the spec. The spec says it should contain a port-specific symbol, so the plan is to use the names in keysymdef.lisp (which were derived from the C header file located in /usr/X11R6/include/X11/keysymdef.h on some machines).
STREAM-PEEK-CHAR (STANDARD-EXTENDED-INPUT-STREAM): Small fix, argument to read-gesture was missing.
Implement command-enabled and (setf command-enabled). This includes a test in command presentation translators that checks if the command is currently enabled. Menu items are disabled if the command is disabled, though buttons on menu bars aren't handled yet. Created a command com-describe-presentation that can be enabled/disabled seperately from com-describe.
Changes to turn off, and then turn on again, presentation highlighting when redrawing a pane, with the aim of fixing various screwups that happen with tricky presentation highlighting that uses +flipping-ink+. As part of this I removed redisplay-changed-panes and rewrote the CLIM standard functions redisplay-frame-panes, redisplay-frame-pane, and pane-redisplay-needed. I did various refactoring among methods on panes, frames, and updating-output-mixin too. Moved a bunch of :initform forms to :default-initargs. Random (declare (ignore ...)) to shut up compiler warnings.
Plausable implementation of presentation-single-box Some work-in-progress on window streams "Fix" the Macintosh issue where the Delete key doesn't work Make some changes suggested by Strandh to flexivector and refactor it so flexivectors with general contents can be easily derived. Add note about CMUCL and mp::*idle-process* Add note about run-test
snapshot of scigraph for sbcl
Converting #\Backspace to #\Delete is silly, so don't do that. CL has a #\Backspace character anyway, whereas #\Delete is mapped to #\Rubout, exactly the opposite of what we want.
Accepting-values. It's ugly and has some cursor glitches but otherwise appears to work. Various changes to Goatee were made to support accepting-values. Also, Goatee screen lines are now better-behaved output records.
Fixed up a couple erroneous calls to ERROR. (~S missing argument)
make all of the package names passed to in-package be lowercase keywords for ACL's java mode
fix use of string-stream that I didn't catch.
Hack around lack of string stream class in CMUCL/SBCL
3 sets of additions/changes/fixes: presentation-replace-input Bugs I fixed while at ILC, including implementing accept-from-string. Fixes made in the course of getting cl-reversi to work (it mostly does modulo display timing issues). This includes a revamping of command tables, menus and keystrokes.
Commit of patch submitted my Oliver Markovic. Original message: Message-ID: <email@example.com> From: Oliver Markovic <firstname.lastname@example.org> To: email@example.com Subject: Protocol Classes Date: Sat, 09 Nov 2002 22:06:50 +0100 Hi, Attached is a patch, which uses DEFINE-PROTOCOL-CLASS for all protocol classes as defined in the spec (not all were using that macro). I also added simple docstrings to the macro and changed the error message to something more civil :-) This should also add some required predicates, which were missing. I also noticed that protocol classes were given slots contradicting the definition in 2.5: "A protocol class is an "abstract" class with no slots and no methods (except perhaps for some default methods) [...]". But I guess that's no serious deviation from the spec though. greetz, -- Oliver Markovic
Added and enabled pointer motion hints for stream panes. This seems to make performance snappier on "slow" systems like my iBook + openmcl + XDarwin setup. Added a sheet-motion-hints interface to sheets so that motion hints can be selectively disabled. I added support to tracking-pointer to turn motion hints off; I'm not sure if that's the right thing or not.
Uncommented menu-choose.lisp from the system definition. I'm using it so it's not experimental, damn it :) Possibilities gestures for command completion. C-/ and right mouse bring up possibilities menus. Make user-command-table inherit from global-command-table. Implement keyword arguments in commands. Implement the "read" part of the pointer protocol. Added accept method for sequence presentation type. Change handling of *null-presentation*. This isn't traversed in find-applicable-translators / map-applicable-translators anymore; it's handeld in find-innermost-presentation-match. Gave a raised appearance to menus drawn with menu-choose and friends. Someone who knows what they're doing should look over what I did. Steps towards implementing line wrap in Goatee. Fixed bug in insert-obj-before pointed out by someone on IRC.
Handle key events for modifier keys in order to keep track of modifier state. Implement keyboard-event-character. Store coordinates of pointer in key events. Don't set the sheet of key events to the sheet with focus. The wait test and input handler functions now respond to key events. The frame pointer documentation functions react if the modifier state has changed. Make a little protocol out of the pointer documentation update operation. Fix typo: too many n's in find-innnermost-presentation-context.
Editable text fields. Support for the OR presentation type. Added :mcclim to *features*. This was done in support of Jochen Schmidt's weird-irc IRC client, which now works reasonably well under McCLIM, though it isn't as pretty as some of the screenshots at http://www.dataheaven.de/weird-irc/.
Change handle-non-stream-event to handle all events for panes that are not clim-stream-panes.
Changed implementation of low-level streams code once again. This does away with the fill-vector stream buffer and uses the event queue directly. Sorry mikemac, I should have listened to you :) If this change isn't controversial I'll write something in the manual about this deviation from the spec. By default all panes in a frame now share the same event queue. I believe this mimics the behaviour of real CLIM. Could people who aren't doing multiprocessing -- e.g. SBCL users -- give this a try? It should fix the existing streams/presentation breakage.
clean up a bunch of ACL compiler warnings
Major new functionality: command processing with completion. Check out the address-book demo. In it, all commands are available on the command line. Completion and editing work. Prompts for input show up on *debug-io* for now, but otherwise command input is accepted from presentations. 2002-05-08 Tim Moore <firstname.lastname@example.org> * commands.lisp: Implemented the magic argument parser function for commands. Defined presentation types for command-name and command, as well as present and accept methods for them. (command-line-parser, command-line-unparser): Implemented. (define-command): Changed the :name argument to define-command to default to t which goes against the spec; this gives us some interesting command line parsing in the address book demo. I'll change it back when we have presentation translators. * frames.lisp (default-frame-top-level): changed default prompt to "Command: ". Don't echo results of commands. (execute-frame-command): Apply command name to command arguments like the spec says. * input-editing.lisp (stream-read-gesture): set rescanning to nil after reading a new gesture from the underlaying stream. (with-delimiter-gestures): Implement. (input-editor-format): Direct output to *debug-io* for now. (read-token): Handle null gestures, which shouldn't happen, but might after a stream is activated. (simple-parse-error): Fix :format-control initarg. (*completion-gestures*, simple-completion-error, complete-input, complete-from-generator, complete-from-possibilities, completing-from-suggestions): Implement. * ports.lisp (distribute-event): Change sheet of keyboard events to the sheet with input focus. * presentations.lisp (fake-params-args): Generate dummy args for optional and keyword arguments so their defaults don't need to be evaluated at compile time. (define-presentation-method): Set up a block with the same name as the method around the method body. (method presentation-typep): default method. (method presentation-type-of (standard-object)): Don't fail if the presentation type has no parameters. (method description (standard-class)): Add. (highlight-applicable-presentation): Don't pass through button events to the stream; handle them here. (accept): Provide a default :default-type argument if :default is specified. (method stream-accept (standard-input-editing-stream)): add. (accept-1): Respect replace-input argument. (prompt-for-accept): Work on any stream. (prompt-for-accept-1): Tweak default prompt for recursive accept. (method present): Define default method. (accept-using-read): Take read-eval as an argument. (method accept): Define default method. (presentation-method presentation-type-of (string)): Return a more general result. * stream-input.lisp (gesture-name command-delimiter): Define. * system.lisp: Reenable the address book demo. * Backends/CLX/port.lisp (method realize-mirror (clx-port application-pane)): Add to register for pointer motion events. * Goatee/buffer.lisp: Added buffer pointers, which maintain their relative position across inserts and deletes. (bp-buffer-mixin, bp-buffer-line): Classes for buffer pointers. Added all the buffer protocol functions for buffer pointers. * Goatee/editing-stream.lisp (location*-offset*): Old offset-location* :) (offset-location*) New function to return a stream offset from a buffer location. (replace-input): Rewrite to preserve insertion pointer, using buffer pointers. * Goatee/goatee-command.lisp: Add #\tab as an insertable character.
Removed (method handle-event (standard-extended-input-stream t)) which was breaking repainting (and everything else, no doubt) for streams. Split its responsibility into methods on key-press-event and pointer-button-event.
Several changes on the road to real input editing. Make stream-read-char and friends on extended-input-stream understand :eof in the Gray stream protocol. Change handling of activation gestures in input editing: an input gesture causes an editing stream to be activated, after which IP goes to FP and further reads beyond that result in :eof. Make a couple of cleanups suggested by Robert. Push return of default values from accept down into the accept presentation methods. Eat the activation gesture, if any, at the end of input when at top level. Implement abort gestures and accelerator gestures. Define a catch-abort-gestures macro that nicely handles abort gestures.
Fix various problems found by Robert. Repair and/or eliminate a bunch of dynamic-extent declarations that I screwed up.
Fixed a typo in stream-read-line; the value of the :element-type was not quoted.
Make a global choice, based on multiprocessing or not, whether events should be handled immediately or queued up to be serviced by another process. The choice is implemented by the classes clim-sheet-input-mixin and clim-repainting-mixin, from which all panes inherit. These classes' superclasses are conditionalized on whether or not the implementation is capable of multiprocessing. When multiprocessing there is a single event queue per frame. This is implemented by queue-event on pane classes. The event loop is implemented in stream-input-wait. In single processing mode, stream-input-wait calls process-next-event and handles events immediately. When multiprocessing, stream-input-wait reads events from the frame event queue and handles them. The function clim-extensions:simple-event-loop is supplied for applications which do not loop reading from a stream; various examples have been changed to use it. In stream-read-gesture/stream-input-wait the input-wait-test function is not expected to block anymore; nor is the input-wait-handler expected to dispatch events. input-wait-handler is responsible for consuming events that should not be seen by anyone else. input-context-wait-test and highlight-applicable-presentation have been rewritten to reflect this. The adjustable-array buffer for extended-input-streams has been added back in. A typo in %event-matches-gesture has been fixed. Default methods for map-over-output-records-containing-position and map-over-output-records-overlapping-region have been added. The cursor implementation has been broken out into a cursor-mixin so I can snarf it for Goatee :)
Checkin to get context sensitive input working with multi-threaded process-next-event. Set input focus in run-frame-top-level. Assume that someday, in the presence of multiple frames, we'll do the right thing with switching the input focus from frame to frame. Added a frame-intercept-event-queue to frames. process-next-event examines the frame associated with the pane that has input focus and puts device events on that frame's queue if desired. Rewrote stream-input-wait, stream-read-gesture and the with-input-context input-test and input-handler functions per mikemac's suggestions. The with-input-context stuff uses the intercept queue mechanism now. Fixed a typo in gadgets.lisp.
first cut at port-wait-on-event-processing
make window-manager-delete-event work
added support for :return as an activation gesture, renamed newline to :newline
unify the sheet-event-queue and the input buffer
Context-sensitive presentations (sans translators) and highlighting. Fix pointer-event-[xy] to use the sheet native transformation correctly. Check out the presentation-test demo; not much, but I think it's cool :)
Implement extended input streams, stub of input editing streams and enough of encapsulating streams to support input editing. A few random bug fixes too.
Grey streams are included by package.lisp as per Paul Werkowski
more output history work -- still not right but closer
Added copyright notice to reflect modifications.
Added use-package of ext for CMU CL to get Gray streams. Added (shadow 'collect) for CMU to avoid conflict when importing extensions package.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|