tor4kichi / Hohoema

Windows10向けニコニコ動画プレイヤー
GNU General Public License v3.0
76 stars 10 forks source link

【v1.2.7】別ウィンドウを閉じてから再表示すると表示や操作に異常が見られる #872

Closed tor4kichi closed 2 years ago

tor4kichi commented 3 years ago

小さく最前面にする場合は WindowService.IsCompactOverlay を変更するが、動画を閉じる際に WindowService.IsCompactOverlay が変更されていない。(ところまではわかっているが何故コメントが表示されないかは調査必要)

tor4kichi commented 3 years ago

セカンダリウィンドウを ApplicationView.TryConsolidateAsync() で閉じた上で、再度セカンダリウィンドウ開くApplicationViewSwitcher.TryShowAsStandaloneAsync(_SecondaryView.Id);と、おそらくUIシステムが内部的にクラッシュ等することによって、アプリケーション側においてフライアウト等が表示されなくなるなど症状が出る。

最小再現プロジェクト SecondaryViewReopenIssue.zip

再現手順

  1. Visual Studio 2019 インストーラーからUWP開発環境を導入
  2. 上記プロジェクトを開く
  3. 実行すると2つ画面が表示される(ボタンがある方がメインウィンドウ、無い方がセカンダリウィンドウ)
  4. まず、セカンダリウィンドウ上で右クリックし、フライアウトが表示されることを確認
  5. 次にセカンダリウィンドウを一度閉じて、メインウィンドウのボタンからセカンダリウィンドウを再表示させる
  6. 再表示後のセカンダリウィンドウ上で右クリックしてもフライアウトが表示されないことを確認
  7. 以上

原因は確定できたがUWPのシステムレベルの問題のためアプリでは対応できない可能性がある。(なんらか回避方法が見つかる可能性もある)

tor4kichi commented 3 years ago

再表示すると問題が顕在化しやすいだけで、別ウィンドウ初回表示時から本エラーが起きる可能性はありそうです。

tor4kichi commented 3 years ago

AppWindowへ移行することで問題を回避する方向で検討中。

tor4kichi commented 3 years ago

v1.2.9 のリリースにて、別ウィンドウの動画プレイヤーで発生していたシークバーを使った再生位置の移動ができなかった問題に対応予定です。

Windowに対するPointerReleaseイベントがAppWindowの仕組みでは扱えないため、SliderコントロールのValueChangedイベントを主軸にした実装に置き換えました。その影響でポインターを離したタイミングではなくポインターを動かしたタイミングですぐに再生位置の移動が処理される形になってます。