読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

gtkmmがなんか変わってた

gtkmm3にしてからこれまでのgtkmmの描画周りのコードがことごとく動かなくなっていたのでなんだいこりゃと思って調べてみたらどうも仕様が変わっているような雰囲気でした。
というのも今までの2系統ではDrawingAreaのon_expose_eventをオーバーロードしてその中で描画をしてやれば窓を表示したらそれっぽい描画がされたのですが、3系統ではそもそもこれが呼び出された形跡すらありません。
で、正解はどうやらon_drawをオーバーロードすることのようです。

class my_drawing_area : public Gtk::DrawingArea {
 protected:
  virtual bool on_draw(const Cairo::RefPtr<Cairo::Context> &ct) {
    // ここに描画コードを書く
  }
};

どうもcairommを使うのがデフォになったみたいで、引数にコンテキストがやってくるので楽になった感はあります。