プロジェクト

全般

プロフィール

バグ #1521

完了

gtk3: postboxのコマンドからのテキスト入力でクラッシュする

あひる 家鴨 さんが2年以上前に追加. 2年以上前に更新.

ステータス:
却下
優先度:
通常
担当者:
-
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:
はい

説明

プラグインのコマンドでpostboxにテキストを設定するような実装があると以下のエラーとともにクラッシュする。
なお、これは 小春六花プラグイン でpostboxに入力したテキストをゴボゴボしようとした際に得られたエラーである。

/home/ahiru/mikutter/vendor/ruby/3.0.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:321:in `method_missing': undefined method `widgetof' for #<Plugin:0x00005634af1e2ff0 @name=:gtk, @defined_time=2021-10-24 21:08:57.982451022 +0900, @events=#<Set: {}>, @filters=#<Set: {}>> (NoMethodError)
        from /home/ahiru/.mikutter/plugin/mikutter_koharu_rikka/mikutter_koharu_rikka.rb:64:in `block (2 levels) in <top (required)>'
        from /home/ahiru/mikutter/plugin/gui/command.rb:27:in `block (2 levels) in get_menu_items'
        from /home/ahiru/mikutter/core/mui/gtk_contextmenu.rb:45:in `block (2 levels) in build!'
        from /home/ahiru/mikutter/core/mui/gtk_extension.rb:35:in `block in safety_signal_connect'
        from /home/ahiru/mikutter/vendor/ruby/3.0.0/bundler/gems/ruby-gnome-554fe3ebba5d/gobject-introspection/lib/gobject-introspection/loader.rb:682:in `invoke'
        from /home/ahiru/mikutter/vendor/ruby/3.0.0/bundler/gems/ruby-gnome-554fe3ebba5d/gobject-introspection/lib/gobject-introspection/loader.rb:682:in `invoke'
        from /home/ahiru/mikutter/vendor/ruby/3.0.0/bundler/gems/ruby-gnome-554fe3ebba5d/gobject-introspection/lib/gobject-introspection/loader.rb:112:in `main_iteration'
        from /home/ahiru/mikutter/plugin/gtk3/mainloop.rb:18:in `block (2 levels) in mainloop'
        from /home/ahiru/mikutter/plugin/gtk3/mainloop.rb:12:in `loop'
        from /home/ahiru/mikutter/plugin/gtk3/mainloop.rb:12:in `block in mainloop'
        from /home/ahiru/mikutter/plugin/gtk3/mainloop.rb:10:in `catch'
        from /home/ahiru/mikutter/plugin/gtk3/mainloop.rb:10:in `mainloop'
        from mikutter.rb:79:in `boot!'
        from mikutter.rb:115:in `<main>'

プラグイン側でエラーを吐いている箇所は以下のような実装になっている。

box = Plugin[:gtk].widgetof(opt.widget).widget_post.buffer

gtk3ブランチではgtkプラグインがgtk3プラグインになったため、Plugin[:gtk]widgetof を呼び出そうとして失敗しており、Plugin[:gtk3] に書き換えたところプラグインは正常に動作した。
後方互換のためgtkプラグインをgtk3プラグインのエイリアスのような形で残してもらえるとよさそう。

なお、環境は mikutter topic/887-gtk(コミットハッシュ: 682d875f), Windows 10 (WSL2 Ubuntu 20.04.3 LTS), ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]


再現手順

  1. 小春六花プラグイン をインストール
  2. topic/887-gtk3 ブランチでpostbox右クリックメニューから ゴボボゴボゴボゴボボボボ を実行

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

  • ステータス分類待ち から 却下 に変更

Plugin[:gtk] のような記述をする場合、依存プラグインにそれを含めてください(.mikutter.ymlに書く)。

また、現時点では偶然動いてますが、mikutter 5(gtk3)リリース後にも動作するかはわかりません。Gtk2とGtk3ではツールキットAPIのほか、gtk3プラグイン側の作りも大きく違っていて、互換性は取らないという方針にしました。プラグイン名をgtk3に変更しているのはそのためです(変えたというより、gtkプラグインを削除して新たにgtk3を作ったイメージです)。

サードパーティプラグイン側にgtkかgtk3どちらに依存しているかを明記していただいて、gtk3に移行するときに動作確認のうえバージョンアップしていただくことになると思います。

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