敗北

WSLでGdk::Cursor.new(display, name)を使うと落ちる - cobodoのブログ

Gdk::Cursor.new(display, name)との戦い2 - cobodoのブログ

の続き。

職場環境ではカーソルのサイズが64x64で描画され、しかも32x32でトリミングされるという最悪な状況に陥り、その上解決のめどが立たないため、諦めることにした。

Plugin.create(:legacy_cursor) do
  class Gdk::MiraclePainter < Gtk::Object
    private
    def set_cursor(name)
      type = case name
             when 'pointer'
               Gdk::Cursor::HAND2
             when 'text'
               Gdk::Cursor::XTERM
             else
               Gdk::Cursor::LEFT_PTR
             end
      window = @tree.get_ancestor Gtk::Window
      window.window.cursor = Gdk::Cursor.new(type)
      self
    end
  end
end

諦め、それはモンキーパッチ。

MiraclePainterはmikutter 3.8で大幅に手を入れる予定らしいことと、機能 #1203: Gdk::Cursorのインスタンスを得る方法を変更する - mikutter - やることにより他の箇所に波及することも視野に入れ、追従してメンテナンスしていく必要がある。