Продолжаю грызть mm-кактус.
class Model: public Gio::ListModel {
std::vector<Glib::RefPtr<Gtk::Button>> gobjects;
protected:
Model() = default;
GType get_item_type_vfunc() override {
return Gtk::Button::get_type();
}
guint get_n_items_vfunc() override {
return gobjects.size();
}
gpointer get_item_vfunc(guint position) override {
if (position < gobjects.size()) {
return gobjects[position].get();
}
return nullptr;
}
public:
static auto create() {
return Glib::RefPtr<Model>{ new Model{} };
}
void add(const Glib::RefPtr<Gtk::Button>& button) {
gobjects.push_back(button);
items_changed(gobjects.size(), 0, 1);
}
};
Реализация сыпет варнингами при вставке
g_list_model_items_changed: assertion 'G_IS_LIST_MODEL (list)' failed
ЧЯДНТ?