X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fkeyframetreestore.cpp;h=65ad2f4f160e0300f12f289f3db7d61705284fb1;hb=c11163f51e342cc35511ed559fd3c0ae5405f840;hp=0075930a48448943f78d24029b5cb1a60228ba6c;hpb=c2813b4d63804cac9b4067146a9e6eca717cb3e4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp b/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp index 0075930..65ad2f4 100644 --- a/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp +++ b/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp @@ -61,7 +61,7 @@ using namespace studio; /* === G L O B A L S ======================================================= */ -KeyframeTreeStore_Class KeyframeTreeStore::keyframe_tree_store_class_; +// KeyframeTreeStore_Class KeyframeTreeStore::keyframe_tree_store_class_; /* === C L A S S E S & S T R U C T S ======================================= */ @@ -198,7 +198,8 @@ KeyframeTreeStore_Class::class_init_function(gpointer /*g_class*/, gpointer /*cl KeyframeTreeStore::KeyframeTreeStore(etl::loose_handle canvas_interface_): Glib::ObjectBase ("KeyframeTreeStore"), - Glib::Object (Glib::ConstructParams(keyframe_tree_store_class_.init(), (char*) 0)), + //! \todo what is going on here? why the need for this KeyframeTreeStore_Class at all? + // Glib::Object (Glib::ConstructParams(keyframe_tree_store_class_.init(), (char*) 0, (char*) 0)), canvas_interface_ (canvas_interface_) { reset_stamp(); @@ -211,7 +212,8 @@ KeyframeTreeStore::KeyframeTreeStore(etl::loose_handle @@ -307,6 +309,20 @@ KeyframeTreeStore::time_sorter(const Gtk::TreeModel::iterator &rhs,const Gtk::Tr return 0; } +int +KeyframeTreeStore::description_sorter(const Gtk::TreeModel::iterator &rhs,const Gtk::TreeModel::iterator &lhs) +{ + const Model model; + + _keyframe_iterator *rhs_iter(static_cast<_keyframe_iterator*>(rhs->gobj()->user_data)); + _keyframe_iterator *lhs_iter(static_cast<_keyframe_iterator*>(lhs->gobj()->user_data)); + + int comp = rhs_iter->iter->get_description().compare(lhs_iter->iter->get_description()); + if (comp > 0) return 1; + if (comp < 0) return -1; + return 0; +} + void KeyframeTreeStore::set_value_impl(const Gtk::TreeModel::iterator& row, int column, const Glib::ValueBase& value) { @@ -837,7 +853,6 @@ KeyframeTreeStore::remove_keyframe(synfig::Keyframe keyframe) } catch(std::exception x) { - DEBUGPOINT(); g_warning(x.what()); } } @@ -852,11 +867,11 @@ KeyframeTreeStore::change_keyframe(synfig::Keyframe keyframe) unsigned int new_index(get_index_from_model_iter(row)); unsigned int old_index(0); synfig::KeyframeList::iterator iter; - for(old_index=0,iter=old_keyframe_list.begin();iter!=old_keyframe_list.end() && (UniqueID)*iter!=(UniqueID)keyframe;++iter,old_index++); + for(old_index=0,iter=old_keyframe_list.begin();iter!=old_keyframe_list.end() && (UniqueID)*iter!=(UniqueID)keyframe;++iter,old_index++) + ; if(iter!=old_keyframe_list.end() && new_index!=old_index) { - DEBUGPOINT(); std::vector new_order; for(unsigned int i=0;i