Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ソング:水平方向の拡大縮小と同時に垂直スクロールしてしまう #1995

Closed
1 of 3 tasks
KoharuYuzuki opened this issue Apr 16, 2024 · 5 comments · Fixed by #1998
Closed
1 of 3 tasks

Comments

@KoharuYuzuki
Copy link
Contributor

不具合の内容

ソングエディタで、Cmdキー + マウススクロールでのピアノロールの水平方向の拡大縮小を行うと、同時に垂直方向にスクロールしてしまいます。

現象・ログ

同上

再現手順

ピアノロール上でCmdキーを押しながら、マウスホイールを回転させる。

期待動作

マウススクロールによる拡大縮小中はスクロールしない。

VOICEVOXのバージョン

0.18.1

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux
  • macOS Ventura 13.6.3

その他

ScoreSequencer.vueのonWheelとonScrollの両方が呼び出されているからかもしれません。
もしこれが正しければ、wheelイベントをevent.preventDefaultすることで修正できそうです。
(ヒホ様からアドバイスを頂きました: https://twitter.com/hiho_karuta/status/1780348935170572537)

const onWheel = (event: WheelEvent) => {
const sequencerBodyElement = sequencerBody.value;
if (!sequencerBodyElement) {
throw new Error("sequencerBodyElement is null.");
}
if (isOnCommandOrCtrlKeyDown(event)) {
cursorX.value = getXInBorderBox(event.clientX, sequencerBodyElement);
// マウスカーソル位置を基準に水平方向のズームを行う
const oldZoomX = zoomX.value;
let newZoomX = zoomX.value;
newZoomX -= event.deltaY * (ZOOM_X_STEP * 0.01);
newZoomX = Math.min(ZOOM_X_MAX, newZoomX);
newZoomX = Math.max(ZOOM_X_MIN, newZoomX);
const scrollLeft = sequencerBodyElement.scrollLeft;
const scrollTop = sequencerBodyElement.scrollTop;
store.dispatch("SET_ZOOM_X", { zoomX: newZoomX }).then(() => {
const cursorBaseX = (scrollLeft + cursorX.value) / oldZoomX;
const newScrollLeft = cursorBaseX * newZoomX - cursorX.value;
sequencerBodyElement.scrollTo(newScrollLeft, scrollTop);
});
}
};
const onScroll = (event: Event) => {
if (event.target instanceof HTMLElement) {
scrollX.value = event.target.scrollLeft;
scrollY.value = event.target.scrollTop;
}
};

@Hiroshiba
Copy link
Member

@KoharuYuzuki issue作成ありがとうございます!

手元のmac(物理マウスではなくトラックパッド)で試してみました、たしかにスクロールされちゃいますね!!
windowsだと発生しないので不思議ですね・・・。

wheelイベントとscrollイベントの仕様がよくわかりませんが、もしかしたらctrl+wheelはマウス操作だと拡大・縮小にためスクロールイベントが発生しないのかもです。
まあとりあえずpreventDefaultしてあげつつ、その理由をコメント書いておくのが良いのかなと感じました。

@KoharuYuzuki 検証ありがとうございます!!
もしよかったらプルリクエストの作成に挑戦してみませんか?

@KoharuYuzuki
Copy link
Contributor Author

@Hiroshiba プルリクエストの作成、挑戦させてもらいます!

@Hiroshiba
Copy link
Member

おお、ぜひぜひ!!
不明な点があればなんでもお聞きください!

@KoharuYuzuki
Copy link
Contributor Author

これで良いのか不安ですが、プルリクエストを作成しました。

Hiroshiba pushed a commit that referenced this issue Apr 25, 2024
ソング:水平方向の拡大縮小時に垂直スクロールするのを修正 (#1995)
@Hiroshiba
Copy link
Member

issue作成とPR取り組みありがとうございました、助かりました!!

sevenc-nanashi pushed a commit to sevenc-nanashi/voicevox that referenced this issue Apr 28, 2024
ソング:水平方向の拡大縮小時に垂直スクロールするのを修正 (VOICEVOX#1995)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants