Download List

Project Description

Ochusha is a so-called 2ch browser based on GTK+.
It is implemented mainly in C/C++ and employs multi-threading so that it runs considerably quickly. We would like to respond to user's request for features.

System Requirements

System requirement is not defined

Released at 2003-12-05 23:09
ochusha 0.4.5 (1 files Hide)

Release Notes

version 0.4.5 (2003-12-05)
- 板一覧の更新時にデッドロックことがある問題を解決した。
- ポップアップメニューの要素を短くした。
- 1024越えなスレを表示できるようにした。
- リンクっぽい部分をクリックした時に、相対URLの場合には外部ウェブブラ
ウザを起動しないようにした。
- DATファイルが壊れている場合の対策コード周囲のバグを修正した。
- スレ表示ウィジェットでドラッグをした時にリンクっぽい部分でマウスボタ
ンを離した場合に、ドラッグが終了しないバグを修正した。
- XMLパーザ周りのバグを修正した。
- スレ一覧とスレ表示の間のハンドルを動かしてスレ一覧のペインのサイズを
0にしておくと、スレ表示を閉じたときにスレ一覧もろとも消えてしまう問
題を解決した。
- リンクっぽい表示をマウスポインタが通過した(遅延時間前にリンクを離れ
た)場合にはポップアップをやめるように変更した。
- ネットワークアクセススレッドの動作を完全に変更した。
* ネットワークアクセス時のスレッド毎に自前でやっていたpollingをやめ
た。その結果、ネットワークアクセスが高速化されたが、GUIの反応が悪
くなった悪寒。
- 書き込み時処理を別スレッドで行うようにした。
- メニューバーのメニューとスレ一覧とスレ表示にそれぞれショートカットキー
を追加した。
- 一部のアイコンを自前のものに変更した。
- 一部のアイコンをgtkrcなどで変更可能にした。
- 板一覧、スレ一覧で使用する色をgtkrcなどで変更可能にした。
- ツールバーのアイコンの大きさなどをgtkrcなどで変更可能にした。

Changelog

* OchushaBBSThread、OchushaBulletinBoardおよびOchushaBoardCategory
にqdataとしてくっつくGUI専用の情報の確保・読み込み時に使うロック
を専用のものにした。これにより、ごく稀に起こっていたデッドロック
問題を解決したつもり。
* ポップアップメニューの各要素を短く変更した。
* OchushaBoardJBBSとOchushaThreadJBBSを追加し、JBBSの親戚な掲示板
(というかHTMLで読んでいるやつ)のサポートをこれらに移動した。
* OchushaBoard2chとOchushaThread2chからは、JBBSの親戚な掲示板サポー
トのコードを全て取り除いた。
* 1024越えなスレを表示できるように変更した。
* DATファイルが壊れている場合の対策コードがわかりにくかったので、
修正した。その周辺のデバッグ用コードが古くなって腐っていたのでそ
れも修正した。68さんありがとう。
* BBSThreadView内部で受け取っているGtkTextVieweウィジェットの
button_release_eventについて、リンクっぽく表示している部分で発生
したイベントである場合にはこれまで、link_mouse_releaseシグナルを
発行した上でハンドラからはTRUEを返していた。その結果、
BBSThreadView上でテキストをドラッグし、リンクっぽい部分でドラッ
グをやめたときに、super classであるGtkTextViewクラスのハンドラが
ドラッグ終了の処理が行われず、ドラッグ中状態が続いてしまうという
問題があった。この問題を解決するため、buttun_release_eventのハン
ドラは常にFALSEを返すように変更した。
* リンクっぽい部分をクリックした時に、おちゅ〜しゃで対応できるスレ
または板以外の場合にはウェブブラウザが起動するようになっているが、
URLを本の少し解析し、少なくともscheme部分が存在する場合のみウェ
ブブラウザを起動するように変更した。scheme毎に起動するアプリケー
ションを変更可能にすべきかもしれないが、その点については一先ず放
置する。
* URLのscheme部分を返す関数を追加した。
* スレ一覧とスレ表示の間のハンドルを動かしてスレ一覧のペインのサイ
ズを0にしておくと、スレ表示を閉じた時にスレ一覧も表示されなくなっ
てしまう問題を解決した。
* レスに対するポップアップが表示されるよりも前に、レスのリンクっぽ
い表示からマウスポインタが離れた場合には、ポップアップ表示をしな
いように変更した。
* XMLパーザ周りに二つのバグがあったので修正した。一つは、XMLファイ
ルが壊れていた時にそのXMLファイルの壊れ方により、パーザが内部的
かつ一時的に使用しているheap外のバッファを間違えてfree()してしま
うことがあるというバグである。もう一つは、XMLパーザがMT-safeでな
かったというバグである。70さんの指摘でパーザ周りを見直して発見し
た。70さんありがとう。
* スレ一覧とスレ表示のウィジェットに基本的な操作のためのシグナルを
定義し、キーをバインドした。
例えば、aキーで書き込みダイアログ表示、Ctrl-wでタブ消去、Ctrl-s
で検索ダイアログ表示など。スレ一覧でのaキーに対するアクションは、
現在のところ簡単のために、現在表示されているスレへの書き込みとなっ
ている。シグナルには、カーソル位置のスレの情報が含まれるため、
「スレ一覧のカーソル位置のスレへの書き込み」という機能を実装する
こともできる。
* メニューバーのメニューにいくつかのショートカットキーを追加した。
Alt-T→Tで現在のスレ一覧の更新、F5キーで現在のスレの更新が追加さ
れた。
* ネットワークアクセス時の自前pollingをやめてみた。危険の悪寒。
* ネットワークアクセスに使っているtimeoutとpollのイベントの優先順
位を調整した。timeoutの優先順位を上げ、pollの優先順位を下げた。
これをしないとネットワークアクセスを急ぎすぎ、その結果GUIの反応
が悪くなる気がする。
* デバッグ出力をダイアログに表示できるようにした。(デフォルトでは
無効化されている)。
* タブ関連のユーザ設定項目を増やした。
* 書き込みを別スレッドで行うようにした。
* ネットワークアクセススレッドの動作が、メインスレッドで実行されて
いるGLibのイベントハンドリングに依存するようになったため、メイン
スレッドでは可能な限りpthread_cond_waitしないように変更した。
* ネットワークアクセススレッドでメインスレッドとの同期に使っている
ロックの粒度が大きすぎたため、ネットワークアクセススレッドの
suspend/resume方式の実装と矛盾し、デッドロックが起こっていたのを
修正した。
* BoardlistViewとThreadlistViewで表示に使う色をgtkrcファイルの
styleで指定できるようにした。
* GtkToolbarの設定をgtkrcファイルで指定できるようにした。
* ochusha-gtkrcがインストールされるように変更し、起動時に読み込む
ようにした。これはこれまでのおちゅ〜しゃで使っていたGtkToolbarの
設定がGTK+のデフォルトとは違っていたため、デフォルトでこれまでの
挙動を実現するために必要。
* 暗い背景ファンのためにochusha-gtkrc.grayというサンプルを用意し、
これもインストールするように変更した。
* レスの書き込みボタンで使うアイコンを自前のものに変更した。アイコ
ンは頑張ればgtkrcで変更可能なはず。
* タブラベルに表示されるネットワークアクセスの状態を表すアイコンを
gtkrcで変更可能にしたつもり。
* ポインタがリンクっぽい表示を通過した場合にポップアップの表示を取
りやめる処理が中途半端だったせいで、親ポップアップが自動的に消え
ない問題を解決した。