scf can only be performed on figure, not frame 66/14166/2
Bruno JOFRET [Thu, 27 Mar 2014 13:08:26 +0000 (14:08 +0100)]
Change-Id: Ib02c76812eaf2d580026312c398df176d1db4dc2

scilab/modules/graphics/src/c/getHandleProperty/set_current_figure_property.c

index 05a0c06..b533cac 100644 (file)
@@ -51,6 +51,8 @@ int set_current_figure_property(void* _pvCtx, int iObjUID, void* _pvData, int va
     int iCurFigUID = 0;
     int iAxesUID = 0;
     int* piAxesUID = &iAxesUID;
+    int iType = -1;
+    int *piType = &iType;
 
     if (iObjUID != 0)
     {
@@ -75,6 +77,15 @@ int set_current_figure_property(void* _pvCtx, int iObjUID, void* _pvData, int va
             Scierror(999, _("'%s' handle does not or no longer exists.\n"), "Figure");
             return SET_PROPERTY_ERROR;
         }
+
+        // Check new current figure is a figure
+        getGraphicObjectProperty(iCurFigUID, __GO_TYPE__, jni_int,  (void**)&piType);
+        if (iType != __GO_FIGURE__)
+        {
+            Scierror(999, _("Wrong value for '%s' property: A '%s' handle expected.\n"), "current_figure", "Figure");
+            return SET_PROPERTY_ERROR;
+        }
+
         setCurrentFigure(iCurFigUID);
         getGraphicObjectProperty(iCurFigUID, __GO_SELECTED_CHILD__, jni_int,  (void**)&piAxesUID);
         setCurrentSubWin(iAxesUID);