バグ #670
完了
初回起動時にチュートリアルが表示されない場合がある
Izumi Tsutsui さんが10年以上前に追加.
10年以上前に更新.
説明
NetBSD/i386 6.1.4 + pkgsrc-2014Q1 で
mikutter-3.0.0-alpha2 のオレオレ作成パッケージ
という「とか環境」ですが、
(ruby-2.0.0p451 + ruby-gnome2-2.2.0)
~/.mikutter が無い状態からのスタートで
% mkdir .mikutter .mikutter/plugin
% touch .mikutter/plugin/display_requirements.rb
と先走ってDRキャンセルのプラグインを入れた状態で
mikutter-3.0.0-alpha2 を起動すると、
最初のチュートリアルが表示されません。
(添付の no-tutorial.png)
設定→アカウント情報→追加 で手動でアカウントを追加して、
アカウント登録の実績解除の表示がされると
その直前にチュートリアルが表示されます。
(添付の tutorial_register.png)
上記で
touch .mikutter/plugin/display_requirements.rb
する代わりに、
mikutter/core/plugin/display_requirements/display_requirements.rb を
~/.mikutter/plugin/ 以下にコピーして、
# アイコン上のボタンの数の変更
def _schemer
{x_count: 1, y_count: 1} end
の3行をコメントアウトすると、この場合もチュートリアルが出なくなります。
チュートリアルが出ないというよりは、TL表示が開始されていないようにも見えますが、
そもそもチュートリアルが開始される条件は何なのでしょう?
ファイル
チュートリアルは実績「tutorial」が解除されていない状態で必ず発生します。なんでしょうね
確かに、タイムラインの上のほうに真っ白なツイートがあるようで、クリックするとそれを選択出来ました(標準リストビューの選択色になりました)。
また、デバッグモードで起動すると原因不明のクラッシュを引き起こしているようです。
上記の cairo_cell_renderer_message.rb の exception を notice で表示してみたところ
notice: {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:136:in
`rescue in message_id=': undefined method `user_obj' for nil:NilClass
from {MIKUTTER_DIR}/tsutsui/mikutter/core/message.rb:303:in `retweeted?'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:196:in `iob_icon_pixbuf_off'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:51:in `block (3 levels) in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:48:in `times'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:48:in `block (2 levels) in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:47:in `times'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:47:in `block in render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:45:in `save'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_icon_over_button.rb:45:in `render_icon_over_button'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:387:in `render_main_icon'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:369:in `render_to_context'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:341:in `gen_pixmap'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:347:in `gen_pixbuf'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_miracle_painter.rb:122:in `pixbuf'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/lib/uithreadonly.rb:22:in `block (2 levels) in singleton class'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:153:in `render_message'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/mui/cairo_cell_renderer_message.rb:132:in `message_id='
from {MIKUTTER_DIR}/tsutsui/mikutter/core/plugin/gtk/mainloop.rb:10:in `main'
from {MIKUTTER_DIR}/tsutsui/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from mikutter/mikutter.rb:62:in `boot!'
from mikutter/mikutter.rb:80:in `<main>'
ということで、認証していないのに retweet (とふぁぼられ?)のステータスを見に行って
失敗しているんでしょうか。
認証していない状態でも表示されるmikutter_botさんに対しては
右クリックメニューでツイート関連操作が抑制されるのと同様に
マウスオーバーアイコンを出さないという仕様にするのがよい
という気もします。
(アイコンが表示されていない状態でも適当にふぁぼやRT部分のあたりを
クリックすると落ちる)
全然関係ありませんが、ログの {MIKUTTER_DIR} のプライバシー保護(?)機能が
ちゃんと働いていないような……。
元の起動ディレクトリが /home/tsutsui/mikutter/mikutter.rb なので
親ディレクトリの先頭しか置き換えていないとか?
添付のパッチのように適当にいじって
system message の場合は render_icon_over_button() を呼ばないようにすると
一応DRキャンセルプラグイン有効でもチュートリアルの表示は出て認証まで行けました。
が、表示しないだけでふぁぼやRTボタン自体は有効のままっぽいので、
認証前にmikutter_botさんアイコンのふぁぼやRTに相当する部分を押すと落ちます。
また、リプライ部分を押すとリプライ入力ができてしまいます。
(試してませんがそのまま投稿すると落ちる?)
どうしたもんでしょう。
ありがとうございます!コメント3の件は、どこで死んでいるのか原因が分からなかったのですが、これで漸くわかりました。Serviceが無いことを考えていないコードが、DRプラグインで隠れていたんですね。
頂いたパッチについては、コアの方でServiceが無い時の現在の動作は明らかに間違いなので、そちらがどういう挙動をすべきか検討して実装します。
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を toshi_a 初音 から Izumi Tsutsui に変更
対応しました。
Message#retweeted? と Message.favorited? が、アカウントがない時に常にfalseを返すようにしてクラッシュしないようにしました。
また、システムメッセージにはアイコンオーバボタンを表示しないという件については、確かにシステムメッセージにこれを表示する意味はないので、頂いたパッチを基に表示しないようにしました(c7f0b820)。
1d3e7979 相当で確認してDR無効プラグインありで認証まで通るのを確認しました。
ありがとうございます。
他の形式にエクスポート: Atom
PDF