Code

make default paintbucket offset 0
[inkscape.git] / src / rubberband.cpp
index dd16a62d841fd5b18cdfbd3703b3ea2fadd3f274..0de3cd763a7dd99b8a98b49014b2947b060b2c80 100644 (file)
 
 #include "display/sodipodi-ctrlrect.h"
 #include "desktop.h"
+#include "inkscape.h"
 #include "desktop-handles.h"
 #include "rubberband.h"
 
 Inkscape::Rubberband *Inkscape::Rubberband::_instance = NULL;
 
 Inkscape::Rubberband::Rubberband()
-    : _desktop(NULL), _canvas(NULL)
+    : _desktop(SP_ACTIVE_DESKTOP), _canvas(NULL), _started(false)
 {
 
 }
@@ -30,20 +31,27 @@ void Inkscape::Rubberband::start(SPDesktop *d, NR::Point const &p)
     stop();
     _desktop = d;
     _start = p;
+    _started = true;
+
+    sp_canvas_force_full_redraw_after_interruptions(_desktop->canvas, 5);
 }
 
 void Inkscape::Rubberband::stop()
 {
+    _started = false;
+
     if (_canvas) {
-        gtk_object_destroy((GtkObject *) _canvas);
+        GtkObject *temp = _canvas;
         _canvas = NULL;
+        gtk_object_destroy(temp);
+        sp_canvas_end_forced_full_redraws(_desktop->canvas);
     }
 }
 
 void Inkscape::Rubberband::move(NR::Point const &p)
 {
     if (_canvas == NULL) {
-        _canvas = static_cast<CtrlRect *>(sp_canvas_item_new(SP_DT_CONTROLS(_desktop), SP_TYPE_CTRLRECT, NULL));
+        _canvas = static_cast<CtrlRect *>(sp_canvas_item_new(sp_desktop_controls(_desktop), SP_TYPE_CTRLRECT, NULL));
     }
 
     _desktop->scroll_to_point(&p);
@@ -70,6 +78,11 @@ Inkscape::Rubberband *Inkscape::Rubberband::get()
     return _instance;
 }
 
+bool Inkscape::Rubberband::is_started()
+{
+    return _started;
+}
+
 /*
   Local Variables:
   mode:c++