JDimproved / JDim

2ch browser for linux
https://jdimproved.github.io/JDim/
GNU General Public License v2.0
44 stars 11 forks source link

スレビューの「選択範囲の画像を開く」を使うと2つ目以降の画像は参照元の情報が表示されない #1347

Closed ma8ma closed 4 months ago

ma8ma commented 4 months ago

スレビューの「選択範囲の画像を開く」を使うと2つ目以降の画像は参照元の情報が表示されない

バグの説明

スレビューに表示された画像URLを複数範囲選択して右クリックメニューにある「選択範囲の画像を開く」コマンドを使うと 2つ目以降の画像は参照元スレ名と参照元レスがつきません。

範囲選択ではなく1つずつクリックして開いたときは参照元の情報が表示されます。

再現の方法

  1. JDimを起動して画像URLがあるスレを開く
  2. 画像URLを複数範囲選択する
  3. 右クリックメニューにある「選択範囲の画像を開く」を選択する
  4. 画像がダウンロードされたら画像を右クリックして画像のプロパティを開く
  5. 最初にダウンロードした画像は参照元スレ名と参照元レスが表示される
  6. 2つ目以降の画像は参照元スレ名と参照元レスが空欄になっている

やりたかったこと・期待する結果

「選択範囲の画像を開く」を使ったとき2つ目以降の画像も参照元スレ名と参照元レスが表示される。

スクリーンショット

なし

動作環境

[バージョン] JDim 0.11.0-20240211(git:550c3acda1)
[ディストリ ] Ubuntu 23.10 (x86_64)
[パッケージ] バイナリ/ソース( <配布元> )
[ DE/WM ] KDE
[ gtkmm  ] 3.24.8
[ glibmm  ] 2.66.6
[ TLS lib ] GnuTLS 3.8.1
[オプション ] '--with-alsa''--with-pangolayout'
[ そ の 他 ] 

追加の情報

ソースコードを調べたところ 複数の画像をダウンロードするときは待機処理が入ります。 待機が解除されダウンロードが開始されるときに画像データが保持する参照元のURLが使われますが ダウンロードの前に画像データを初期化する処理が入り保持していたURLが消去されてしまう状態のようです。

https://github.com/JDimproved/JDim/blob/859e3eb17cc84d8fd1829807431a07157ddbe96a/src/dbimg/img.cpp#L294-L298

上記のrefurlDBIMG::Img::download_img( const std::string& refurl, ... )の第一引数でconst参照なので m_refurl を渡している場合はclear()したときに内容が消去されます。