Skip to content

ディスプレイ全体の翻訳に対応する - #540

Open
Freeesia with Copilot wants to merge 16 commits into
masterfrom
copilot/fix-display-translation-error
Open

Freeesia with Copilot wants to merge 16 commits into
masterfrom
copilot/fix-display-translation-error

Conversation

Copilot AI commented Dec 15, 2025 •

Copy link
Copy Markdown
Contributor

概要

  • キャプチャー選択画面でディスプレイを選ぶと、選択項目の DisplayName を設定名として翻訳を開始します。
  • 画面キャプチャーとオーバーレイの処理を、ウィンドウとモニターの両方に対応させます。
  • モニター翻訳のオーバーレイは、開始した仮想デスクトップだけに表示し、他のデスクトップでは非表示にします。元のデスクトップへ戻ると再表示します。
  • 各言語の「モニター非対応」という古いエラーメッセージを削除します。

master 取り込みと修正

  • master を取り込み、テスト用 DI 登録の競合を解決しました。
  • Win32 API の引数型と unsafe コンテキストを修正しました。
  • 列挙した全モニターで CaptureHelper.CreateItemForMonitor を呼び、選択した項目と表示名・サイズが一致する候補が1台だけなら採用します。
  • master で追加された言語リソースとテスト用実装を合わせました。

対象判定の整理

  • 設定名に列挙番号は使いません。以前の DISPLAY__<番号> で保存した設定は自動移行しません。
  • 自動翻訳開始は現状どおり、プロセス名と設定を照合したウィンドウだけが対象です。
  • ICaptureModule.StartCapture に渡されたハンドルを IsWindow と GetMonitorInfo で検証し、キャプチャー方式を選びます。無効なハンドルはエラーにします。
  • オーバーレイとキャプチャー画面も同じハンドル判定を使います。
  • IProcessInfoStore.IsMonitor を削除し、モニターも保持する MainWindowHandle を TargetHandle に改名しました。プラグイン向けインターフェイスの破壊的変更です。

レビュー指摘への対応

  • モニター翻訳の開始時にデスクトップ ID を記録し、現在の ID と定期的に照合します。表示だけを切り替え、キャプチャーと翻訳は継続します。
  • キャプチャー項目の照合ではディスプレイを先に探し、見つからない場合だけウィンドウを探します。
  • オーバーレイの位置更新はモニター用の専用メソッドをやめ、単一メソッドの if/else にまとめました。

確認状況

  • アプリ本体、テストプロジェクト、同梱 FoM プラグインのビルド:成功(既存の CS9336 警告あり)。
  • git diff --check:問題なし。
  • ConfigurePluginParamOptionsTests:3件すべて成功しました。
  • 最新コミット c8b22a29 では GitHub Actions の .NET Core Package と .NET Core Desktop がともに成功しました。
  • 今回のオーバーレイ修正後、アプリ本体の --no-restore -p:BuildProjectReferences=false ビルドが警告・エラーなしで成功しました。
  • 前回のローカル検証ではアプリ本体の --no-restore -p:BuildProjectReferences=false ビルドが成功し、ソリューション全体の --no-restore ビルドはテストプロジェクトの project.assets.json 不足で失敗しました。
  • 修正前にオーバーレイが全仮想デスクトップへ表示されることを実画面で確認しました。今回の修正後の仮想デスクトップ切り替え、ディスプレイ選択、複数モニターの実画面動作は未確認です。現在のデスクトップ ID は Explorer のレジストリ値に依存するため、切り替え直後には表示更新の遅れがあり得ます。

Fixes #539

Copilot AI and others added 3 commits December 15, 2025 12:06
Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>
Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>
Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix error when selecting display for translation Support display/monitor capture with DISPLAY__<index> naming scheme Dec 15, 2025
Copilot AI requested a review from Freeesia December 15, 2025 12:17
@Freeesia

Copy link
Copy Markdown
Owner

@copilot

IProcessInfoStoreに対象がモニターかどうか判定するプロパティ追加して利用して。

…ng checks

Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>

Copilot AI commented Dec 15, 2025

Copy link
Copy Markdown
Contributor Author

@copilot

IProcessInfoStoreに対象がモニターかどうか判定するプロパティ追加して利用して。

IProcessInfoStoreにIsMonitorプロパティを追加し、全てのName.StartsWith("DISPLAY__")チェックを置き換えました。

変更内容:

  • IProcessInfoStoreインターフェースにIsMonitorプロパティを追加
  • ProcessInfoStoreでSetTargetProcess時にIsMonitorを自動設定
  • WindowsGraphicsCapture, CaptureMainWindow, OverlayMainWindowの4箇所で使用

コミット: 257c22f

@Freeesia Freeesia changed the title Support display/monitor capture with DISPLAY__<index> naming scheme ディスプレイ全体の翻訳に対応する Sep 23, 2026
Comment thread WindowTranslator/Modules/Startup/StartupViewModel.cs Outdated
Comment thread WindowTranslator/Modules/Main/OverlayMainWindow.xaml.cs
@Freeesia
Freeesia marked this pull request as ready for review September 23, 2026 12:49

This branch has not been deployed

No deployments
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.

ディスプレイ全体を翻訳対象にできるようにする

2 participants