マルチモニタでツールチップが正しく描画されない
マルチモニタ環境で Tera Term をリサイズした場合、左上の描画されるべきの「リサイズ後の縦横サイズ」 ツールチップが、プライマリモニタに表示されてしまうことに気がつきました。
ツールチップの実装は PuTTY のコードを流用したので、PuTTY でも再現します。
UpdateSizeTip() を見ると、以下のif文が怪しそうです。 すなわち、wr.left が負数だった場合、16に丸められてしまいます。
この丸めは PuTTY では意図的に行っているような気がしますが、正しくマルチモニタ環境に 対応させるためにはどうしたらよいでしょうか?
GetWindowRect(src, &wr); ix = wr.left; if (ix < 16) { ix = 16; } iy = wr.top - sz.cy; if (iy < 16) { iy = 16; }
たとえばシングルモニタで、ウィンドウを左に移動していってウィンドウの右半分だけが見えている状態にしてウィンドウの右下をつかんだら、x=16にしないとツールチップが見えないということではないでしょうか。
なるほど。 まずは現状の実装でもよさそうです。
まじめに対応するとなると、マルチモニタ環境かどうかを判定して、負数を受け付けるかどうかを チェックすることになるでしょうが。。
マルチモニタ環境で Tera Term をリサイズした場合、左上の描画されるべきの「リサイズ後の縦横サイズ」 ツールチップが、プライマリモニタに表示されてしまうことに気がつきました。
ツールチップの実装は PuTTY のコードを流用したので、PuTTY でも再現します。
UpdateSizeTip() を見ると、以下のif文が怪しそうです。 すなわち、wr.left が負数だった場合、16に丸められてしまいます。
この丸めは PuTTY では意図的に行っているような気がしますが、正しくマルチモニタ環境に 対応させるためにはどうしたらよいでしょうか?