Skip to content

fix: +メニューの「既存のフォルダを開く…」でフォルダ選択パネルが開かない問題を修正#72

Merged
sasagar merged 1 commit into
devfrom
feature/fix-open-folder-importer
Jul 6, 2026
Merged

fix: +メニューの「既存のフォルダを開く…」でフォルダ選択パネルが開かない問題を修正#72
sasagar merged 1 commit into
devfrom
feature/fix-open-folder-importer

Conversation

@sasagar

@sasagar sasagar commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

症状

サイドバーの + メニュー(および空状態の詳細ペイン)から「既存のフォルダを開く…」を選んでも、フォルダ選択パネル(NSOpenPanel)が表示されない。

根本原因

ContentView.swift の同一ビュー階層に .fileImporter が 2 つ付いていた(既存フォルダ用 showImporter と org 用 showOrgImporter)。SwiftUI は同一ビューに同種のプレゼンテーション修飾子を複数付けると後勝ちで 1 つしか発火せず、後ろにある org 用だけが生き残り、既存フォルダ用のパネルが出なくなっていた(#31 で org 用 importer を追加した際に混入した回帰)。

修正

  • .fileImporter を 1 つに統合し、用途は FolderImporterTarget enum(.repository / .org)で分岐
  • 各トリガーボタンは importerTarget を設定してから showImporter = true
  • ターゲットを Optional にして isPresented の set で nil クリアする設計は完了コールバックとの順序レースがあるため避け、「Bool + 常に有効な enum」の 2 変数構成とした

検証(実機・AX 自動操作)

修正前後で Debug ビルドを起動し、AX(process "LaboLabo" 限定)でメニュー操作して確認:

操作 修正前 修正後
既存のフォルダを開く… ❌ パネル出ず ✅ NSOpenPanel 出現
org 内のリポジトリを個別に開く… ✅(退行なし)
新規セッション(worktree を作成)… ✅(.sheet 併存の退行なし)

いずれもパネル/シートはキャンセルで閉じ、フォルダ選択・セッション作成は行っていない。xcodebuild は BUILD SUCCEEDED。

同一ビューに .fileImporter が 2 つ付いていたため(既存フォルダ用と org 用)、
SwiftUI の同種プレゼンテーション修飾子の後勝ちで既存フォルダ側が発火しなかった。
1 つの .fileImporter に統合し、用途は importerTarget(enum)で分岐する。
@sasagar sasagar marked this pull request as ready for review July 6, 2026 11:58
@sasagar sasagar merged commit 3aec7e5 into dev Jul 6, 2026
2 checks passed
@sasagar sasagar deleted the feature/fix-open-folder-importer branch July 6, 2026 11:58
sasagar added a commit that referenced this pull request Jul 6, 2026
同一ビューに .fileImporter が 2 つ付いていたため(既存フォルダ用と org 用)、
SwiftUI の同種プレゼンテーション修飾子の後勝ちで既存フォルダ側が発火しなかった。
1 つの .fileImporter に統合し、用途は importerTarget(enum)で分岐する。
@sasagar sasagar mentioned this pull request Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant