Skip to content

Comments

Add XQuartz refresh workaround for macOS Tahoe#23

Open
zarzycki wants to merge 2 commits intoSEATStandards:mainfrom
zarzycki:xquartz-tahoe
Open

Add XQuartz refresh workaround for macOS Tahoe#23
zarzycki wants to merge 2 commits intoSEATStandards:mainfrom
zarzycki:xquartz-tahoe

Conversation

@zarzycki
Copy link
Contributor

@zarzycki zarzycki commented Feb 9, 2026

On macOS Tahoe, there is an issue with certain panels going black in X11 windows: github.com/XQuartz/XQuartz/issues/438 ... This has been an issue for me with ssh -Y from a Mac onto Derecho since upgrading to Tahoe.

The "hack" proposed by folks in the XQuartz issue is to essentially force redraws quasi-frequently. The main time this is a problem is when a window is resized, or pop-ups overlap with each other. This isn't as much of an issue with ncvis given that the window is self-contained, but I ran into some issues where the controls were constricted by the panel size.

So this PR has two related, but distinct fixes.

1.) The default frame sizes have been nudged slightly bigger. This seems relatively imperceptible on a modern resolution system, but it seems to help issues where 4D+ variables were triggering black screens on Tahoe by having constricted space for the buttons/widgets/etc.

2.) The user has the option to define an env var (export NCVIS_FORCE_EXPOSE_FIX=1) that activates a frequent redraw that mimics what has been posted on github.com/XQuartz/XQuartz/issues/438 -- this fix is critically needed for some tools (e.g., ncview) but seems hit-or-miss with ncvis. That said, I don't see any reason not put this in the code as a potential workaround if users see this crop up on their system. I.e., if a user reports this issue, they should be encouraged to try the above setting and see if things improve.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an optional XQuartz redraw workaround intended to mitigate black/blank regions in X11-forwarded wxWidgets windows on macOS “Tahoe”, and slightly increases default UI sizing to reduce control/panel constriction.

Changes:

  • Increase default main window size and the variable-controls minimum size to provide more layout headroom.
  • Add an opt-in env-var-controlled “expose/refresh” workaround in wxImagePanel (refresh on resize + background clear) for XQuartz rendering issues.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 7 comments.

File Description
src/wxNcVisFrame.cpp Increases minimum size of the right-side controls sizer to reduce cramped layouts.
src/wxImagePanel.cpp Adds env-var-controlled XQuartz refresh workaround logic (env check, forced refresh on resize, optional DC clear).
src/ncvis.cpp Increases default main frame size at startup.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant