projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix the crash that the previous commit half-fixed.
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
canvasview.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/canvasview.cpp
b/synfig-studio/trunk/src/gtkmm/canvasview.cpp
index
cbaed03
..
718a90b
100644
(file)
--- 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> instance,etl::handle<synfigap
int h=get_canvas()->rend_desc().get_h()+70;
while(w>700 || h>600)
{
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);
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();
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");
}
synfig::info("CanvasView:~CanvasView(): Destructor Finished");
}
@@
-1718,7
+1729,7
@@
CanvasView::popup_layer_menu(synfig::Layer::Handle layer)
//parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New Layer"),*newlayers));
//parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("New Layer"),*newlayers));
- if(layer->get_name()=="
paste_c
anvas")
+ if(layer->get_name()=="
PasteC
anvas")
{
menu->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Children"),
sigc::bind(
{
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));
build_new_layer_menu(*newlayers);
parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem("New Layer",*newlayers));
- if(!multiple_selected && layer->get_name()=="
paste_c
anvas")
+ if(!multiple_selected && layer->get_name()=="
PasteC
anvas")
{
parammenu.items().push_back(Gtk::Menu_Helpers::MenuElem(_("Select All Children"),
sigc::bind(
{
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 this is a paste canvas layer, then we need to
// descend into it
- if(layer_name=="
paste_c
anvas")
+ if(layer_name=="
PasteC
anvas")
{
Vector scale;
scale[0]=scale[1]=exp(layer->get_param("zoom").get(Real()));
{
Vector scale;
scale[0]=scale[1]=exp(layer->get_param("zoom").get(Real()));
@@
-2821,7
+2832,9
@@
CanvasView::play()
if(!work_area->sync_render_preview())
break;
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())
return;
if(get_cancel_status())
return;
@@
-3042,7
+3055,7
@@
CanvasView::on_drop_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& con
if(!get_instance()->perform_action(action))
break;
if(!get_instance()->perform_action(action))
break;
- // Ok, we have successfuly imported at least one item.
+ // Ok, we have successful
l
y imported at least one item.
success=true;
} while(0); // END of "STRING"
success=true;
} while(0); // END of "STRING"