Ticket #45458

セッション複製時のウインドウ位置がずれていない

Open Date: 2022-08-26 06:51 Last Update: 2022-09-15 01:10

Reporter:
Owner:
Type:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

v4.106までは、セッション複製すると新しいウインドウが少し右下にずれ、重ねて表示されていた。 Teraterm5 では、ずれはなくセッション複製元のウインドウの真上に表示されるようになった。

仕様変更?

Ticket History (3/16 Histories)

2022-08-26 06:51 Updated by: tomo3136
  • New Ticket "セッション複製時のウインドウ位置がずれていない" created
2022-08-26 13:01 Updated by: nmaya
Comment

仕様

  • TERATERM.INI の VTPos の座標 (x, y)
    • 座標を指定することができる
    • -2147483648(CW_USEDEFAULT) の場合、Windows が表示位置を決める
      • 重ならない位置に表示されるのはこのため
      • 自動で決まった位置が重なることもある
  • セッションの複製時には pm->ts 経由で ts がコピーされる
  • 2個目以降のインスタンスのときはウィンドウの座標は CW_USEDEFAULT = Windows 任せになる

5 で変わっている部分

  • r9547 から、共有メモリへの保存・読み込み処理が変更された
    • 直接変更できなくなった
  • 2個目以降のインスタンスのときの動作が変更された
    • 元の動き
      • 共有メモリ内の座標を CW_USEDEFAULT に変更する
      • 共有メモリから ts にコピーする
    • 新しい動き
      • ts の座標を変更する
      • 共有メモリから ts にコピーすると ts の座標は上書きされる
2022-08-26 13:01 Updated by: nmaya
Comment

r10186 で修正しました。

2022-08-27 07:40 Updated by: tomo3136
Comment

確認:trunk/r194

修正されていることを確認しました。

複製したセッションのウインドウが常に重なってしまったため、

SSH認証画面を表示までに時間がかかる場合、

つい、複製元の動作状況を見ようと、

重なったウインドウのタイトルバーをドラッグして移動してしまい、

SSH認証画面を表示しない状態に入れてしまっていました(チケット #45459 )

最初から見えるようにずれていれば、そのような事故に合わなくて済むので助かります。

2022-08-27 20:03 Updated by: nmaya
  • Status Update from Open to Closed
  • Owner Update from (None) to nmaya
  • Resolution Update from None to Fixed
2022-09-04 02:17 Updated by: doda
Comment

この動作ですが、VTPosでX, Y共にCW_USERDEFAULTを指定しているときは妥当な動作だと思います。

ただ、VTPosに特定の座標を設定している場合は、新しい接続から開く時は何枚開いても同じ位置に出るのに、セッション複製のみ位置がずれるのは不自然に思います。

TERATERM.INIでVTPosに特定の位置を指定している場合は常にその位置で開いて欲しいと考えていると思うので、その場合はセッションの複製時にも同じ位置で開くようにできないでしょうか?

2022-09-04 10:23 Updated by: nmaya
Comment

新しい接続から開く時は何枚開いても同じ位置に出るのに、

本当にそうですか?私の手元では、新しい接続から開いても同じ位置に出ません。

TERATERM.INIでVTPosに特定の位置を指定している場合は常にその位置で開いて欲しいと考えていると思うので、

2.3 からこのコードになっています。1.4 にも同じコードがあります。

1個目のインスタンスは指定された場所に表示していて、2個目以降のインスタンスでずれるのは重なって見えづらいから、という設計なのではないでしょうか。

それでも変更しますか?

2022-09-04 17:00 Updated by: doda
Comment

新しい接続から開く時は何枚開いても同じ位置に出るのに、

本当にそうですか?私の手元では、新しい接続から開いても同じ位置に出ません。

すみません、trunkのHEADでは動作が変わったのですね。

上記は4.106での動作の話です。なので、この部分の動作が4.106から変わる事になります。

2.3 からこのコードになっています。1.4 にも同じコードがあります。

2.3ではこの部分によって2枚目以降は位置が変わるのですが、2.3+UTF-8 2.06で常にTERATERM.INIを読み込むようになってからは2枚目以降でもTERATERM.INIのVTPosが使われるようになっています。

18年近く続いた現在の動作を2.3相当に戻すのが妥当かは議論が必要だと思います。

上記の点とは別に、現在のtrunkのHEADには以下の問題が有ります。

  • 2枚目以降では、/F=コマンドラインオプションで指定した設定ファイルのVTPos設定や、/X=, /Y=コマンドラインオプションの指定が無視される
  • 2枚目以降に対して、VTウィンドウの初期位置にTTXが介入出来ない

前者は影響がかなり大きいと思います。

後者の影響を受ける人は少ないと思いますが、少なくとも私は受けますし、2枚目以降の初期位置の動作が2.3相当に変わるのならTTXで動作を変えようと思っても出来ない事になります。

2022-09-04 21:40 Updated by: nmaya
Comment

「Tera Term 5 で動作おかしくなった」というチケットなので、trunk しか見ていませんでした。すみません。4-stable での動きを確認しました。

新しい接続から開く時は何枚開いても同じ位置に出るのに、セッション複製のみ位置がずれる

この通りでした。

2.3+UTF-8 2.06で常にTERATERM.INIを読み込むようになってからは2枚目以降でもTERATERM.INIのVTPosが使われるようになっています。

2個目以降のインスタンスで共有メモリの VTPos を CW_USEDEFAULT に変更するコードはずっとありましたが、INIを読み込んで上書きされ(新しい接続はここまで)、さらにセッションの複製のときには共有メモリから読み込むので CW_USEDEFAULT になる、となっています。

trunk で変わったのは、共有メモリの VTPos を CW_USEDEFAULT に変更するコードが、そうではなくなってしまったのが始まりと思います。

動作の整理

いまの動き

  • 4-stable
    • 新しい接続「TERATERM.INI の VTPos の位置」
    • セッションの複製「CW_USEDEFAULT」
  • trunk
    • 新しい接続「CW_USEDEFAULT」
    • セッションの複製「CW_USEDEFAULT」

tomo3136 さんの要望

  • セッションの複製「CW_USEDEFAULT」

いわもとさんの要望

  • 新しい接続「TERATERM.INI の VTPos の位置」trunk の動きを 4 の動きに戻すべき
  • セッションの複製「TERATERM.INI の VTPos の位置」新しい接続と動きが異なるのは不自然。4-stable も trunk も?


新しい接続を「TERATERM.INI の VTPos の位置」に戻すのはよいと思いますが、セッションの複製のほうは要望が衝突しています。どう折り合いをつけましょうか?

(Edited, 2022-09-04 23:03 Updated by: nmaya)
2022-09-04 23:24 Updated by: doda
Comment

本人に確認しないと正確なところは判りませんが、tomo3136さんが挙げている「同じ位置に表示して欲しくない理由」は新しい接続時にも当てはまると思います。

なので、tomo3136さんはTERATERM.INIのVTPosにはX,Y共にCW_USEDEFAULTを指定しているのではないかと思います。

それならば、セッションの複製時にも「TERATERM.INIのVTPosの位置」になるようにすればどちらの要望も満たすと思います。

2022-09-05 06:21 Updated by: tomo3136
Comment

ご検討ありがとうございます。


tomo3136さんはTERATERM.INIのVTPosにはX,Y共にCW_USEDEFAULTを指定しているのではないかと思います。

位置を固定して使いたいシーンは、今まで無かったので VTPos や /X= /Y= は、実使用で使ったことはありません。

このため、設定ファイルは、デフォルトの "VTPos=-2147483648,-2147483648" で使用しています。

ウインドウ固定で使用したい人もいると思いますので、設定したら初回ウインドウは固定位置で良いと思います。

自分は、操作感がほかのプログラムと同じにしたいので、OSお任せのほうが違和感なく使えるかなと思っています。


「新しい接続」でも別ウインドウが開くのですね。気づきませんでした。

自分は、基本的には UART 接続がメインで、接続先ごとにショートカットを作成し、 ボーレートなどの設定が異なる設定ファイルを指定して使っております。

また、 ssh でサーバ接続するときもありますが、複数同時ログインすることはあっても、 サーバやログイン名が変わることはないため「セッションの複製」は使っていました。

「新しい接続」は最初のセッティング以外はあまり使っておらず、 「新しい接続」で別ウインドウを開く必要がありませんでした。


それならば、セッションの複製時にも「TERATERM.INIのVTPosの位置」になるようにすればどちらの要望も満たすと思います。

v5.0 は、Unicode化、デフォルトフォルダ変更、ライブラリのバージョンアップ、バグフィックスがメインと思います。

その他のTopicに上がらないことは、内部コードは異なっても動作は以前と同じかそれに近い状態にあっていただけると v5.0 への移行はスムーズになるかと思います。

2022-09-05 08:14 Updated by: nmaya
  • Status Update from Closed to Open
  • Resolution Update from Fixed to Accepted
  • Details Updated
Comment

セッションの複製時にも「TERATERM.INIのVTPosの位置」になるようにすればどちらの要望も満たす

なるほど、わかりました。

「INIを読み込む」のあとに「複製なら共有メモリからのコピー」の処理があります。ts.VTPos は現在のウィンドウ位置なので、共有メモリ経由で「複製元が読み込んだ TERATERM.INI の VTPos の位置」ではなく「複製元の今のウィンドウの位置」を受け取ることになります。

「セッションの」複製なので INI の位置ではなく、今のウィンドウと同じ位置になってもおかしくない気もします。共有メモリからコピーする前に、読み込んだ INI の VTPos を待避しておいてコピー後に戻せば「TERATERM.INI の VTPos の位置」にすることもできます。どちらが妥当でしょうか。

2022-09-05 08:43 Updated by: nmaya
Comment

「複製元の今のウィンドウの位置」

これだとCW_USEDEFAULTを設定しているときだめですね。待避した位置を使うようにします。

2022-09-05 22:46 Updated by: nmaya
Comment

修正をコミットしました

2022-09-05 23:59 Updated by: nmaya
Comment

2枚目以降では、/F=コマンドラインオプションで指定した設定ファイルのVTPos設定や、/X=, /Y=コマンドラインオプションの指定が無視される

これは解消されたように見えます。どうでしょうか。

2枚目以降に対して、VTウィンドウの初期位置にTTXが介入出来ない

こちらは確認の仕方がわからないのですが、どうでしょうか。

2022-09-15 01:10 Updated by: doda
  • Status Update from Open to Closed
  • Resolution Update from Accepted to Fixed
Comment

ありがとうございます。OKです。

こちらは確認の仕方がわからないのですが、どうでしょうか。

TTXから介入する場合はReadIniFile/ParseParamで該当の設定を書き換える事になるので、これらの呼び出しの後の設定の状態を尊重してもらえれば大丈夫です。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login