Windowsのディスプレイ設定で拡大率が100%より大きい場合に、複数のアニメーション通知をドラッグすると別のトラックに表示され、意図しないどころにドロップしてしまうことがある

アニメーション通知を複数選択してドラッグして、移動させようとするとドラッグ中の半透明の通知が別のトラックに表示されます。

また、ドラッグする対象によってはドラッグ時にカーソルが飛ぶような挙動をすることもあり、意図したところにドロップできないことがあり、操作に困っています。

<br/>

1枚目:100%のとき

[Image Removed]

<br/>

2枚目:150%のとき

[Image Removed]

<br/>

<br/>

再現手順

  1. windowsでディスプレイ設定→拡大/縮小から150%を選択
  2. UE(5.5.4で確認しました)上で、任意のアニメーションモンタージュを開く
  3. 複数トラックがある状態かつ、複数のアニメーション通知を選択した状態でドラッグを行うと報告のように1トラック間があいたものをドラッグしたかのような見た目になる
  4. このとき、ドラッグ時に位置がずれるのか上下に1トラックだけ移動するのがやりづらい印象があります

お世話になっております。

ご報告ありがとうございます。

本件は不具合としてデータベースに登録されました。

数営業日中に以下のリンクより状況をトラッキングできるようになる予定です。

https://issues.unrealengine.com/issue/UE-294561

ご不便をおかけしますが表示スケール100%の状態で運用いただくか、

ソースコードよりビルドしたエンジンをご利用の場合は以下の変更にて症状を改善できるかと思います(これは正式な修正内容とは異なる場合があります)。

SAnimNotifyPanel.cpp SAnimNotifyPanel::OnNotifyNodeDragStarted 関数内(4340行目あたり)

`//追記
const FSlateRenderTransform InvTrackTransform = GetCachedGeometry().GetAccumulatedRenderTransform().Inverse();

for(const TSharedPtr& Node : Nodes)
{
//変更
const FVector2D OffsetFromFirst( InvTrackTransform.TransformVector( Node->GetScreenPosition() - OverlayOrigin) );
//const FVector2D OffsetFromFirst( Node->GetScreenPosition() - OverlayOrigin );

NodeDragDecoratorOverlay->AddSlot()
.Padding(FMargin(static_cast(OffsetFromFirst.X), static_cast(OffsetFromFirst.Y), 0.0f, 0.0f))
[
Node->AsShared()
];
}`

よろしくお願いいたします。

こちらの問題は CL#43261681 で修正が行われてUE5.7で反映予定となります(修正内容は上記の提案コードと同一です)。

お手数ですがこちらの修正を適用頂くか、エンジンのバージョンアップ後にご確認頂けますと幸いです。

修正案のコードありがとうございました。

ローカルで適応してみましたが、画像のように1つの通知が端まで伸びている場合にドラッグしようとすると正しくない挙動をしています。

スケールが100%であれば問題ありませんでした。こちらも確認いただけますか?

[Image Removed]

ご確認ありがとうございます。

手元で確認してみましたが(いずれの倍率においても配置の安定性が怪しい感じはするものの)表示倍率が大きい場合のみに見られる「正しくない挙動」というのがどのような挙動を指しているのか分かりませんでした。

お手数ですが具体的に示して頂けますでしょうか。

よろしくお願いいたします。

動画もアップロードできるんですね。画像だけかと思っていました。上記のコードを反映させた状態で、改めて再現をさせて操作をキャプチャしました。

この動画は、一度二つを左に少し移動させようとすると、スナップしたように急に左端に吸着し右に動かそうとしてもなかなか動かない状況が再現できています。ドラッグの開始位置によっては右に動かせるような印象があります。

また、スナップ設定を消しても特に影響がないように見えました。

ある程度長さが長いと起きるような印象があり、トラックの長さに対して、通知が短い場合には起きません。バニラのエンジンでも同じような挙動に見える現象があるので今回の対応が原因のエンバグではないのかなと考えています。

よろしくお願いします。

> 現状画面解像度の倍率変更によってドラッグできないことが作業に支障をきたす場合、100%の倍率に戻して頂くか、Windowsの拡大鏡を利用することで、回避して頂くような方法もございます。

現在ハードウェア構成的にWindowsのデフォルトが150%になっていることと、100%では小さすぎるという苦情が出ているので採用はできません。

もろもろ確認ありがとうございます。そちらの環境で起きないとすると何か環境の違いがあるのかもしれません。まず CL#43261681 を導入して社内の他の人のところでも発生するかなど、調べてみようと思います。

一番最初の問題自体は解消されていることが確認できましたので、別の問題の再現条件が確定しましたら、別のスレッドを立てて報告させていただきます

ご確認頂きありがとうございます。UE5.6.0+ CL#43261681 適用後の環境でこちらでも確認してみたのですが、添付のように特に問題のある挙動には見受けられませんでした。バニラのエンジンでも発生していたとしたら今回の修正によって発生しなくなった可能性もあるかと思いますが、実際に追加のご質問を頂いた件については「バニラだと起きていないが修正を入れたことによって発生するようになった」といった問題になるのでしょうか?お手数ですがご確認頂けますと幸いです。

現状画面解像度の倍率変更によってドラッグできないことが作業に支障をきたす場合、100%の倍率に戻して頂くか、Windowsの拡大鏡を利用することで、回避して頂くような方法もございます。