Repository navigation
ReAction: self-contained class headers, link library helpers - #1851
Merged
Kalamatee merged 2 commits intoOct 28, 2026
Merged
Conversation
This was referenced Oct 26, 2026
Member
|
Mergeable after one fix.
|
Contributor
Author
|
Updated:
Tested on x86_64 with a listbrowser in a window: LBAddNode at the tail and head, LBEditNode reading back, LBRemNode of the head and of the selected node, and ChooserLabels() with 70 strings, all as expected. The test also exposed that DoGadgetMethodA() cast its IPTR result to ULONG, so LBAddNode() returned truncated node pointers on 64-bit; that fix is separate in #1891, and the helpers need it. |
The LBAddNode(), LBEditNode() and LBRemNode() helpers of the link library send these methods, but the class did not implement them, so the calls fell through to rootclass and returned 0. LBM_ADDNODE allocates a node with one entry per column of the gadget's ColumnInfo and inserts it after lba_Node: NULL puts it at the head, ~0 at the tail. LBM_REMNODE removes and frees the node and LBM_EDITNODE applies the attributes to it. After each the gadget recounts the list, finds the selected node's new index (or clears the selection when it was removed), keeps the scroll position in range and redraws when it has a GadgetInfo. Checked on x86_64 with a listbrowser in a window: three LBAddNode() calls (two at the tail, one at the head), LBEditNode() reading back the new text, LBRemNode() of the head keeping the selection on the same node at its new index, LBRemNode() of the selected node clearing it. The node pointers survive only with DoGadgetMethodA() returning the full IPTR.
The varargs forms of ChooserLabels(), ClickTabs(), RadioButtons() and BrowserNodes() collected their strings in a 64-entry array and silently stopped at 63 labels. They now add each string to the list as they read it, with no limit, as on AmigaOS. The varargs stubs of the class functions duplicate the proto macros; their file now says they are for programs built with NO_INLINE_STDARG. Checked on x86_64: ChooserLabels() with 70 strings returns 70 labels.
terminills
force-pushed
the
reaction-1-base
branch
from
October 27, 2026 20:45
ec47aec to
df31d7c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First of four stacked ReAction pull requests (the classes Nick started; we are finishing them towards AmigaOS ReAction parity). Each later one contains this one's commits.
Built from a fresh tree on this branch for pc-x86_64 and pc-i386. The ClassAct example sources build against it.