SplitContainer2 のスプリッタが動かされた場合に StatusMultiline の設定値を更新する処理が、
起動時のレイアウト中に意図せず呼び出されてしまい前回終了時の設定を上書きしてしまったことが原因
4d060a91 のコミット以前の動作 (v1.3.9 までと同様):
1. ApplicationEvents.Main メソッドで SettingLocal.xml の設定が読み込まれる
(例として読み込まれた StatusMultiline の設定値を true とする)
2. TweenMain_Load メソッド内で this.ClientSize が更新される
→ SplitContainer2_Panel2_Resize メソッドが呼ばれる
→ 現時点の SplitterContainer2 の状態から multiline は false と判定される
→ MultiLineMenuItem.Checked に false がセットされる (SettingManager.Local は更新されない)
3. TweenMain_Load メソッドから TweenMain_Resize メソッドが呼ばれる
→ StatusText.Multiline に SettingManager.Local.StatusMultiline の値がセットされる
4. StatusMultiline が true の状態で起動が完了する
4d060a91 のコミット以降の動作 (不具合あり):
1. ApplicationEvents.Main メソッドで SettingLocal.xml の設定が読み込まれる
(例として読み込まれた StatusMultiline の設定値を true とする)
2. TweenMain_Load メソッド内で this.ClientSize が更新される
→ SplitContainer2_Panel2_Resize メソッドが呼ばれる
→ 現時点の SplitterContainer2 の状態から multiline は false と判定される
→ SettingManager.Local.StatusMultiline に false がセットされる
3. TweenMain_Load メソッドから TweenMain_Resize メソッドが呼ばれる
→ StatusText.Multiline に SettingManager.Local.StatusMultiline の値がセットされる
4. StatusMultiline が false の状態で起動が完了する
Fixes:
4d060a91 ("ContextMenuPostMode以下のチェック状態をMenuItem側ではなくSettingCommon等で管理する")
更新履歴
==== Ver 1.4.1-dev(xxxx/xx/xx)
+ * FIX: 投稿欄の複数行表示が次回起動時に保持されない不具合を修正
==== Ver 1.4.0(2017/10/30)
* NEW: 自分宛のリプライを送信する場合に先頭の「@... 」を除去します (返信先ツイートの情報は維持したまま投稿されます)
private void SplitContainer2_Panel2_Resize(object sender, EventArgs e)
{
+ if (this._initialLayout)
+ return; // SettingLocal の反映が完了するまで multiline の判定を行わない
+
var multiline = this.SplitContainer2.Panel2.Height > this.SplitContainer2.Panel2MinSize + 2;
if (multiline != this.StatusText.Multiline)
{