Code

specialize MaybeStorage for Rect, and start using reference maybes to
[inkscape.git] / src / sp-item.cpp
index 521d2d1cc402cd022cb8bb178b4e3c8bf9dbf6f4..0f6ea38397b15621eca6b8e75c6a696e43a3e2fb 100644 (file)
@@ -499,6 +499,7 @@ sp_item_set(SPObject *object, unsigned key, gchar const *value)
             } else {
                 item->transform_center_x = 0;
             }
+            object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
             break;
         case SP_ATTR_TRANSFORM_CENTER_Y:
             if (value) {
@@ -506,6 +507,7 @@ sp_item_set(SPObject *object, unsigned key, gchar const *value)
             } else {
                 item->transform_center_y = 0;
             }
+            object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
             break;
         case SP_PROP_SYSTEM_LANGUAGE:
         case SP_PROP_REQUIRED_FEATURES:
@@ -714,11 +716,7 @@ NR::Maybe<NR::Rect> SPItem::getBounds(NR::Matrix const &transform,
 {
     NRRect r;
     sp_item_invoke_bbox_full(this, &r, transform, type, TRUE);
-    if (nr_rect_d_test_empty(&r)) {
-        return NR::Nothing();
-    } else {
-        return NR::Rect(r);
-    }
+    return r;
 }
 
 void
@@ -804,7 +802,13 @@ NR::Rect sp_item_bbox_desktop(SPItem *item)
 {
     NRRect ret;
     sp_item_invoke_bbox(item, &ret, sp_item_i2d_affine(item), TRUE);
-    return NR::Rect(ret);
+    NR::Maybe<NR::Rect> result = ret.upgrade();
+    if (result) {
+        return *result;
+    } else {
+        // FIXME
+        return NR::Rect(NR::Point(0, 0), NR::Point(0, 0));
+    }
 }
 
 static void sp_item_private_snappoints(SPItem const *item, SnapPointsIter p)