From 2f0a8aac28d9601ad0cd269ec662b4e09801e614 Mon Sep 17 00:00:00 2001 From: dooglus Date: Mon, 12 Nov 2007 07:50:09 +0000 Subject: [PATCH 1/1] Fix 1830245: always leave only the newly created layers selected. git-svn-id: http://svn.voria.com/code@1134 1f10aa63-cdf2-0310-b900-c93c546f37ac --- synfig-studio/trunk/src/gtkmm/state_draw.cpp | 35 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/synfig-studio/trunk/src/gtkmm/state_draw.cpp b/synfig-studio/trunk/src/gtkmm/state_draw.cpp index 1b68e0f..9782f91 100644 --- a/synfig-studio/trunk/src/gtkmm/state_draw.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_draw.cpp @@ -112,7 +112,7 @@ class studio::StateDraw_Context : public sigc::trackable Duckmatic::Type old_duckmask; - void fill_last_stroke(int depth_offset); + void fill_last_stroke(); Smach::event_result new_bline(std::list bline,bool loop_bline_flag,float radius); @@ -448,7 +448,7 @@ StateDraw_Context::StateDraw_Context(CanvasView* canvas_view): //options_table.attach(button_fill_last_stroke, 0, 2, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); - button_fill_last_stroke.signal_pressed().connect(sigc::bind(sigc::mem_fun(*this,&StateDraw_Context::fill_last_stroke), 0)); + button_fill_last_stroke.signal_pressed().connect(sigc::mem_fun(*this,&StateDraw_Context::fill_last_stroke)); check_localerror.signal_toggled().connect(sigc::mem_fun(*this,&StateDraw_Context::UpdateErrorBox)); options_table.show_all(); @@ -519,11 +519,9 @@ StateDraw_Context::refresh_tool_options() Gtk::StockID("synfig-fill"), _("Fill Last Stroke") )->signal_clicked().connect( - sigc::bind( - sigc::mem_fun( - *this, - &StateDraw_Context::fill_last_stroke), - 0)); + sigc::mem_fun( + *this, + &StateDraw_Context::fill_last_stroke)); } Smach::event_result @@ -1001,8 +999,11 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline } } - // Create the layer + last_stroke=value_node; + last_stroke_id=get_id(); + { + // Create the layer(s) Layer::Handle layer; Canvas::Handle canvas(get_canvas_view()->get_canvas()); int depth(0); @@ -1014,7 +1015,12 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline depth=layer->get_depth(); canvas=layer->get_canvas(); } - get_canvas_interface()->get_selection_manager()->clear_selected_layers(); + + // fill_last_stroke() will take care of clearing the selection if we're calling it + if(get_outline_flag() && get_region_flag()) + fill_last_stroke(); + else + get_canvas_interface()->get_selection_manager()->clear_selected_layers(); //int number(synfig::UniqueID().get_uid()); @@ -1069,12 +1075,6 @@ StateDraw_Context::new_bline(std::list bline,bool loop_bline //refresh_ducks(); } - last_stroke=value_node; - last_stroke_id=get_id(); - - if(get_outline_flag() && get_region_flag()) - fill_last_stroke(1); - increment_id(); return Smach::RESULT_ACCEPT; } @@ -1932,7 +1932,7 @@ StateDraw_Context::reverse_bline(std::list &bline) } void -StateDraw_Context::fill_last_stroke(int depth_offset) +StateDraw_Context::fill_last_stroke() { if(!last_stroke) return; @@ -1951,10 +1951,11 @@ StateDraw_Context::fill_last_stroke(int depth_offset) layer=get_canvas_view()->get_selection_manager()->get_selected_layer(); if(layer) { - depth=layer->get_depth() + depth_offset; + depth=layer->get_depth(); canvas=layer->get_canvas(); } + get_canvas_interface()->get_selection_manager()->clear_selected_layers(); layer=get_canvas_interface()->add_layer_to("region", canvas, depth); assert(layer); layer->set_param("color",synfigapp::Main::get_background_color()); -- 2.7.4