microsoft/Terminal

Use a binary tree/heap to represent panes

Open

#13,762 创建于 2022年8月16日

在 GitHub 查看
 (0 评论) (1 反应) (0 负责人)C++ (3,212 fork)batch import
Area-CodeHealthArea-TerminalControlHelp WantedIssue-TaskProduct-Terminal

仓库指标

Star
 (35,764 star)
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.

贡献者指南