Code

redo NR::Maybe to be less clever
[inkscape.git] / src / pen-context.cpp
index c050c888b0ffff0d17a2135d05d9b8b6ce65a76b..0f8a4204a928b19217d7138eb31138e82466feb2 100644 (file)
@@ -30,7 +30,6 @@
 #include "sp-path.h"
 
 #include "pixmaps/cursor-pen.xpm"
-#include "pixmaps/cursor-pen.pixbuf"
 #include "display/canvas-bpath.h"
 #include "display/sp-ctrlline.h"
 #include "display/sodipodi-ctrl.h"
@@ -127,11 +126,6 @@ sp_pen_context_init(SPPenContext *pc)
     SPEventContext *event_context = SP_EVENT_CONTEXT(pc);
 
     event_context->cursor_shape = cursor_pen_xpm;
-    event_context->cursor_pixbuf = gdk_pixbuf_new_from_inline(
-            -1,
-            cursor_pen_pixbuf,
-            FALSE,
-            NULL);  
     event_context->hot_x = 4;
     event_context->hot_y = 4;
 
@@ -226,6 +220,8 @@ pen_cancel (SPPenContext *const pc)
     sp_canvas_item_hide(pc->cl1);
     pc->_message_context->clear();
     pc->_message_context->flash(Inkscape::NORMAL_MESSAGE, _("Drawing cancelled"));
+
+    sp_canvas_end_forced_full_redraws(pc->desktop->canvas);
 }
 
 /**
@@ -1026,6 +1022,8 @@ spdc_pen_set_initial_point(SPPenContext *const pc, NR::Point const p)
     pc->p[1] = p;
     pc->npoints = 2;
     sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(pc->red_bpath), NULL);
+
+    sp_canvas_force_full_redraw_after_interruptions(pc->desktop->canvas, 5);
 }
 
 static void
@@ -1050,6 +1048,7 @@ spdc_pen_set_subsequent_point(SPPenContext *const pc, NR::Point const p, bool st
         sp_curve_lineto(pc->red_curve, p);
         is_curve = false;
     }
+
     sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(pc->red_bpath), pc->red_curve);
 
     if (statusbar) {
@@ -1170,6 +1169,9 @@ spdc_pen_finish(SPPenContext *const pc, gboolean const closed)
         pc->green_anchor = sp_draw_anchor_destroy(pc->green_anchor);
     }
 
+
+    sp_canvas_end_forced_full_redraws(pc->desktop->canvas);
+
     pen_enable_events(pc);
 }