diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt index 2826e125a02..af587b42b67 100644 --- a/.github/actions/spelling/expect/expect.txt +++ b/.github/actions/spelling/expect/expect.txt @@ -1908,6 +1908,7 @@ touchpad Tpp Tpqrst tprivapi +tput tracelog tracelogging traceloggingprovider diff --git a/src/host/outputStream.cpp b/src/host/outputStream.cpp index 222868aad7a..a48e189f00d 100644 --- a/src/host/outputStream.cpp +++ b/src/host/outputStream.cpp @@ -95,9 +95,11 @@ til::rect ConhostInternalGetSet::GetViewport() const void ConhostInternalGetSet::SetViewportPosition(const til::point position) { auto& info = _io.GetActiveOutputBuffer(); - const auto dimensions = info.GetViewport().Dimensions(); - const auto windowRect = til::rect{ position, dimensions }.to_inclusive_rect(); - THROW_IF_FAILED(ServiceLocator::LocateGlobals().api->SetConsoleWindowInfoImpl(info, true, windowRect)); + THROW_IF_FAILED(info.SetViewportOrigin(true, position, false)); + // SetViewportOrigin() only updates the virtual bottom (the bottom coordinate of the area + // in the text buffer a VT client writes its output into) when it's moving downwards. + // But this function is meant to truly move the viewport no matter what. Otherwise `tput reset` breaks. + info.UpdateBottom(); } // Method Description: