diff --git a/src/rubberband.cpp b/src/rubberband.cpp
index dd16a62d841fd5b18cdfbd3703b3ea2fadd3f274..0de3cd763a7dd99b8a98b49014b2947b060b2c80 100644 (file)
--- a/src/rubberband.cpp
+++ b/src/rubberband.cpp
#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)
{
}
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);
return _instance;
}
+bool Inkscape::Rubberband::is_started()
+{
+ return _started;
+}
+
/*
Local Variables:
mode:c++