Age | Commit message (Collapse) | Author |
|
|
|
|
|
This is to avoid a situation, where we concurrently change its position.
|
|
Sometimes the line is too short to actuate a split.
|
|
|
|
Sometimes drei gets confused by itself with counting.
|
|
|
|
There were two mixins CLIM-SHEET-INPUT-MIXIN and STANDARD-SHEET-INPUT-MIXIN that
were acting as an intermediate between silex I/O classes and basic-pane
superclasses -- this was redundant with STANDARD-*-MIXIN, so we remove it.
|
|
Declaring the dynamic function as having a dynamic extent may lead to hard to
understand and debug errors, for example:
(flet ((foo ()
(with-sheet-medium (medium sheet)
(do-something medium))))
(let ((*x* 420)) (foo)))
The code above had undefined behavior, because the continuation
capturing (do-something medium) was nvoked outside of its dynamic extent.
Also a few cosmetic fixes (indent and printing).
|
|
TRANSFORMATION -> SHEET-TRANSFORMATION
I plan to mix a complete medium state into output recording streams, and that'd
lead to collapsing two slots into one, while they do mean different things.
|
|
gs-ink-mixin and gs-text-style-mixin were ignored in filling-output-mixin; we've
been missing medium-merged-text-style trampoline from sheet to medium.
|
|
We had INVOKE-WITH-DRAWING-OPTIONS and DO-GRAPHICS-WITH-OPTIONS that served the
same purpose with the former trampolining to the latter. Removing the duplicated
interfaces brings more consistency and lowers the cognitive bar.
|
|
Thanks to this we will be able to mix the state in the output recording stream
so that we can record graphics state without changing the medium itself. That is
a necessity to avoid race conditions if we are to introduce a separate repaint
queue.
|
|
This operator reads all elements in batch and empties it. This is necessary to
read the queue "snapshot", to avoid a situation where new events are appended
while we for example repaint all "currently requested" sheets.
|
|
|
|
|
|
Functions RESTART-PORT and DESTROY-PORT manage these processes when necessary.
Currently it is the responsibility of the port subclass to call RESTART-PORT at
the beginning (because some ports don't do that, like postscript), although
perhaps we should make this call in FIND-PORT and have drawing backends to
simply overwrite the default method to do nothing.
|
|
|
|
The interface used for implementing queues was called event-queue. That name is
inaccurate because we want to reuse the abstraction for repaints. More than
that, we've already used them to store gestures by stream-input and to store
commands in the frame command queue, so it is a general-purpose queue already.
Moreover, to have a consistent interface:
(schedule-event-queue queue event delay)
-> (queue-schedule queue item seconds)
(event-queue-listen-or-wait event &key timeout wait-function)
-> (queue-listen-or-wait queue timeout wait-function)
(event-queue-read-with-timeout queue timeout wait-function)
-> (queue-read-or-wait queue timeout wait-function)
Also don't use SLOT-VALUES in sheet trampolines.
|
|
|
|
|
|
|
|
|
|
This leads to pathological scrolling in some scenarios.
|
|
|
|
In the recent refactor into trampoline+function I've dropped an important
nuance, that the cases in WITH-INPUT-CONTEXT should be evaluated in the outer
input-context.
|
|
|
|
|
|
|
|
That seems counterintuitive when user navigates a pointer, and the whole
window resizes out of the blue.
|
|
When the handler is invoked on a stream that does not output recording, the we
unhighlight a currently highlighted presentation (on another stream).
|
|
The button handler goes
button-press-event -> input-context-button-press-handler -> frame-handler -> ...
The wait handler went
wait -> input-context-wait-handler -> highlight -> frame-handler -> ...
now it goes
wait -> input-context-wait-handler -> frame-handler -> (... highlight)
It is simpler to reason about the code when abstractions are traversed in a
consistent order.
|
|
These functions are not meant to only track the pointer - for example the
modifier may change etc.
|
|
Previously we had only INPUT-CONTEXT-TYPE; this commit adds INPUT-CONTEXT-CONT
and a constructor MAKE-INPUT-CONTEXT-ENTRY. This improvement is for readibility.
|
|
Previously we've compared also ptype handlers created by with-input-context, but
all we need to compare is ptype, becaue we map translators already. Fixes #1398.
|
|
Drei treated pointer-documentation pane as its own minibuffer and triggered
pathological repaints without fixing the output even if it had nothing to show.
|
|
|
|
|
|
Previously we took the bounding rectangle of the record, while now we take the
border (potentially there is less to replay with compund output records).
|
|
SET-HIGHLIGHTED-PRESENTATION and UNHIGHLIGHT-HIGHLIGHTED-PRESENTATION
This also encapsulates uses of the accessor FRAME-HIGHLITED-PRESENTATION.
|
|
The specification specifies that all extended input streams implement the method
STREAM-RESCANNING-P that returns false.
|
|
Previously the macro open-coded the behavior, while now we have it trampoline to
INVOKE-WITH-INPUT-CONTEXT.
Moreover we remove the call to HIGHLIGHT-CURRENT-PRESENTATION -- it is misguided
because the input context may change multiple times before we return the control
to the event loop, and that leads to excessive computations.
|
|
Previously the function used the event unconditionally, even when the sheet did
not match it (the event). That resulted in wrong x/y coordinates.
|
|
|
|
|
|
Previously we've added a dummy slot that prevented the user from creating
instances of the protocol class. That leads to SBCL sometimes freezing during
the compilation (despite the form being fine). I'm simply going to remove it
because this protection had little utility and is not required by the spec.
|
|
Fixes #1399.
|
|
drei does not understand a difference between redisplay and repaint.
|
|
pointer documentation was recently rewritten and this is an undocumented
extension that has been removed. Fixes #1396.
|
|
|