Qt 5 の未来は明るいブログ

Qt Creator のマウスホイールのスクロールでズーム機能のバグを修正しました

Published: 2015-07-11 / Last modified: 2015-07-11

2015年7月の Qt 勉強会 #24 の時に送った TextEditor: follow "Enable scroll wheel zooming" setting behavior というパッチが取り込まれました。

修正したかった問題

Qt Creator の差分表示画面で、Ctrl + ホイールスクロールが有効になっていて、しかも片方だけズームが変わる問題を修正しようと思っていました。

最初のパッチ

この差分表示画面にはスクロール位置を同期させるコードがあったので、そこを真似して、wheelEvent が来てズームが変わったら、もう片方のビューアーのズームも同じように変えるようなパッチを送りました。

再現しない

最初にレビューしてくれた方から「これ何のパッチなの?」と聞かれ、「そもそもその問題再現しないんだけど?」というコメントがついて、そんなバカな?という感じでしたが、設定の TextEditor > Behavior options > Enable scroll wheel zooming にチェックが入っている場合(デフォルトの動作)にはこの現象は起こらず、うまく同期されているということが判明しました。

方針転換

その設定にチェックが入っていない場合にはそもそもスクロールしないのが正解ということで、最終的な変更は src/plugins/texteditor/texteditor.cpp このようになりました。

だいぶ対処療法的ですが、そもそものホイールスクロールズームが void QPlainTextEdit::wheelEvent(QWheelEvent *e) でこのように実装されているため、スマートには解決できず、注意コメント付きの怪しいパッチになってしまいました。

Qt Creator 3.5.0 から反映されます

本当は 3.4 ブランチにプッシュすべきパッチだった気がしますが、もう 3.5 系がリリースされていると勘違いしていたため 3.5 ブランチにプッシュしてしまいました。

どうでもいいバグなのでこの修正を心待ちにしている方はいないと思われますが、つい先日リリースされたばかりの Qt Creator 3.5 beta1 にはこの修正が取り込まれているので気になる方はお試し下さい。