FormEditor does not cleanup pages on tab disposal
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start by reproducing the failure using the test code in the issue and the linked pull request #3765, then trace how FormEditor handles tab disposal and page removal. The tests identify the expected behavior: after the tab is disposed or closed, findPage("page1") should return null. Update or add regression coverage for both disposal paths and run the relevant UI tests.
索引モデルが issue の本文から書いたものです。
説明
@Test
public void disposeTab() throws PartInitException {
FormEditorMock.hook = FormEditorMock.DEFAULT_HOOK;
FormEditorMock subject = (FormEditorMock) WORKBENCH.getActiveWorkbenchWindow().getActivePage().openEditor(input,
FormEditorMock.ID);
dispatch(subject);
CTabItem[] tabs = subject.leakContainer().getItems();
assertEquals(1, tabs.length);
FormPage page1 = addPage(subject, "page1");
assertSame(page1, subject.findPage("page1"));
tabs = subject.leakContainer().getItems();
assertEquals(2, tabs.length);
tabs[tabs.length - 1].dispose();
dispatch(subject);
tabs = subject.leakContainer().getItems();
assertEquals(1, tabs.length);
// BUG
// assertNull(subject.findPage("page1"));
}
@Test
public void maintainIntegrityOnPageClose() throws PartInitException {
FormEditorMock.hook = new Hook() {
@Override
public void createContainer(FormEditorMock subject, CTabFolder container) {
Hook.super.createContainer(subject, container);
container.setUnselectedCloseVisible(true);
}
@Override
public void createItem(FormEditorMock subject, CTabItem item) {
Hook.super.createItem(subject, item);
item.setShowClose(true);
}
};
FormEditorMock subject = (FormEditorMock) WORKBENCH.getActiveWorkbenchWindow().getActivePage().openEditor(input,
FormEditorMock.ID);
FormPage page1 = addPage(subject, "page1");
CTabFolder tabFolder = subject.leakContainer();
CTabItem tab = tabFolder.getItem(1);
assertTrue(tab.getShowClose());
assertSame(page1, subject.findPage("page1"));
Event event = new Event();
event.type = SWT.MouseDown;
event.button = 1;
event.x = tab.getBounds().x + tab.getBounds().width - 9;
event.y = tab.getBounds().y + tab.getBounds().height/2;
tabFolder.notifyListeners(event.type, event);
dispatch(subject);
event.type = SWT.MouseUp;
tabFolder.notifyListeners(event.type, event);
dispatch(subject);
assertEquals(1, tabFolder.getItems().length);
// BUG
// assertNull(subject.findPage("page1"));
}
To reproduce, pull from https://github.com/eclipse-platform/eclipse.platform.ui/pull/3765 and uncomment BUG lines.
- 主要言語
- Java
- スター
- 124
- フォーク
- 269
- 平均マージ
- 2日 11時間
- マージ済み PR(30日)
- 72
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
eclipse-platform/eclipse.platform.ui のほかの issue
-
Theme controls do not show/hide when the checkbox is toggled再び着手できるかも @nburnwal09 が 7 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
eclipse-platform/eclipse.platform.ui#4502 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
eclipse-platform/eclipse.platform.ui#4125 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
eclipse-platform/eclipse.platform.ui#4016 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
eclipse-platform/eclipse.platform.ui#3892 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
eclipse-platform/eclipse.platform.ui#2687 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
eclipse-platform/eclipse.platform.ui の issue をすべて見る
似ている issue
-
[Bug] DefaultSerializationExceptionWrapper does not implement Cleanable, so cleanup() is never invoked by codecs対応中かも @binbin0325 が今日担当しました。 オープンcomponent/need-triage type/need-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
2026 Error Report
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
triplea-game/triplea#15096 ·
メンテナーはふだん 1 日以内に返信
-
[Bug][API] Switching workflow versions leaves schedules online対応中かも @zhuangchong が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/dolphinscheduler#18731 ·
メンテナーはふだん 1 日以内に返信
-
Implement JDBC Domain Enums (`SqlCategory`, `SqlExecutionStatus`, `SqlExecutionType`) in Core Moduleオープンcore-module enhancement good first issue
難易度 1/5 1〜3時間 初心者へのやさしさ 87/100
sdlc-pro/spring-lens#531 ·
メンテナーはふだん 1 日以内に返信