У меня есть диалоговое окно с Gtk::TreeView. Этот диалог показывает главное дерево файловой системы и предоставляет возможность выбора папок на диске. Когда пользователь выбирает какую-либо папку, я добавляю изображение Gtk::Stock в строку, представляющую эту папку.
Для этого я создал Gtk::CellRendererPixbuf, связанный с последним столбцом моего дерева:
//appending columns
directory_tree.append_column("Folder List", dir_columns.name);
Gtk::TreeViewColumn *column = directory_tree.get_column(0);
if(column) column->set_expand(true);
Gtk::CellRendererPixbuf *cell = Gtk::manage(new Gtk::CellRendererPixbuf);
directory_tree.append_column("", *cell);
column = directory_tree.get_column(1);
if(column) column->add_attribute(cell->property_stock_id(), dir_columns.stock_id);
Ссылка на этот фрагмент кода: https://github.com/mc-suchecki/Imagine/blob/master/gui/dialogs.cpp#L47
Gtk::CellRendererPixbuf 'транслирует' Gtk::StockId, найденный в 'dir_columns.stock_id', в изображение, расположенное в дереве. Когда я добавляю изображение в строку следующим образом:
//selecting folder
(*folder)[fs_columns.stock_id] = Gtk::StockID(Gtk::Stock::FIND).get_string();
(*folder)[fs_columns.included] = true;
все в порядке, но когда я пытаюсь удалить изображение таким образом:
//unselecting folder
(*folder)[fs_columns.stock_id] = "";
(*folder)[fs_columns.included] = false;
изображение правильно исчезает, но в командной строке есть такие ошибки (это не точное сообщение, я опубликую его, когда смогу запустить свое приложение):
(imagine:9376): Gtk-WARNING **: Gtk StockId not found
Конечно, причина предупреждения очевидна (нет элемента StockId, связанного с пустым именем), однако мой вопрос: есть ли способ удалить изображение из строки Gtk::TreeView, которое не будет генерировать никаких предупреждений Gtk?
Код, в котором я отменяю выбор папки, находится здесь: https://github.com/mc-suchecki/Imagine/blob/master/core/core.cpp#L207
Заранее большое спасибо и извините за мой английский.