microsoft/Terminal

Use a binary tree/heap to represent panes

開放

#13,762 建立於 2022年8月16日

 (0 則留言) (1 個反應) (0 位負責人)C++ (9,275 個分叉)batch import
Area-CodeHealthArea-TerminalControlHelp WantedIssue-TaskProduct-Terminal

倉庫指標

星標
 (103,173 顆星)
PR 合併指標
 (平均合併 27天 19小時) (30 天內合併 24 個 PR)

描述

Problem

The Pane class acts simultaneously as the data model to represent actual panes and as splits which contain nothing but exactly 2 child panes and a split ratio / direction. In a sense Pane represents both a leaf and internal nodes in a binary tree simultaneously. Member functions of Pane iterating through that tree are complex and make changes difficult (#13306), as iteration happens almost exclusively via recursion, making retaining state cumbersome.

Proposal

Let's implement a binary heap class that works independently of Pane. This would allow us to use regular text-book algorithms for its implementation. Internal nodes of the heap would retain split ratios and directions and leaf nodes of the heap contain shared_ptr<Pane> references. Traversal/iteration would also be simplified. This separate heap would be cheap to clone, allowing us to implement things like UI state persistence (#13306) more easily.

貢獻者指南