Add my copyright to files I've modified.
[synfig.git] / synfig-studio / trunk / src / gtkmm / instance.cpp
index 9ac76fb..839b55e 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -365,10 +366,7 @@ Instance::close()
                studio::App::set_selected_instance(0);
        }
        else
-       {
-               studio::App::set_selected_canvas_view(studio::App::instance_list.front()->canvas_view_list().front());
-               //studio::App::set_selected_instance(studio::App::instance_list.front());
-       }
+               studio::App::instance_list.front()->canvas_view_list().front()->present();
 }
 
 
@@ -643,9 +641,17 @@ Instance::safe_revert()
 bool
 Instance::safe_close()
 {
-       handle<synfigapp::UIInterface> uim;
-       uim=find_canvas_view(get_canvas())->get_ui_interface();
+       handle<CanvasView> canvas_view = find_canvas_view(get_canvas());
+       handle<synfigapp::UIInterface> uim=canvas_view->get_ui_interface();
 
+       // if the animation is currently playing, closing the window will cause a crash,
+       // so don't allow it
+       if (canvas_view->is_playing())
+       {
+               canvas_view->present();
+               App::dialog_error_blocking("Close Error", "The animation is currently playing so the window cannot be closed.");
+               return false;
+       }
        if(get_action_count())
                do
                {
@@ -691,7 +697,7 @@ Instance::add_actions_to_group(const Glib::RefPtr<Gtk::ActionGroup>& action_grou
        candidate_list.sort();
 
        if(candidate_list.empty())
-               synfig::warning("Action CandidateList is empty!");
+               synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
 
        for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)
        {
@@ -731,7 +737,7 @@ Instance::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamLis
        candidate_list.sort();
 
        if(candidate_list.empty())
-               synfig::warning("Action CandidateList is empty!");
+               synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
 
        for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)
        {
@@ -800,9 +806,9 @@ Instance::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamLis
        candidate_list.sort();
 
        if(candidate_list.empty())
-               synfig::warning("Action CandidateList is empty!");
+               synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
        if(candidate_list2.empty())
-               synfig::warning("Action CandidateList2 is empty!");
+               synfig::warning("%s:%d Action CandidateList2 is empty!", __FILE__, __LINE__);
 
        // Seperate out the candidate lists so that there are no conflicts
        for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)