X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fcairocell.cc;h=86dac26f2c1d43e159dae4e8b37eb11a99d68868;hb=0938a42440cc82ce8d0cb064840c258c863714ab;hp=79b5a673b45ccc9422fc6c10eb6f2d899b40d68e;hpb=0a53bb1d42361eeb6552af03a1d3578535d948d0;p=ardour.git diff --git a/libs/gtkmm2ext/cairocell.cc b/libs/gtkmm2ext/cairocell.cc index 79b5a673b4..86dac26f2c 100644 --- a/libs/gtkmm2ext/cairocell.cc +++ b/libs/gtkmm2ext/cairocell.cc @@ -39,43 +39,43 @@ CairoFontDescription::CairoFontDescription (Pango::FontDescription& fd) switch (fd.get_style()) { case Pango::STYLE_NORMAL: - slant = Cairo::FONT_SLANT_NORMAL; + _slant = Cairo::FONT_SLANT_NORMAL; break; case Pango::STYLE_OBLIQUE: - slant = Cairo::FONT_SLANT_OBLIQUE; + _slant = Cairo::FONT_SLANT_OBLIQUE; break; case Pango::STYLE_ITALIC: - slant = Cairo::FONT_SLANT_ITALIC; + _slant = Cairo::FONT_SLANT_ITALIC; break; } switch (fd.get_weight()) { case Pango::WEIGHT_ULTRALIGHT: - weight = Cairo::FONT_WEIGHT_NORMAL; + _weight = Cairo::FONT_WEIGHT_NORMAL; break; case Pango::WEIGHT_LIGHT: - weight = Cairo::FONT_WEIGHT_NORMAL; + _weight = Cairo::FONT_WEIGHT_NORMAL; break; case Pango::WEIGHT_NORMAL: - weight = Cairo::FONT_WEIGHT_NORMAL; + _weight = Cairo::FONT_WEIGHT_NORMAL; break; case Pango::WEIGHT_SEMIBOLD: - weight = Cairo::FONT_WEIGHT_BOLD; + _weight = Cairo::FONT_WEIGHT_BOLD; break; case Pango::WEIGHT_BOLD: - weight = Cairo::FONT_WEIGHT_BOLD; + _weight = Cairo::FONT_WEIGHT_BOLD; break; case Pango::WEIGHT_ULTRABOLD: - weight = Cairo::FONT_WEIGHT_BOLD; + _weight = Cairo::FONT_WEIGHT_BOLD; break; case Pango::WEIGHT_HEAVY: - weight = Cairo::FONT_WEIGHT_BOLD; + _weight = Cairo::FONT_WEIGHT_BOLD; break; } @@ -116,9 +116,16 @@ CairoTextCell::render (Cairo::RefPtr& context) return; } + context->save (); + + context->rectangle (bbox.x, bbox.y, bbox.width, bbox.height); + context->clip (); + _font->apply (context); context->move_to (bbox.x, bbox.y + bbox.height + y_offset); context->show_text (_text); + + context->restore (); } void @@ -225,13 +232,13 @@ CairoEditableText::on_scroll_event (GdkEventScroll* ev) } bool -CairoEditableText::on_focus_in_event (GdkEventFocus* ev) +CairoEditableText::on_focus_in_event (GdkEventFocus*) { return false; } bool -CairoEditableText::on_focus_out_event (GdkEventFocus* ev) +CairoEditableText::on_focus_out_event (GdkEventFocus*) { if (editing_cell) { queue_draw_cell (editing_cell); @@ -280,7 +287,14 @@ CairoEditableText::set_text (CairoTextCell* cell, const string& text) bool CairoEditableText::on_expose_event (GdkEventExpose* ev) { - Cairo::RefPtr context = get_window()->create_cairo_context(); + Glib::RefPtr win = get_window (); + + if (!win) { + std::cerr << "CET: no window to draw on\n"; + return false; + } + + Cairo::RefPtr context = win->create_cairo_context(); if (cells.empty()) { return true;