- delete _menu;
-
- _menu = new Gtk::Menu;
- _menu->set_name ("ArdourContextMenu");
-
- Gtk::Menu_Helpers::MenuList& items = _menu->items ();
-
- uint32_t row = y / row_height ();
-
- boost::shared_ptr<ARDOUR::Bundle> bundle;
- uint32_t channel;
-
- for (std::vector<boost::shared_ptr<ARDOUR::Bundle> >::const_iterator i = _body->row_bundles().begin(); i != _body->row_bundles().end(); ++i) {
- if (row < (*i)->nchannels ()) {
- bundle = *i;
- channel = row;
- break;
- } else {
- row -= (*i)->nchannels ();
- }
- }
+void
+PortMatrixRowLabels::render_bundle_name (
+ cairo_t* cr, Gdk::Color fg_colour, Gdk::Color bg_colour, double xoff, double yoff, boost::shared_ptr<ARDOUR::Bundle> b
+ )
+{
+ double const x = bundle_name_x ();
+
+ int const n = _matrix->show_only_bundles() ? 1 : _matrix->count_of_our_type_min_1 (b->nchannels());
+ set_source_rgb (cr, bg_colour);
+ cairo_rectangle (cr, xoff + x, yoff, _longest_bundle_name + name_pad() * 2, grid_spacing() * n);
+ cairo_fill_preserve (cr);
+ set_source_rgb (cr, fg_colour);
+ cairo_set_line_width (cr, label_border_width ());
+ cairo_stroke (cr);
+
+ cairo_text_extents_t ext;
+ cairo_text_extents (cr, b->name().c_str(), &ext);
+ double const off = (grid_spacing() - ext.height) / 2;
+
+ Gdk::Color textcolor;
+ ARDOUR_UI_UTILS::set_color_from_rgba(textcolor, Gtkmm2ext::contrasting_text_color(ARDOUR_UI_UTILS::gdk_color_to_rgba(bg_colour)));
+ set_source_rgb (cr, textcolor);
+ cairo_move_to (cr, xoff + x + name_pad(), yoff + name_pad() + off);
+ cairo_show_text (cr, b->name().c_str());
+}