diff --git a/include/lib/model.h b/include/lib/model.h index 6103a973..fc642dbe 100644 --- a/include/lib/model.h +++ b/include/lib/model.h @@ -35,8 +35,8 @@ public: void on_row_deleted(unsigned int); void on_row_changed(unsigned int); void on_path_selected(const Gtk::TreePath &); - unsigned int iter_to_id(const Gtk::TreeIter &); - unsigned int path_to_id(const Gtk::TreePath &); + unsigned int iter_to_id(const Gtk::TreeIter &) const; + unsigned int path_to_id(const Gtk::TreePath &) const; }; #endif /* OCARINA_LIB_MODEL_H */ diff --git a/lib/model.cpp b/lib/model.cpp index 0a57aaa8..49afbe1b 100644 --- a/lib/model.cpp +++ b/lib/model.cpp @@ -61,12 +61,12 @@ void QueueModel::on_path_selected(const Gtk::TreePath &path) audio :: play(); } -unsigned int QueueModel :: iter_to_id(const Gtk::TreeIter &iter) +unsigned int QueueModel :: iter_to_id(const Gtk::TreeIter &iter) const { return GPOINTER_TO_UINT(iter.gobj()->user_data); } -unsigned int QueueModel::path_to_id(const Gtk::TreePath &path) +unsigned int QueueModel::path_to_id(const Gtk::TreePath &path) const { return queue->operator[](path[0])->index(); } @@ -167,7 +167,6 @@ void QueueModel::get_value_str(Track *track, int column, void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column, Glib::ValueBase &value) const { - unsigned int row; Track *track; if (!check_iter_validity(iter)) @@ -176,8 +175,7 @@ void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column, if (column > get_n_columns_vfunc()) return; - row = GPOINTER_TO_UINT(iter.gobj()->user_data); - track = queue->operator[](row); + track = queue->operator[](iter_to_id(iter)); switch (column) { case 0: @@ -193,15 +191,11 @@ void QueueModel::get_value_vfunc(const Gtk::TreeIter &iter, int column, bool QueueModel::iter_next_vfunc(const Gtk::TreeIter &iter, Gtk::TreeIter &iter_next) const { - unsigned int index; - if (!check_iter_validity(iter)) { iter_next = Gtk::TreeIter(); return false; } - - index = GPOINTER_TO_UINT(iter.gobj()->user_data); - return iter_nth_root_child_vfunc(++index, iter_next); + return iter_nth_root_child_vfunc(iter_to_id(iter) + 1, iter_next); } int QueueModel::iter_n_root_children_vfunc() const @@ -225,7 +219,7 @@ Gtk::TreeModel::Path QueueModel::get_path_vfunc(const Gtk::TreeIter &iter) const Gtk::TreeModel::Path path; if (check_iter_validity(iter)) - path.push_back(GPOINTER_TO_UINT(iter.gobj()->user_data)); + path.push_back(iter_to_id(iter)); return path; }