Fix six things in the native heads - #846
Merged
Merged
Conversation
Escape with the Linux context menu open reached the managed side as quit, which closes the menu and then runs the command, so dismissing the menu closed the viewer - and on Linux there is no tray to open it again from, so the queue went to staging. A click outside the menu reported nothing at all, leaving it floating until a row, a button or a key was hit, which is not what docs/viewer.md says of it. Both are dismissals now. WindowShouldClose waits on events while the window is minimised, and it is called inside deview_present, so minimising the Linux viewer stopped the managed loop being pumped: a snapshot arriving after that was accepted by the listener and never shown. FLAG_WINDOW_ALWAYS_RUN keeps the loop running, and a focus restores a minimised window rather than leaving it in the taskbar. The ImGui backend did not declare RendererHasVtxOffset and the renderer ignored the vertex offset, so a draw list past 65535 vertices - a maximised 4K window of dense long lines reaches that - wrapped its sixteen bit indices and drew scrambled panes, with IM_ASSERT compiled out of the release build to say nothing about it. A failed queue row on Linux was coloured and left unmarked, while the other three heads and the docs show " !" after the label. Trackpad scrolling: the Linux head truncated fractional wheel offsets to zero, and the Mac head rounded points to notches - so an ordinary flick, which is tens of points, arrived as tens of notches and the managed side multiplied it by three, while slow movement rounded away to nothing. Both accumulate now, and macOS converts points and lines separately. macOS tooltips: refreshToolTips removed and re-added every tracking rectangle on every frame, and AppKit times its tooltip delay from the moment the cursor enters one, so the delay was restarted before it could elapse and queue tooltips never appeared. The rectangles are rebuilt only when they change. The binaries these compile into are committed, so the build-native workflow's rebuild has to land on this branch before it is merged.
The macOS head derived "Pending (N)" from the queue it was handed, which is the visible slice: sized to the body, and with the members of folded groups left out. So thirty pending in a sixteen row body read "Pending (16)" beside "inline 1 of 30", and folding a group lowered it further. The ASCII and WinForms heads use Screen.PendingCount, which the shim had no field for. DeviewScreen carries it now, so DEVIEW_VERSION goes to 7 and the binaries have to be rebuilt with this. DeviewStructTests holds the two sides together and is the part of this a machine with no toolchain can still check.
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.
Escape with the Linux context menu open reached the managed side as quit, which
closes the menu and then runs the command, so dismissing the menu closed the viewer
A click outside the menu reported nothing at all, leaving it floating until a row, a
button or a key was hit, which is not what docs/viewer.md says of it. Both are
dismissals now.
WindowShouldClose waits on events while the window is minimised, and it is called
inside deview_present, so minimising the Linux viewer stopped the managed loop being
pumped: a snapshot arriving after that was accepted by the listener and never shown.
FLAG_WINDOW_ALWAYS_RUN keeps the loop running, and a focus restores a minimised
window rather than leaving it in the taskbar.
The ImGui backend did not declare RendererHasVtxOffset and the renderer ignored the
vertex offset, so a draw list past 65535 vertices - a maximised 4K window of dense
long lines reaches that - wrapped its sixteen bit indices and drew scrambled panes,
with IM_ASSERT compiled out of the release build to say nothing about it.
A failed queue row on Linux was coloured and left unmarked, while the other three
heads and the docs show " !" after the label.
Trackpad scrolling: the Linux head truncated fractional wheel offsets to zero, and
the Mac head rounded points to notches - so an ordinary flick, which is tens of
points, arrived as tens of notches and the managed side multiplied it by three,
while slow movement rounded away to nothing. Both accumulate now, and macOS converts
points and lines separately.
macOS tooltips: refreshToolTips removed and re-added every tracking rectangle on
every frame, and AppKit times its tooltip delay from the moment the cursor enters
one, so the delay was restarted before it could elapse and queue tooltips never
appeared. The rectangles are rebuilt only when they change.
The macOS head derived "Pending (N)" from the queue it was handed, which is the visible slice - sized to the body, with folded group members left out - so thirty pending in a sixteen row body read "Pending (16)" beside "inline 1 of 30". DeviewScreen carries the real count now, which takes DEVIEW_VERSION to 7.
The binaries these compile into are committed, so the build-native workflow's rebuild has to land on this branch before it is merged. It runs on every push here and opens its PR against this branch.