ViewVC logotype

Log of /mcclim/input.lisp

Parent Directory Parent Directory | Revision Log Revision Log

Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.39 - (view) (annotate) - [select for diffs]
Sun Dec 16 23:20:10 2007 UTC (6 years, 4 months ago) by dlichteblau
Branch: MAIN
CVS Tags: HEAD, McCLIM-0-9-6
Changes since 1.38: +2 -1 lines
Diff to previous 1.38 , to selected 1.15
Fixed EVENT-QUEUE-READ-WITH-TIMEOUT to return on timeout.  Previously it
would just continue silently.

	* input.lisp (EVENT-QUEUE-READ-WITH-TIMEOUT): return if
	condition-wait returns nil.

	* Lisp-Dep/mp-sbcl.lisp (CONDITION-WAIT): Return T from a
	normalcondition wait and NIL from a timeout, like mp-acl.lisp does

Revision 1.38 - (view) (annotate) - [select for diffs]
Sun Dec 16 22:41:51 2007 UTC (6 years, 4 months ago) by dlichteblau
Branch: MAIN
Changes since 1.37: +2 -2 lines
Diff to previous 1.37 , to selected 1.15
ignored only if a WAIT-FUNCTION was specified.

Revision 1.37 - (view) (annotate) - [select for diffs]
Sun Jul 9 06:23:22 2006 UTC (7 years, 9 months ago) by ahefner
Branch: MAIN
CVS Tags: McCLIM-0-9-3, McCLIM-0-9-4, McCLIM-0-9-5, mcclim-0-9-4
Changes since 1.36: +0 -39 lines
Diff to previous 1.36 , to selected 1.15
Move scroll wheel code to panes.lisp, since it has nothing to do with
event queues.

Revision 1.36 - (view) (annotate) - [select for diffs]
Sat Jul 8 16:58:36 2006 UTC (7 years, 9 months ago) by ahefner
Branch: MAIN
Changes since 1.35: +1 -1 lines
Diff to previous 1.35 , to selected 1.15
Fix event compression on single-process lisps. This consists of two
changes: 1) Don't use immediate-sheet-input-mixin, and 2) When reading
events from the backend, read all available events in a nonblocking
fashion, so that events which have accumulated since we last checked
can be compressed.

This requires the backend 'get-next-event' to support :timeout 0.
Currently CLX and Beagle appear to do so, while Gtkairo does not.

Revision 1.35 - (view) (annotate) - [select for diffs]
Mon Jan 16 13:16:38 2006 UTC (8 years, 3 months ago) by cfruhwirth
Branch: MAIN
CVS Tags: McCLIM-0-9-2
Changes since 1.34: +1 -1 lines
Diff to previous 1.34 , to selected 1.15
Remove superfluous closing-parenthesis.

Revision 1.34 - (view) (annotate) - [select for diffs]
Fri Jan 13 16:51:03 2006 UTC (8 years, 3 months ago) by cfruhwirth
Branch: MAIN
Changes since 1.33: +23 -18 lines
Diff to previous 1.33 , to selected 1.15
Rewrite dispatch-event for mouse-wheel-scroll-mixin to work with left
and right scrolling wheel buttons.

Revision 1.33 - (view) (annotate) - [select for diffs]
Fri Jul 1 12:59:39 2005 UTC (8 years, 9 months ago) by tmoore
Branch: MAIN
Changes since 1.32: +27 -27 lines
Diff to previous 1.32 , to selected 1.15
In condition-wait, pass through return value of OpenMCL function.

Revision 1.32 - (view) (annotate) - [select for diffs]
Sun Oct 31 01:46:31 2004 UTC (9 years, 5 months ago) by hefner1
Branch: MAIN
CVS Tags: McCLIM-0-9-1
Changes since 1.31: +10 -4 lines
Diff to previous 1.31 , to selected 1.15
In tracking-pointer, don't discard the event when calling the handler.

Fix bug induced by clicking presentations outside of menu-choose menus.

Make mouse-wheel scrolling work when mixed into arbitrary panes.
Defined new GF SCROLL-QUANTUM to control unit of scrolling (defaults
to text-height on stream panes, 10 pixels elsewhere).

Rework CLX frame-manager pane lookup - choose by presense of defined
classes rather than mere existance of a symbol. Added a function
DEFINE-ABSTRACT-PANE-MAPPING to specify alternate mappings to concrete
panes (such as GENERIC-OPTION-PANE, GENERIC-LIST-PANE, which were not
handled correctly before). Hopefully this is a step toward a future
mechanism that addresses the needs of multiple frame-managers and themes.

Implement (reimplement?) GENERIC-LIST-PANE based loosely on the existing
code. Supports single or multiple-item selection modes, toggling items via
control key (with an optional :prefer-single-item initarg which causes
a :nonexclusive list to prefer selecting single items without disallowing
multiple selections). Selection of item ranges via the shift modifier.
Scroll wheel support. Supports :one-of and :some-of aliases for :exclusive
and :non-exclusive (Lispworks compatibility).

Revision 1.31 - (view) (annotate) - [select for diffs]
Fri Apr 23 19:29:48 2004 UTC (9 years, 11 months ago) by moore
Branch: MAIN
Changes since 1.30: +4 -0 lines
Diff to previous 1.30 , to selected 1.15
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.

Revision 1.30 - (view) (annotate) - [select for diffs]
Sun Mar 21 21:49:06 2004 UTC (10 years, 1 month ago) by hefner1
Branch: MAIN
Changes since 1.29: +28 -0 lines
Diff to previous 1.29 , to selected 1.15
Scroll wheel support. Added new defconstants for +pointer-wheel-up/down+,
and changed CLX backend to produce them. Handle scrolling using a
DISPATCH-EVENT method specialized on mouse-wheel-scroll-mixin, and
tentatively mixed this into clim-stream-pane.

Revision 1.29 - (view) (annotate) - [select for diffs]
Mon Feb 23 10:48:28 2004 UTC (10 years, 1 month ago) by moore
Branch: MAIN
Changes since 1.28: +46 -67 lines
Diff to previous 1.28 , to selected 1.15

Prompt for arguments in menu commands.

Work in progress on the OpenGL backend.

Merged Dan Barlow's SBCL condition variable changes for event queues and
provide a reasonable implementation of condition variables for the
implementations. This means no more busy-waiting. I've tested the
OpenMCL version and will test the CMUCL implementation shortly; I
haven't tested ACL or no multiprocessing. I've looked at LispWorks
but don't know yet how to support condition variables there.

Revision 1.28 - (view) (annotate) - [select for diffs]
Sat Nov 8 01:06:51 2003 UTC (10 years, 5 months ago) by hefner1
Branch: MAIN
CVS Tags: McCLIM-0-9
Changes since 1.27: +0 -6 lines
Diff to previous 1.27 , to selected 1.15
Oops, single-threaded CLIM uses a different input mixin on sheets.
Conditionalized some event queue querying so that hopefully it doesn't
break in that situation.

Revision 1.27 - (view) (annotate) - [select for diffs]
Wed Nov 5 11:31:38 2003 UTC (10 years, 5 months ago) by hefner1
Branch: MAIN
Changes since 1.26: +11 -7 lines
Diff to previous 1.26 , to selected 1.15
Cleanups related to port-force-output - adopt/disown-frame are the correct
places to change a queue's port. Also, avoid a trip into the debugger in
case somehow these do not get set, since flushing the output buffer is

Revision 1.26 - (view) (annotate) - [select for diffs]
Mon Nov 3 08:12:34 2003 UTC (10 years, 5 months ago) by strandh
Branch: MAIN
Changes since 1.25: +1 -0 lines
Diff to previous 1.25 , to selected 1.15
Added a few "ignore" declarations to avoid compiler notes.

Revision 1.25 - (view) (annotate) - [select for diffs]
Sun Sep 14 17:55:56 2003 UTC (10 years, 7 months ago) by hefner1
Branch: MAIN
Changes since 1.24: +40 -1 lines
Diff to previous 1.24 , to selected 1.15
Attempt to address the annoying CLX buffering issues, by calling
XLIB:DISPLAY-FORCE-OUTPUT when applications check their event queues.

* Created a subclass of STANDARD-EVENT-QUEUE called PORT-EVENT-QUEUE, which
  knows what port will be putting events on the queue. (Arguably I could've
  just added a port slot to STANDARD-EVENT-QUEUE either directly or through
  a mixin, or even added a slot for a "force output" hook, but this is what
  I've done for now.)

* When creating frames or sheet-with-input-mixins, use PORT-EVENT-QUEUE
  instead and initialize the PORT slot.

* Introduced a new method, PORT-FORCE-OUTPUT.

* Wrote :before methods on EVENT-QUEUE-READ, EVENT-QUEUE-PEEK, etc, which

* Before exiting RUN-FRAME-TOPLEVEL, be sure to get the port from the frame
  manager and call PORT-FORCE-OUTPUT on that too, to make sure the app
  window really goes away when it should instead of being stuck in limbo.

* Also squashed a couple warnings in Backends/CLX/image.lisp from bad format
  strings to ERROR.

Revision 1.24 - (view) (annotate) - [select for diffs]
Sat Jul 26 17:37:57 2003 UTC (10 years, 8 months ago) by gilbert
Branch: MAIN
Changes since 1.23: +1 -1 lines
Diff to previous 1.23 , to selected 1.15
Due to popular demand we spit FORMAT-style debugging messages out to
*trace-output* instead of *debug-io*

Revision 1.23 - (view) (annotate) - [select for diffs]
Thu Apr 24 19:53:18 2003 UTC (10 years, 11 months ago) by hefner1
Branch: MAIN
Changes since 1.22: +53 -41 lines
Diff to previous 1.22 , to selected 1.15
Compression of resize events for toplevel windows.

Revision 1.22 - (view) (annotate) - [select for diffs]
Fri Mar 21 21:36:59 2003 UTC (11 years, 1 month ago) by mikemac
Branch: MAIN
Changes since 1.21: +1 -1 lines
Diff to previous 1.21 , to selected 1.15
make all of the package names passed to in-package be lowercase keywords for ACL's java mode

Revision 1.21 - (view) (annotate) - [select for diffs]
Mon Nov 11 01:02:21 2002 UTC (11 years, 5 months ago) by moore
Branch: MAIN
Changes since 1.20: +2 -2 lines
Diff to previous 1.20 , to selected 1.15
3 sets of additions/changes/fixes:

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.

Revision 1.20 - (view) (annotate) - [select for diffs]
Sun Nov 10 15:56:11 2002 UTC (11 years, 5 months ago) by gilbert
Branch: MAIN
Changes since 1.19: +4 -1 lines
Diff to previous 1.19 , to selected 1.15
Mike McDonald wrote in message <200211050453.gA54r1J32523@saturn.mikemac.com>:
    In ACL:

    ;;; Compiling file ./input.lisp
    5007120 bytes have been tenured, next gc will be global.
    See the documentation for variable EXCL:*GLOBAL-GC-BEHAVIOR* for more information.
    ;;; Writing fasl file /home/mikemac/src/Lisp/McCLIM/input.fasl
    ;;; Fasl write complete
    ;     Loading product for module: "input".
    ; Fast loading /home/mikemac/src/Lisp/McCLIM/input.fasl
    Error: Attempt to add the method
             (STANDARD-EVENT-QUEUE T T T) @ #x20931b5a>
           to the generic function
           has more required arguments than the generic function.
      [condition type: PROGRAM-ERROR]

STANDARD-EVENT-QUEUE had a slot accessor defined by the name
EVENT-QUEUE-SCHEDULE which is now removed and so this error should now
be fixed.

Revision 1.19 - (view) (annotate) - [select for diffs]
Thu Oct 31 12:58:14 2002 UTC (11 years, 5 months ago) by brian
Branch: MAIN
Changes since 1.18: +123 -20 lines
Diff to previous 1.18 , to selected 1.15
language support for text-styles, korean font support, support for 16 bit
fonts, support for font composition, support for timer events, some cosmetic
changes, support for unicode characters, etc.
A bit much at once, and hopefully it won't break for anyone who isn't using
unicode enabled cmucl.

Revision 1.18 - (view) (annotate) - [select for diffs]
Fri Aug 2 11:59:09 2002 UTC (11 years, 8 months ago) by adejneka
Branch: MAIN
Changes since 1.17: +0 -64 lines
Diff to previous 1.17 , to selected 1.15
* Moved TRACKING-POINTER to a separate file.

* Added tracking of presentations.

Revision 1.17 - (view) (annotate) - [select for diffs]
Sat Jul 13 07:58:56 2002 UTC (11 years, 9 months ago) by adejneka
Branch: MAIN
Changes since 1.16: +64 -0 lines
Diff to previous 1.16 , to selected 1.15
Initial implementation of TRACKING-POINTER.

Revision 1.16 - (view) (annotate) - [select for diffs]
Wed Jun 26 06:27:19 2002 UTC (11 years, 9 months ago) by moore
Branch: MAIN
Changes since 1.15: +3 -1 lines
Diff to previous 1.15
Fixed problem Gilbert reported; event-queue-listen-or-wait was
depending on the return result of process-wait which is not portable.

Work in progress on incremental redisplay.

Revision 1.15 - (view) (annotate) - [selected]
Tue Jun 25 22:26:45 2002 UTC (11 years, 9 months ago) by gilbert
Branch: MAIN
Changes since 1.14: +80 -8 lines
Diff to previous 1.14
We have event compression now.

EVENT-QUEUE-APPEND is responsible for that.

Revision 1.14 - (view) (annotate) - [select for diffs]
Tue Jun 25 02:01:41 2002 UTC (11 years, 9 months ago) by moore
Branch: MAIN
Changes since 1.13: +39 -13 lines
Diff to previous 1.13 , to selected 1.15
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

Revision 1.13 - (view) (annotate) - [select for diffs]
Sun Apr 28 06:53:10 2002 UTC (11 years, 11 months ago) by gilbert
Branch: MAIN
Changes since 1.12: +24 -1 lines
Diff to previous 1.12 , to selected 1.15

    uses it

Revision 1.12 - (view) (annotate) - [select for diffs]
Fri Apr 26 17:54:37 2002 UTC (11 years, 11 months ago) by moore
Branch: MAIN
Changes since 1.11: +0 -20 lines
Diff to previous 1.11 , to selected 1.15
Fix various problems found by Robert.

Repair and/or eliminate a bunch of dynamic-extent declarations that I
screwed up.

Revision 1.11 - (view) (annotate) - [select for diffs]
Tue Apr 23 01:50:00 2002 UTC (12 years ago) by moore
Branch: MAIN
Changes since 1.10: +4 -0 lines
Diff to previous 1.10 , to selected 1.15
Supply null handle-event for immediate-sheet-input-mixin.  This should
fix Brian's problems.

Add a couple of text-style trampolines for sheets.

Add an eval-when around with-presentation-types-decoded to satisfy

Add a new macro, clim-defsystem, that does the right thing whether
using mk:defsystem or not.  Add a :clim-frontend target which is the
same as the old :clim target; :clim now forces :clim-clx to load.

Various fixes on the road to getting Goatee working.

Revision 1.10 - (view) (annotate) - [select for diffs]
Sun Apr 21 12:41:14 2002 UTC (12 years ago) by brian
Branch: MAIN
Changes since 1.9: +10 -3 lines
Diff to previous 1.9 , to selected 1.15
Sundry fixes to run without multiprocessing support.

Added images/ to hold bitmaps for tests.

Added looks/ to hold neutral look-and-feel realizer packages.

Added Examples/gadget-test to test many gadgets with a look and feel.

Added a pixie look and feel, and a pixie/clx to work with the clx backend.

Added drawing support in the CLX backend for ovals and circles.

Fixed pixmaps to work with with-output-to-pixmap with draw-image, etc.

Moved sheet-leaf-mixin to standard-gadget-pane so it doesn't break radio-box-pane, etc.

Misc fixes.

Revision 1.9 - (view) (annotate) - [select for diffs]
Fri Apr 19 22:27:09 2002 UTC (12 years ago) by moore
Branch: MAIN
Changes since 1.8: +27 -4 lines
Diff to previous 1.8 , to selected 1.15
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 :)

Revision 1.8 - (view) (annotate) - [select for diffs]
Tue Mar 12 21:05:06 2002 UTC (12 years, 1 month ago) by moore
Branch: MAIN
Changes since 1.7: +9 -0 lines
Diff to previous 1.7 , to selected 1.15
Checkin to get context sensitive input working with multi-threaded

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.

Revision 1.7 - (view) (annotate) - [select for diffs]
Sat Feb 23 23:25:59 2002 UTC (12 years, 1 month ago) by mikemac
Branch: MAIN
Changes since 1.6: +15 -7 lines
Diff to previous 1.6 , to selected 1.15
unify the sheet-event-queue and the input buffer

Revision 1.6 - (view) (annotate) - [select for diffs]
Sat Feb 16 02:48:22 2002 UTC (12 years, 2 months ago) by gilbert
Branch: MAIN
Changes since 1.5: +6 -0 lines
Diff to previous 1.5 , to selected 1.15
Using two methods instead of IF now in DISPATCH-EVENT.

Revision 1.5 - (view) (annotate) - [select for diffs]
Mon Feb 11 21:34:23 2002 UTC (12 years, 2 months ago) by gilbert
Branch: MAIN
Changes since 1.4: +80 -20 lines
Diff to previous 1.4 , to selected 1.15
Implemented an input queue class.

This still needs work for single threaded Lisps.

Revision 1.4 - (view) (annotate) - [select for diffs]
Thu Aug 9 16:48:46 2001 UTC (12 years, 8 months ago) by rouanet
Branch: MAIN
Changes since 1.3: +10 -10 lines
Diff to previous 1.3 , to selected 1.15
The mixin classes MUTE-SHEET-*-MIXIN are now called SHEET-MUTE-*-MIXIN
in the new CLIM II Spec.

Revision 1.3 - (view) (annotate) - [select for diffs]
Mon Jun 18 12:45:21 2001 UTC (12 years, 10 months ago) by boninfan
Branch: MAIN
Changes since 1.2: +18 -1 lines
Diff to previous 1.2 , to selected 1.15
Added event-read-with-timeout

Revision 1.2 - (view) (annotate) - [select for diffs]
Wed Nov 29 19:51:45 2000 UTC (13 years, 4 months ago) by cvs
Branch: MAIN
Changes since 1.1: +3 -1 lines
Diff to previous 1.1 , to selected 1.15
dispatch-event handles window events immediately

Revision - (view) (annotate) - [select for diffs] (vendor branch)
Thu Jun 8 22:01:12 2000 UTC (13 years, 10 months ago) by mikemac
Branch: initial
CVS Tags: start
Changes since 1.1: +0 -0 lines
Diff to previous 1.1 , to next main 1.39 , to selected 1.15
Initial check-in

Revision 1.1 - (view) (annotate) - [select for diffs]
Thu Jun 8 22:01:12 2000 UTC (13 years, 10 months ago) by mikemac
Branch: MAIN
Branch point for: initial
Diff to selected 1.15
Initial revision

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.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5