In the factory’s bind, just make sure to give the row widget a reference to the model’s row item. You may do that with GObject.Object.set_data, or by creating your own row widget subclass with a custom “model item” property.
Then, in the gesture’s callback, you can get the row widget under the mouse with Gtk.Widget.pick, and then the model item with GObject.Object.get_data (or by getting the property if you used a subclass).
Thanks @gwillems. I tried adding gestures to the row widget, but it appears Gtk.ColumnViewRow is not a widget. I guess the other idea of using Gtk.Widget.pick would have the same issue, but I suppose I could attach required data to each column’s widget instead, but that seems very clumsy.
Sort of works but difficult. Gtk.Widget.pick returns either a Label, a Cell or a Row depending on exactly where the click occurs. I can then get the widget children to get a Label widget, which is where I did the set_data. I then need to get that data and put it into some “global” variable to get in the action. Added to this all the set_data()/data() calls are “unsafe” in Rust terms and I have managed to raise a number of memory access errors.