Hiroyuki Ikezoe
poinc****@ikezo*****
2005年 11月 24日 (木) 15:44:57 JST
zoeです。 2005-11-23 (水) の 17:07 +0900 に Kouhei Sutou さんは書きました: > もともと,「起動時に最後に保存したセッションを復元」にチェッ > クを入れている場合は以下のような問題は起こらなかったんです. > > * セッションを保存すると,復元したときに保存した回数と同じ > 数だけ(タブではなく)ウィンドウが開く > > これは,以下のためです. > > (1) 起動時にkz_bookmarks->current_sessionを > current_session.xmlから読み込んだセッションで初期化. > > 問題1: 起動時はひとつもタブが開かれていないから, > kz_bookmarks->current_sessionは空でなければいけないのに > 空になっていない場合がある. > > (2) 起動時,「起動時に最後に保存したセッションを復元」に > チェックを入れて *いる* 場合はmain.cにある > restore_session()を使って,セッションを復元する. > > 罠1: main.cのrestore_session()はセッションを復元する前 > にkz_bookmarks->current_sessionをクリアしているので, > 問題1を解決している. > > (3) セッションの復元はkz-actions.cにある > act_restore_session()を使って行われる. > > 問題2: 「起動時に最後に保存したセッションを復元」にチェッ > クを入れて *いない* 場合, > kz_bookmarks->current_sessionには(1)で初期化されたセッ > ション中に実際には開かれていないタブの情報が入っている > 可能性ある. > > > 問題は以下で再現できると思います. > > (1) 風博士を起動 > (2) 「セッションを自動的に保存」にチェックを入れる > (3) 「起動時に最後に保存したセッションを復元」のチェックを外す > (4) 適当にタブを開く > (5) 風博士を再起動 > (6) セッションを「復元」 > (7) (6)に戻る ありがとうございます。状況が理解できました。 そもそも、起動時にcurrent_session.xml自体を読み込む必要がないですね。 act_restore_session()内でcurrent_session.xmlから読み込み直してるので。 今度こそちゃんと直ったと思うんですが、どうでしょうか?