Repository navigation
fix(macos): hide the scaled-UI hairlines; scene marks over the selection outline - #1477
Merged
marcinz606 merged 4 commits intoOct 22, 2026
Merged
Conversation
At a UI scale below 100% on a Retina display the device pixel ratio is fractional (1.8 at 90%, 1.6 at 80%). On a partial repaint the macOS backing store leaves device pixels unpainted between the repainted and the kept regions, and they show the light gray NSWindow background as white hairlines around controls. A plain PyQt6 window at 80% showed about 3,400 such pixels, 0 at 100%. Each shown window now takes THEME.bg_dark as its NSWindow background, so the gaps blend into the panels. This is a mitigation, not a fix of the gaps: alternatives and their costs are in marcinz606#1475. A translucent window keeps its clear background. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The selection mat painted after the scene chip and over each frame's scene line, so a selected first frame hid the bottom of the scene name and broke the line. The view now paints a scene's line across each run of its frames, then its name chip, after the mats. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The background is set once per native window instead of on every Show, so tooltips and menus do not repeat the Objective-C calls. Each objc_msgSend signature gets its own ctypes prototype instead of rebinding argtypes on one shared function. The platform and top-level checks live only in paint_window_background, and the module docstring fits the four-line budget. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…airlines # Conflicts: # negpy/desktop/view/sidebar/files.py
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.
Summary
A partial fix for #1475. At a UI scale below 100% on macOS, white hairlines show around controls after they repaint. This PR hides the white and leaves the cause open. The options for a full fix are in #1475.
It also fixes the Film Strip scene marks, which the red selection outline covered.
Hairlines at a UI scale below 100%
THEME.bg_darkas its NSWindow background (negpy/desktop/view/mac_window.py). The gaps show that dark color instead of white.What it does not fix:
bg_dark, such as a card (#121212) or a header (#161616), a faint dark line can still show.bg_darkintheme.pysay so.Scene marks on the Film Strip and the Light Table
Tests
tests/test_light_table.py: the scene line shows on a selected frame, and the outline still frames its sides.make allpasses.#0D0D0Das their NSWindow background, and a translucent window is not changed.Open questions
🤖 Generated with Claude Code