X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=1ab07b15e43dcda42d642b29abcec8ea1d441773;hb=37600b4b217caa5e316984ec0b035c5e8f9698af;hp=36e9f7129d1c9eeaafb00d4be1f3c9cdff053b38;hpb=03451a4c296f6c797ccbf07abb4c7561c054cb72;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 36e9f71..1ab07b1 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -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 @@ -446,7 +447,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("canvas_view.layer_tree not defined!?"); return LayerList(); } + if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return LayerList(); } return view->layer_tree->get_selected_layers(); } @@ -455,7 +456,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("canvas_view.layer_tree not defined!?"); return 0; } + if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return 0; } return view->layer_tree->get_selected_layer(); } @@ -464,7 +465,7 @@ public: { // assert(view->layer_tree); - if(!view->layer_tree) { DEBUGPOINT(); synfig::error("canvas_view.layer_tree not defined!?"); return; } + if(!view->layer_tree) { DEBUGPOINT(); synfig::error("%s:%d canvas_view.layer_tree not defined!?", __FILE__, __LINE__); return; } view->layer_tree->select_layers(layer_list); //view->get_smach().process_event(EVENT_REFRESH_DUCKS); @@ -553,13 +554,13 @@ public: } //! Sets which value_nodes should be selected - virtual void set_selected_children(const ChildrenList &children_list) + virtual void set_selected_children(const ChildrenList &/*children_list*/) { return; } //! Sets which value_node should be selected. Empty handle if none. - virtual void set_selected_child(const ChildrenList::value_type &child) + virtual void set_selected_child(const ChildrenList::value_type &/*child*/) { return; } @@ -610,12 +611,12 @@ public: return get_selected_layer_parameters().front(); } - void set_selected_layer_parameters(const LayerParamList &layer_param_list) + void set_selected_layer_parameters(const LayerParamList &/*layer_param_list*/) { return; } - void set_selected_layer_param(const LayerParam &layer_param) + void set_selected_layer_param(const LayerParam &/*layer_param*/) { return; } @@ -790,12 +791,19 @@ CanvasView::CanvasView(etl::loose_handle instance,etl::handlerend_desc().get_w()+70; int h=get_canvas()->rend_desc().get_h()+70; while(w>700 || h>600) { + // Minor hack: + // zoom_out() => + // WorkArea::async_update_preview() => + // WorkArea::set_zoom(float) => + // WorkArea::async_update_preview() => + // desc.set_time(cur_time), where cur_time isn't initialised + work_area->set_time(0); work_area->zoom_out(); w=round_to_int(get_canvas()->rend_desc().get_w()*work_area->get_zoom()+70); h=round_to_int(get_canvas()->rend_desc().get_h()*work_area->get_zoom()+70); @@ -905,6 +913,10 @@ CanvasView::~CanvasView() hide(); + // don't be calling on_dirty_preview once this object has been deleted; + // this was causing a crash before + canvas_interface()->signal_dirty_preview().clear(); + synfig::info("CanvasView:~CanvasView(): Destructor Finished"); } @@ -1254,7 +1266,10 @@ CanvasView::init_menus() { Glib::RefPtr action(Gtk::RadioAction::create(quality_group,strprintf("quality-%02d",i), strprintf("Set Quality to %d",i))); if(i==10) - action->property_value()=10; + { + action->set_active(); + work_area->set_quality(i); + } action_group->add( action, sigc::bind( sigc::mem_fun(*work_area, &studio::WorkArea::set_quality), @@ -1264,7 +1279,7 @@ CanvasView::init_menus() } } - action_group->add( Gtk::Action::create("play", Gtk::StockID("synfig-play")), + action_group->add( Gtk::Action::create("play", Gtk::Stock::MEDIA_PLAY), sigc::mem_fun(*this, &studio::CanvasView::play) ); @@ -1305,7 +1320,7 @@ CanvasView::init_menus() action=Gtk::Action::create("seek-prev-frame", Gtk::Stock::GO_BACK,_("Prev Frame"),_("Prev Frame")); action_group->add( action, sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_frame),-1)); - action=Gtk::Action::create("seek-next-second", Gtk::Stock::GO_FORWARD,_("Seek Foward"),_("Seek Foward")); + action=Gtk::Action::create("seek-next-second", Gtk::Stock::GO_FORWARD,_("Seek Forward"),_("Seek Forward")); action_group->add(action,sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_time),Time(1))); action=Gtk::Action::create("seek-prev-second", Gtk::Stock::GO_BACK,_("Seek Backward"),_("Seek Backward")); action_group->add( action, sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_time),Time(-1))); @@ -1572,7 +1587,7 @@ CanvasView::init_menus() viewmenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Preview Quality"),qualitymenu)); } - viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("synfig-play"), + viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::Stock::MEDIA_PLAY, sigc::mem_fun(*this, &studio::CanvasView::play))); viewmenu.items().push_back(Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("Flipbook Dialog"), sigc::mem_fun(*preview_dialog, &studio::Dialog_Preview::present))); @@ -1737,7 +1752,7 @@ CanvasView::popup_layer_menu(synfig::Layer::Handle layer) } void -CanvasView::register_layer_type(synfig::Layer::Book::value_type &lyr,std::map* category_map) +CanvasView::register_layer_type(synfig::Layer::Book::value_type &/*lyr*/,std::map* /*category_map*/) { /* if(lyr.second.category==_("Do Not Use")) return; @@ -1757,7 +1772,7 @@ CanvasView::register_layer_type(synfig::Layer::Book::value_type &lyr,std::map category_map; @@ -2079,7 +2094,7 @@ CanvasView::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamL } bool -CanvasView::on_layer_user_click(int button, Gtk::TreeRow row, LayerTree::ColumnID column_id) +CanvasView::on_layer_user_click(int button, Gtk::TreeRow /*row*/, LayerTree::ColumnID /*column_id*/) { switch(button) { @@ -2219,6 +2234,12 @@ CanvasView::on_children_user_click(int button, Gtk::TreeRow row, ChildrenTree::C if(!(bool)row[children_tree_model.is_canvas]) { synfigapp::ValueDesc value_desc=row[children_tree_model.value_desc]; + if (!value_desc) + { + //! \todo fix properly -- what is the child dialog for? + synfig::info("preventing child dialog right-click crash"); + return true; + } assert(value_desc); popup_param_menu(value_desc); return true; @@ -2815,10 +2836,15 @@ CanvasView::play() if(!work_area->sync_render_preview()) break; - studio::App::iteration(false); + // wait for the workarea to refresh itself + while (studio::App::events_pending()) + studio::App::iteration(false); if(get_cancel_status()) + { + is_playing_=false; return; + } } is_playing_=false; @@ -3003,7 +3029,7 @@ CanvasView::on_waypoint_delete() } void -CanvasView::on_drop_drag_data_received(const Glib::RefPtr& context, int x, int y, const Gtk::SelectionData& selection_data_, guint info, guint time) +CanvasView::on_drop_drag_data_received(const Glib::RefPtr& context, int /*x*/, int /*y*/, const Gtk::SelectionData& selection_data_, guint /*info*/, guint time) { // We will make this true once we have a solid drop bool success(false); @@ -3036,7 +3062,7 @@ CanvasView::on_drop_drag_data_received(const Glib::RefPtr& con if(!get_instance()->perform_action(action)) break; - // Ok, we have successfuly imported at least one item. + // Ok, we have successfully imported at least one item. success=true; } while(0); // END of "STRING" @@ -3393,7 +3419,7 @@ CanvasView::on_audio_offset_notify() sound_dialog->set_offset(t); disp_audio->queue_draw(); - synfig::info("CanvasView::on_audio_offset_notify(): offset time set to %s",t.get_string(get_canvas()->rend_desc().get_frame_rate()).c_str()); + // synfig::info("CanvasView::on_audio_offset_notify(): offset time set to %s",t.get_string(get_canvas()->rend_desc().get_frame_rate()).c_str()); } void