X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=913a903fd16709f6068937d95cadc5165b6e5731;hb=1c412be8fd05bcdee259fc61ebee162bc4e3bf67;hp=cbaed033d8631b5eb5f920de8faabf3590f38941;hpb=c3ad95144d148602f672e95ddda1f18fc35502f8;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index cbaed03..913a903 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -796,6 +796,13 @@ CanvasView::CanvasView(etl::loose_handle instance,etl::handlerend_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 +912,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"); } @@ -1264,7 +1275,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) ); @@ -1572,7 +1583,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))); @@ -1718,7 +1729,7 @@ CanvasView::popup_layer_menu(synfig::Layer::Handle layer) //parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New Layer"),*newlayers)); - if(layer->get_name()=="paste_canvas") + if(layer->get_name()=="PasteCanvas") { menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Children"), sigc::bind( @@ -2146,7 +2157,7 @@ CanvasView::on_layer_user_click(int button, Gtk::TreeRow /*row*/, LayerTree::Col build_new_layer_menu(*newlayers); parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem("New Layer",*newlayers)); - if(!multiple_selected && layer->get_name()=="paste_canvas") + if(!multiple_selected && layer->get_name()=="PasteCanvas") { parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Children"), sigc::bind( @@ -2626,7 +2637,7 @@ CanvasView::rebuild_ducks_layer_(synfig::TransformStack& transform_stack, Canvas // If this is a paste canvas layer, then we need to // descend into it - if(layer_name=="paste_canvas") + if(layer_name=="PasteCanvas") { Vector scale; scale[0]=scale[1]=exp(layer->get_param("zoom").get(Real())); @@ -2821,10 +2832,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; @@ -3042,7 +3058,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"