bool get_constrain_flag()const { return checkbutton_constrain.get_active(); }
void set_constrain_flag(bool x) { checkbutton_constrain.set_active(x); refresh_constrain_flag(); }
void refresh_constrain_flag() { if(duck_dragger_)duck_dragger_->constrain=get_constrain_flag(); }
+ void refresh_cursor();
StateNormal_Context(CanvasView* canvas_view);
{
}
+void StateNormal_Context::refresh_cursor()
+{
+ // Check the current state and return when applicable
+ synfig::String sname;
+ sname=get_canvas_view()->get_smach().get_state_name();
+ if (sname=="smooth_move"||sname=="zoom"||sname=="width" ||
+ sname=="text"||sname=="stroke"||sname=="star"||sname=="sketch"||
+ sname=="scale"||sname=="zoom"||sname=="rotate"||sname=="rectangle"||
+ sname=="polygon"||sname=="gradient"||sname=="fill"||sname=="draw"||
+ sname=="circle")
+ return;
+
+ // Change the cursor based on key flags
+ if(get_rotate_flag() && !get_scale_flag())
+ {
+ get_work_area()->set_cursor(Gdk::EXCHANGE);
+ return;
+ }
+ if(!get_rotate_flag() && get_scale_flag())
+ {
+ get_work_area()->set_cursor(Gdk::SIZING);
+ return;
+ }
+ if(get_rotate_flag() && get_scale_flag())
+ {
+ get_work_area()->set_cursor(Gdk::CROSSHAIR);
+ return;
+ }
+ // If we are in BLine state and there is not key pressed return to
+ // the bline cursor.
+ if (sname=="bline")
+ {
+ get_work_area()->set_cursor(Gdk::CROSSHAIR);
+ return;
+ }
+ // Default cursor for Transform tool
+ get_work_area()->set_cursor(Gdk::ARROW);
+
+}
+
void
StateNormal_Context::load_settings()
{
default:
break;
}
+ refresh_cursor();
return false; //Pass on the event to other handlers, just in case
}
default:
break;
}
+ refresh_cursor();
return false; //Pass on the event to other handlers
}