summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-09-24core: invoke-display-function does not call FINISH-OUTPUT when no-opHEADmasterDaniel Kochmański
2024-09-17Merge commit 'b0611854'Daniel Kochmański
2024-09-17seos: STREAM-TEXT-CURSOR is not used when replayingDaniel Kochmański
This is to avoid a situation, where we concurrently change its position.
2024-09-17seos: SEOS-WRITE-VECTOR does not assume that there will be splitDaniel Kochmański
Sometimes the line is too short to actuate a split.
2024-09-17drei: fixup for the repaint queue drawing modelDaniel Kochmański
2024-09-17drei: don't assume that displayed-lines-count is correctDaniel Kochmański
Sometimes drei gets confused by itself with counting.
2024-09-17Merge branch 'pre-repaint-queue'Daniel Kochmański
2024-09-17core: remove superfluous mixins for pane I/ODaniel Kochmański
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.
2024-09-17core: don't declare WITH-SHEET-MEDIUM continuation as dynamic-extentDaniel Kochmański
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).
2024-09-17core: rename the SHEET-TRANSFORMATION-MIXIN's slot TRANSFORMATIONDaniel Kochmański
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.
2024-09-17output: remove spurry mixins and add a missing trampolineDaniel Kochmański
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.
2024-09-17internals: remove protocol that duplicates functionalityDaniel Kochmański
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.
2024-09-17core: move medium graphics state accessors to COMPLETE-MEDIUM-MIXINDaniel Kochmański
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.
2024-09-17queues: add a new operator queue-drainDaniel Kochmański
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.
2024-09-17examples: fix a demo (missing initialization form)Daniel Kochmański
2024-09-17Merge branch 'pre-repaint-queue'Daniel Kochmański
2024-09-17ports: move I/O handler process to BASIC-PORTDaniel Kochmański
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.
2024-09-17clx: remove duplicated code pathsDaniel Kochmański
2024-09-17core: rename internal queue interfacesDaniel Kochmański
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.
2024-09-17core: move queues to a separate fileDaniel Kochmański
2024-09-17core: move lambda-event and with-synchronization to eventsDaniel Kochmański
2024-09-17core: introduce a pulse event (internal interface for now)Daniel Kochmański
2024-09-17cosmetic: add ignore declarationDaniel Kochmański
2024-09-17seos: don't reset cursor position on newlineDaniel Kochmański
This leads to pathological scrolling in some scenarios.
2024-09-17examples: add a clear command to the coordinate-swizzling demoDaniel Kochmański
2024-09-17with-input-context: fix a regressionDaniel Kochmański
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.
2024-09-03Merge branch 'pd-fix'Daniel Kochmański
2024-09-03update news fileDaniel Kochmański
2024-09-03core: use FRAME-DOCUMENT-HIGHLIGHTED-PRESENTATIONDaniel Kochmański
2024-09-03pd: don't resize window when output does not fit in pointer documentationDaniel Kochmański
That seems counterintuitive when user navigates a pointer, and the whole window resizes out of the blue.
2024-09-03wait handler: unhighlight presentations for non-recording streamsDaniel Kochmański
When the handler is invoked on a stream that does not output recording, the we unhighlight a currently highlighted presentation (on another stream).
2024-09-03wait handler: make the workflow consistent with the button handlerDaniel Kochmański
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.
2024-09-03cleanup: rename *-track-pointer to *-wait-handlerDaniel Kochmański
These functions are not meant to only track the pointer - for example the modifier may change etc.
2024-09-03input contexts: add abstraction for creating and accesing the entryDaniel Kochmański
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.
2024-09-03pointer-documentation: relax equality test for state comparisonDaniel Kochmański
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.
2024-09-03drei: leave pointer documentation aloneDaniel Kochmański
Drei treated pointer-documentation pane as its own minibuffer and triggered pathological repaints without fixing the output even if it had nothing to show.
2024-09-02frame-highlight-at-position: remove dead code pathsDaniel Kochmański
2024-09-02frames: add missing method FRAME-DOCUMENT-HIGHLIGHTED-PRESENTATIONDaniel Kochmański
2024-09-02highlight-output-record: more precise repaint regionDaniel Kochmański
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).
2024-09-02core: implement missing operators for presentation highlightDaniel Kochmański
SET-HIGHLIGHTED-PRESENTATION and UNHIGHLIGHT-HIGHLIGHTED-PRESENTATION This also encapsulates uses of the accessor FRAME-HIGHLITED-PRESENTATION.
2024-09-02eis: add a missing method for STREAM-RESCANNING-PDaniel Kochmański
The specification specifies that all extended input streams implement the method STREAM-RESCANNING-P that returns false.
2024-09-02with-input-context: rewrite the macro to use a trampolineDaniel Kochmański
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.
2024-09-02highlight-applicable-presentation: don't trip on keyboard eventsDaniel Kochmański
Previously the function used the event unconditionally, even when the sheet did not match it (the event). That resulted in wrong x/y coordinates.
2024-09-02utilities: add internal and naive debug trace-like utilityDaniel Kochmański
2024-09-02cosmetic changesDaniel Kochmański
2024-09-02utilities: define-predicate-class: relax errors when instationedDaniel Kochmański
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.
2024-08-24clx: add missing specialization for drawing rectangle setsDaniel Kochmański
Fixes #1399.
2024-07-31drei: remove fix-pane-viewportDaniel Kochmański
drei does not understand a difference between redisplay and repaint.
2024-07-30scigraph: remove call to removed interfaceDaniel Kochmański
pointer documentation was recently rewritten and this is an undocumented extension that has been removed. Fixes #1396.
2024-07-26cleanup: remove leftover debug printDaniel Kochmański