バグ #670
完了初回起動時にチュートリアルが表示されない場合がある
説明
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表示が開始されていないようにも見えますが、
そもそもチュートリアルが開始される条件は何なのでしょう?
ファイル
toshi_a 初音 さんが10年以上前に更新
- ステータス を 新規 から 実装待ち に変更
確かに、タイムラインの上のほうに真っ白なツイートがあるようで、クリックするとそれを選択出来ました(標準リストビューの選択色になりました)。
また、デバッグモードで起動すると原因不明のクラッシュを引き起こしているようです。
Izumi Tsutsui さんが10年以上前に更新
デバッグモードで起動すると無言で終了してしまうのは
core/mui/cairo_cell_renderer_message.rb
の
if Mopt.debug raise e end
http://dev.mikutter.hachune.net/projects/mikutter/repository/revisions/bb6cd76e9ac8855073a91e0c130265c8e720fb0e/entry/core/mui/cairo_cell_renderer_message.rb#L135
で終了してるっぽいです。上記2行をコメントアウトするとデバッグモードでも継続します。
で、notfoundが原因なんですかね。
Izumi Tsutsui さんが10年以上前に更新
上記の 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 なので
親ディレクトリの先頭しか置き換えていないとか?
Izumi Tsutsui さんが10年以上前に更新
添付のパッチのように適当にいじって
system message の場合は render_icon_over_button() を呼ばないようにすると
一応DRキャンセルプラグイン有効でもチュートリアルの表示は出て認証まで行けました。
が、表示しないだけでふぁぼやRTボタン自体は有効のままっぽいので、
認証前にmikutter_botさんアイコンのふぁぼやRTに相当する部分を押すと落ちます。
また、リプライ部分を押すとリプライ入力ができてしまいます。
(試してませんがそのまま投稿すると落ちる?)
どうしたもんでしょう。
toshi_a 初音 さんが10年以上前に更新
ありがとうございます!コメント3の件は、どこで死んでいるのか原因が分からなかったのですが、これで漸くわかりました。Serviceが無いことを考えていないコードが、DRプラグインで隠れていたんですね。
頂いたパッチについては、コアの方でServiceが無い時の現在の動作は明らかに間違いなので、そちらがどういう挙動をすべきか検討して実装します。
toshi_a 初音 さんが10年以上前に更新
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を toshi_a 初音 から Izumi Tsutsui に変更
対応しました。
Message#retweeted? と Message.favorited? が、アカウントがない時に常にfalseを返すようにしてクラッシュしないようにしました。
また、システムメッセージにはアイコンオーバボタンを表示しないという件については、確かにシステムメッセージにこれを表示する意味はないので、頂いたパッチを基に表示しないようにしました(c7f0b820)。
Izumi Tsutsui さんが10年以上前に更新
- ステータス を レビュー待ち から 解決 に変更
1d3e7979 相当で確認してDR無効プラグインありで認証まで通るのを確認しました。
ありがとうございます。