Fix description editor initially empty#26795
Open
annplatoworld wants to merge 2 commits into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes a web UI regression where CodeMirror-backed description editors render empty when first opened inside a <dialog> (hidden via display: none prior to showModal()), by forcing CodeMirror to recalculate its layout immediately after the dialog becomes visible.
Changes:
- After calling
dialog.showModal(), finds CodeMirror-enhanced<textarea class="codemirror">elements inside the dialog and callscodemirrorObject.refresh()on each instance.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
timja
reviewed
May 17, 2026
c689359 to
ff04947
Compare
timja
approved these changes
May 18, 2026
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.
Fixes #26665
This is a regression introduced by previous changes most likely #26535, which moved description editing into a modal dialog. CodeMirror cannot compute its layout while its container is hidden (
display: noneon a<dialog>beforeshowModal()), so the editor rendered empty until the window was resized and CodeMirror's resize handler kicked in.Initial fix
Calling
refresh()on each CodeMirror instance inside the dialog right aftershowModal()forces it to recalculate immediately.Updated fix
Use
setTimeoutto delay behavior setup until after the dialog is shown, so CodeMirror can initialize with the correct dimensions. This avoids coupling the genericDialogcomponent to CodeMirror.Thanks @timja for the suggestion.
Testing done
Manually reproduced and verified the fix in a local development instance
Before the change: the editor opened empty; content only appeared after resizing the window.
After the change: the editor opens with the existing description rendered correctly.
Screenshots
Before
After
Proposed changelog entries
Proposed changelog category
/label regression-fix,web-ui
Proposed upgrade guidelines
N/A
Submitter checklist
The issue, if it exists, is well-described.
The changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developers, depending on the change) and are in the imperative mood (see examples). Fill in the Proposed upgrade guidelines section only if there are breaking changes or changes that may require extra steps from users during upgrade.
There is automated testing or an explanation as to why this change has no tests.
New public classes, fields, and methods are annotated with
@Restrictedor have@since TODOJavadocs, as appropriate.New deprecations are annotated with
@Deprecated(since = "TODO")or@Deprecated(forRemoval = true, since = "TODO"), if applicable.UI changes do not introduce regressions when enforcing the current default rules of Content Security Policy Plugin. In particular, new or substantially changed JavaScript is not defined inline and does not call
evalto ease future introduction of Content Security Policy (CSP) directives (see documentation).For dependency updates, there are links to external changelogs and, if possible, full differentials.
For new APIs and extension points, there is a link to at least one consumer.
Desired reviewers
@zbynek, @timja
Before the changes are marked as
ready-for-merge:Maintainer checklist
upgrade-guide-neededlabel is set and there is a Proposed upgrade guidelines section in the pull request title (see example).lts-candidateto be considered.