X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fstate_rectangle.cpp;h=4226f5914bdda5ef2c5b0ba6d246852b96d9b614;hb=8b41832930729fa5a89584fe9bcd91c45a454be2;hp=67a00aceaef03c3e41ac6957a398247acc3079ee;hpb=c6af6e1c3816eb3b15c573089b32e6ae65cd2f49;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/state_rectangle.cpp b/synfig-studio/trunk/src/gtkmm/state_rectangle.cpp index 67a00ac..4226f59 100644 --- a/synfig-studio/trunk/src/gtkmm/state_rectangle.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_rectangle.cpp @@ -2,7 +2,7 @@ /*! \file state_rectangle.cpp ** \brief Template File ** -** $Id: state_rectangle.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -49,6 +49,8 @@ #include "duck.h" #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -128,10 +130,10 @@ public: void save_settings(); void reset(); void increment_id(); - bool no_egress_on_selection_change; - Smach::event_result event_layer_selection_changed_handler(const Smach::event& x) + bool egress_on_selection_change; + Smach::event_result event_layer_selection_changed_handler(const Smach::event& /*x*/) { - if(!no_egress_on_selection_change) + if(egress_on_selection_change) throw Smach::egress_exception(); return Smach::RESULT_OK; } @@ -211,7 +213,10 @@ StateRectangle_Context::increment_id() if(id[id.size()-1]<='9' && id[id.size()-1]>='0') { // figure out how many digits it is - for(digits=0;(int)id.size()-1>=digits && id[id.size()-1-digits]<='9' && id[id.size()-1-digits]>='0';digits++)while(false); + for (digits = 0; + (int)id.size()-1 >= digits && id[id.size()-1-digits] <= '9' && id[id.size()-1-digits] >= '0'; + digits++) + ; String str_number; str_number=String(id,id.size()-digits,id.size()); @@ -241,14 +246,14 @@ StateRectangle_Context::StateRectangle_Context(CanvasView* canvas_view): canvas_view_(canvas_view), is_working(*canvas_view), duckmatic_push(get_work_area()), - prev_workarea_layer_status_(get_work_area()->allow_layer_clicks), + prev_workarea_layer_status_(get_work_area()->get_allow_layer_clicks()), settings(synfigapp::Main::get_selected_input_device()->settings()), entry_id(), adj_expand(0,0,1,0.01,0.1), spin_expand(adj_expand,0.1,3), check_invert(_("Invert")) { - no_egress_on_selection_change=false; + egress_on_selection_change=true; load_settings(); // Set up the tool options dialog @@ -269,7 +274,7 @@ StateRectangle_Context::StateRectangle_Context(CanvasView* canvas_view): App::dialog_tool_options->present(); // Turn off layer clicking - get_work_area()->allow_layer_clicks=false; + get_work_area()->set_allow_layer_clicks(false); // clear out the ducks get_work_area()->clear_ducks(); @@ -283,8 +288,8 @@ StateRectangle_Context::StateRectangle_Context(CanvasView* canvas_view): //prev_table_status=get_canvas_view()->tables_are_visible(); //if(prev_table_status)get_canvas_view()->hide_tables(); - // Hide the time bar - //get_canvas_view()->hide_timebar(); + // Disable the time bar + //get_canvas_view()->set_sensitive_timebar(false); // Connect a signal //get_work_area()->signal_user_click().connect(sigc::mem_fun(*this,&studio::StateRectangle_Context::on_user_click)); @@ -302,7 +307,7 @@ StateRectangle_Context::refresh_tool_options() } Smach::event_result -StateRectangle_Context::event_refresh_tool_options(const Smach::event& x) +StateRectangle_Context::event_refresh_tool_options(const Smach::event& /*x*/) { refresh_tool_options(); return Smach::RESULT_ACCEPT; @@ -313,15 +318,14 @@ StateRectangle_Context::~StateRectangle_Context() save_settings(); // Restore layer clicking - get_work_area()->allow_layer_clicks = prev_workarea_layer_status_; + get_work_area()->set_allow_layer_clicks(prev_workarea_layer_status_); get_canvas_view()->work_area->reset_cursor(); App::dialog_tool_options->clear(); - // Show the time bar - if(get_canvas_view()->get_canvas()->rend_desc().get_time_start()!=get_canvas_view()->get_canvas()->rend_desc().get_time_end()) - get_canvas_view()->show_timebar(); + // Enable the time bar + //get_canvas_view()->set_sensitive_timebar(true); // Bring back the tables if they were out before //if(prev_table_status)get_canvas_view()->show_tables(); @@ -329,17 +333,19 @@ StateRectangle_Context::~StateRectangle_Context() // Refresh the work area get_work_area()->queue_draw(); + get_canvas_view()->queue_rebuild_ducks(); + App::toolbox->refresh(); } Smach::event_result -StateRectangle_Context::event_stop_handler(const Smach::event& x) +StateRectangle_Context::event_stop_handler(const Smach::event& /*x*/) { throw Smach::egress_exception(); } Smach::event_result -StateRectangle_Context::event_refresh_handler(const Smach::event& x) +StateRectangle_Context::event_refresh_handler(const Smach::event& /*x*/) { refresh_ducks(); return Smach::RESULT_ACCEPT; @@ -387,10 +393,14 @@ StateRectangle_Context::make_rectangle(const Point& _p1, const Point& _p2) layer->set_description(get_id()); get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description()); - no_egress_on_selection_change=true; + egress_on_selection_change=false; + synfigapp::SelectionManager::LayerList layer_selection; + if (!getenv("SYNFIG_TOOLS_CLEAR_SELECTION")) + layer_selection = get_canvas_view()->get_selection_manager()->get_selected_layers(); get_canvas_interface()->get_selection_manager()->clear_selected_layers(); - get_canvas_interface()->get_selection_manager()->set_selected_layer(layer); - no_egress_on_selection_change=false; + layer_selection.push_back(layer); + get_canvas_interface()->get_selection_manager()->set_selected_layers(layer_selection); + egress_on_selection_change=true; //post clean up stuff... reset();