プロジェクト

全般

プロフィール

バグ #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表示が開始されていないようにも見えますが、
そもそもチュートリアルが開始される条件は何なのでしょう?


ファイル

no-tutorial.png (14.8 KB) no-tutorial.png 最初のチュートリアルが表示されない状態 Izumi Tsutsui, 2014-05-10 23:45
tutorial_register.png (32.4 KB) tutorial_register.png 手動アカウント登録後にチュートリアルが出てきた状態 Izumi Tsutsui, 2014-05-10 23:45
cairo_miracle_painter.rb.diff (428 Bytes) cairo_miracle_painter.rb.diff Izumi Tsutsui, 2014-05-13 19:50

toshi_a 初音 さんが10年以上前に更新

  • 担当者toshi_a 初音 にセット

チュートリアルは実績「tutorial」が解除されていない状態で必ず発生します。なんでしょうね

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無効プラグインありで認証まで通るのを確認しました。
ありがとうございます。

toshi_a 初音 さんが10年以上前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF