Repository navigation
Drop seven PropertyTable broadcasts that repeat finished work - #1215
Merged
Merged
Conversation
Seven property changes no longer run OnPropertyChanged work that was already done. Until now each queued a broadcast that reached no handler, or only a handler repeating work finished before the item drained. Affected properties and their sites: * ReversalIndexGuid: ReversalListener.Init, before any clerk exists * currentContentControlObject: DataTree's handler branch is removed * ToolForAreaNamed_lexicon, ToolForAreaNamed_textsWords, ToolForAreaNamed_grammar, ToolForAreaNamed_notebook and ToolForAreaNamed_lists: NavBarAdapter no longer resets a missing remembered tool to null * ShowRecordList: GeneratedHtmlViewer.PrepareToGoAway * DictionaryPublicationLayout: XhtmlRecordDocView.ShowRecord * BestStyleName: RootSite.BestSelectionStyle, with EditingHelper's SuppressNextBestStyleNameChanged removed * WritingSystemHvo: WritingSystemListHandler.Init Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1215 +/- ##
==========================================
+ Coverage 40.29% 40.33% +0.04%
==========================================
Files 1547 1547
Lines 355556 355560 +4
Branches 41446 41450 +4
==========================================
+ Hits 143258 143420 +162
+ Misses 182980 182844 -136
+ Partials 29318 29296 -22
🚀 New features to boost your workflow:
|
thejambi
approved these changes
Oct 29, 2026
thejambi
left a comment
Contributor
There was a problem hiding this comment.
@thejambi reviewed 12 files and all commit messages, and made 1 comment.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on mark-sil).
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.
Start here:
Src/XCore/FlexUIAdapter/NavBarAdapter.cs-- the only edit that changes a stored value rather than just whether its change is broadcast.Seven
PropertyTable.SetPropertycalls stop queueing anOnPropertyChangedbroadcast that reached no handler, or reached only a handler repeating work finished before the item drained. Second round after #1179. Properties:ReversalIndexGuid,currentContentControlObject,ToolForAreaNamed_<area>(the null reset),ShowRecordList,DictionaryPublicationLayout,BestStyleName,WritingSystemHvo.What breaks? Nothing visible is intended to change. Each site was checked against every
OnPropertyChangedthat names the property before editing; none was dropped.Where to look
AreaListener.GetToolNodeForAreaalready falls back to the area's default tool for a stale name; a null read back with a""default reaches itsConfigurationExceptiononce PropertyTable: a stored default no longer broadcasts #1213 lands. Pinned byAreaChoiceChange_RememberedToolIsGone_LeavesItsNameWithoutSettingAnyProperty.BestSelectionStyleno longer broadcasts, so the publicEditingHelper.SuppressNextBestStyleNameChangedflag that muted the echo is removed. Pinned byBestSelectionStyle_StyleDiffers_StoresItWithoutQueueingAChange.ShowObjectraises the "just switched tools" flag itself before queueing the focus step. The deleted branch only added a stale raise in the popup entry window's DataTree, which could pull focus on a later refresh there.Deliberately not here
GeneratedHtmlViewer(itsInitruns the sketch transforms and builds a Gecko control).WritingSystemHvo: the toolbar combo no longer gets an extra refresh before the first 1000 ms widget-timer tick.Verification
build.ps1 -CommentHygiene -TokenHygieneclean.Next: approve, or name a site to pull out.
Reading this a year from now -- start here
Part of the Mediator-to-Pub/Sub work: before a PropertyTable broadcast can be converted or removed, every broadcast that does nothing has to go. This PR removes seven. Each "no broadcast" test asserts the Mediator's job queue (
JobItems) directly, with a bare Mediator plus one listening colleague so the queue is not short-circuited.Decisions, and why
ReversalListener.Init): the first index is chosen before any clerk exists to hear the change.GeneratedHtmlViewer.PrepareToGoAway): the next tool sets its own value. TheInitset stays broadcast. Traced on main: with the sketch as the window's first view andShowRecordListpersisted true, a refresh viaFwXApp.RefreshAllWindows(Format > Styles with a change) opens an empty record-list panel; this branch keeps it hidden. The main-side glitch was traced, not reproduced.XhtmlRecordDocView.ShowRecord): the popup entry window also opens from Interlinear and Insert Entry, so a Reversal Indexes or Classified Dictionary view can hear the set. Its handler recomputes its own configuration, unchanged, andUpdateContent's same-configuration check returns.WritingSystemListHandler.Init): the combo reads the value on the toolbar's next update.Evidence
Manual checks, Sena 3:
ConfigurationSettingsset aside: the English index shows its entry.defaultFocusControl, which no edit-pane tool sets.ShowRecordListpersisted true, then Format > Styles with a change: the record-list panel stays hidden.lexiconDictionary: the Writing System combo shows English.Preflight review details
Code Review Summary
Branch: claude/pubsub-dead-broadcasts-2-dd3fa0
Base: main
Date: 2026-10-29
Review model: Claude Opus 5.5
Files changed: 12 (1 commit)
Overview
Second round of removing PropertyTable broadcasts that reach no handler, or
only a handler that repeats finished work. Seven sites stop queueing an
OnPropertyChanged item: ReversalIndexGuid, currentContentControlObject, the
ToolForAreaNamed_ reset, ShowRecordList, DictionaryPublicationLayout,
BestStyleName and WritingSystemHvo. Each site's check was run before the edit;
none was dropped.
Contract/API Changes
EditingHelper.SuppressNextBestStyleNameChanged(public) is removed. Its onlysetter was RootSite.BestSelectionStyle, which no longer broadcasts.
Findings
Critical - Must address before merge
None.
Important - Should address before merge
Briefed manual steps for the deleted custom list and the Grammar Sketch(steps rewritten to reachable paths; the user ranF5 could not be performed
them)
The briefed origin of XhtmlRecordDocView's popup was wrong(the popupalso opens from Interlinear and Insert Entry; its listeners recompute the same
configuration and UpdateContent's same-configuration guard returns, so the
edit stays safe)
Minor - Consider
The popup entry window's DataTree no longer gets a stale "just switched(intended; named in the PR)tools" flag from the main window's broadcast
After a refresh, ShowRecordList stays true while the sketch shows(no visible effect today)
No unit tests for the DataTree and GeneratedHtmlViewer edits(theDataTree flag is private with nothing observable; the viewer's Init runs the
sketch transforms and builds a Gecko control)
Fourth copy of a small ListeningColleague test stub(left as is)Required Validation / Evidence
build.ps1 -CommentHygiene -TokenHygiene: clean.passed 1 skipped, DetailControlsTests 125 passed 1 skipped,
SimpleRootSiteTests 115/115, xWorksTests (four touched fixtures) 28/28.
crashes at the same place.
Positive Observations
Each "no broadcast" test asserts the Mediator's job queue directly and was
proven against main.
Interview Notes
The author ran the manual tests, reviewed the code and approved the commit
message before the PR. Jira: the author's standing rule is no tickets for the
Pub/Sub work.
Suggested Review Focus
of resetting it to null
🤖 Generated with Claude Code
This change is