Code

patch 1484602 by Niko Kiirala
[inkscape.git] / src / svg-view.cpp
index 6d408e79c62cc533e7e470a139b91ddddc863203..22d9dd120e81d0cd4e477add44a77bf36066ac95 100644 (file)
@@ -39,7 +39,7 @@ SPSVGView::SPSVGView (SPCanvasGroup *parent)
 
 SPSVGView::~SPSVGView()
 {
-    if (doc() && _drawing) 
+    if (doc() && _drawing)
     {
         sp_item_invoke_hide (SP_ITEM (sp_document_root (doc())), _dkey);
         _drawing = NULL;
@@ -63,7 +63,7 @@ SPSVGView::setScale (gdouble hscale, gdouble vscale)
  * Rescales SPSVGView and keeps aspect ratio.
  */
 void
-SPSVGView::setRescale 
+SPSVGView::setRescale
 (bool rescale, bool keepaspect, gdouble width, gdouble height)
 {
     g_return_if_fail (!rescale || (width >= 0.0));
@@ -135,7 +135,7 @@ arena_handler (SPCanvasArena *arena, NRArenaItem *ai, GdkEvent *event, SPSVGView
        static gboolean active = FALSE;
        SPEvent spev;
 
-       SPItem *spitem = (ai) ? (SPItem*)NR_ARENA_ITEM_GET_DATA (ai) : NULL;
+       SPItem *spitem = (ai) ? (SPItem*)NR_ARENA_ITEM_GET_DATA (ai) : 0;
 
        switch (event->type) {
        case GDK_BUTTON_PRESS:
@@ -147,10 +147,14 @@ arena_handler (SPCanvasArena *arena, NRArenaItem *ai, GdkEvent *event, SPSVGView
                break;
        case GDK_BUTTON_RELEASE:
                if (event->button.button == 1) {
-                       if (active && (event->button.x == x) && (event->button.y == y)) {
+                       if (active && (event->button.x == x) &&
+                                      (event->button.y == y)) {
                                spev.type = SP_EVENT_ACTIVATE;
-                               sp_item_event (spitem, &spev);
-                       }
+                                if ( spitem != 0 )
+                               {
+                                 sp_item_event (spitem, &spev);
+                                }
+                       }
                }
                active = FALSE;
                break;
@@ -160,12 +164,18 @@ arena_handler (SPCanvasArena *arena, NRArenaItem *ai, GdkEvent *event, SPSVGView
        case GDK_ENTER_NOTIFY:
                spev.type = SP_EVENT_MOUSEOVER;
                spev.data = svgview;
-               sp_item_event (spitem, &spev);
+                if ( spitem != 0 )
+               {
+                 sp_item_event (spitem, &spev);
+                }
                break;
        case GDK_LEAVE_NOTIFY:
                spev.type = SP_EVENT_MOUSEOUT;
                spev.data = svgview;
-               sp_item_event (spitem, &spev);
+                if ( spitem != 0 )
+               {
+                 sp_item_event (spitem, &spev);
+                }
                break;
        default:
                break;
@@ -191,11 +201,11 @@ SPSVGView::setDocument (SPDocument *document)
 
     if (document) {
         NRArenaItem *ai = sp_item_invoke_show (
-                SP_ITEM (sp_document_root (document)), 
+                SP_ITEM (sp_document_root (document)),
                 SP_CANVAS_ARENA (_drawing)->arena,
-                _dkey, 
+                _dkey,
                 SP_ITEM_SHOW_DISPLAY);
-        
+
         if (ai) {
             nr_arena_item_add_child (SP_CANVAS_ARENA (_drawing)->root, ai, NULL);
             nr_arena_item_unref (ai);