With `replace-evt` the time that the system needs to wake up
to check the event can drift later, but scheduling state was
carried in a way that works only if the wake-up time drifts
earlier.
Unfortunately, I don't know how to write a test for this bug.
The usual stategy of using `system-idle-evt` to detect busy
waiting doesn't work here, because the business happens despite
the scheduler's conclusion that the system is idle.
As reported by Jan Dvořák on the mailing list.
When an evaluation result from a sandboxed computation is convertible
(so that it should be preserved for rendering) and serializable, then
serialize the value from transfer from the sandboxed environment to
the rendering environment.
This change complements the one that makes `pict`s serializable.
Serializing a pict result avoids retaining the sandboxed environment,
including its instance of the `pict` and `racket/draw` modules,
when a sandbox-created pict is part of the generated document.
For example, the memory use of the result of "math.scrbl" is about
20% smaller with this change.
The "texpict" interface as based by LaTeX is ancient, undocumented,
and unlikely to have been used since the previous millennium. Throw it
out and simplify the implementation (by discarding signatures and
units).
Fixes a problem with c4508ad0d9, which disabled module-code
caching too often. A symptom of the disabled cache was that
running "math/scribblings/math.scrbl" would use twice
as much memory.
Closes PR 14715, where Eli describes the repair
(Probably, the "collects" directory was missing from the uninstaller
list because "collects" moved under "lib" in an intermediate variant
of the directory organization.)
If a keymap has a grab, then discard key events that are modifier
changes or key releases.
Adjusts commit 8ba8d01ec0 so that Ctl-u work in DrRackt (and
other framework-based programs).
Suppress WM_KEYDOWN messages to a button or checkbox, so that the
top-level window takes care of Space and Return for a button or
checkbox with the keyboard focus.
Closes PR 14710
Previously, `keymap%` would return #t for all shift, ctrl, and key release
events. DrRacket's editors would then not handle those events (correctly,
as they shouldn't handle already-handled events), meaning that the events
weren't sent to any snips.
This repair turns out to matter for Mac OS X 10.10, where creating
a list box in a frame somehow makes the frame an instance of a
subclass (that implements notifications of some sort, I think).
That subclassing broke an `(objc-is-a? ... RacketWindow)` test to
recognize windows that belong to a particular eventspace.
For some types, (equal? x y) is transformed into (eq? x y) in the resolve phase.
This commit adds this transformation to the optimizer phase. This improves
constant folding and enable some optimizations that are prevented
because equal? can run arbitrary code.
Also, transform (eq? #f x) => (not x) and (eq? '() x) => (null? x) to use
the type information of x when it's known.