Current axes now update figure even if not direct parent 65/14165/2
Bruno JOFRET [Thu, 27 Mar 2014 13:07:55 +0000 (14:07 +0100)]
Change-Id: I7bfc4ef6455f8a276ce663baf2304c51717c8b62

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

index 4d2fe13..dd427de 100644 (file)
@@ -40,7 +40,8 @@
 int set_current_axes_property(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol)
 {
     int iCurAxesUID = 0;
-    int iParentFigureUID = 0;
+    int iCurChildUID = 0;
+    int iParentFigureUID = -1;
     int* piParentFigureUID = &iParentFigureUID;
     int type = -1;
     int *piType = &type;
@@ -74,12 +75,21 @@ int set_current_axes_property(void* _pvCtx, int iObjUID, void* _pvData, int valu
         return SET_PROPERTY_ERROR;
     }
 
+    setCurrentSubWin(iCurAxesUID);
+
+
+    // Look for top level figure
+    type = -1;
+    iCurChildUID = iCurAxesUID;
+    do {
+        iParentFigureUID = getParentObject(iCurChildUID);
+        getGraphicObjectProperty(iParentFigureUID, __GO_TYPE__, jni_int, (void **)&piType);
+        iCurChildUID = iParentFigureUID;
+    } while (iParentFigureUID != -1 && type != __GO_FIGURE__);
+
     /* The current Axes' parent Figure's selected child property must be updated */
-    iParentFigureUID = getParentObject(iCurAxesUID);
     setGraphicObjectProperty(iParentFigureUID, __GO_SELECTED_CHILD__, &iCurAxesUID, jni_int, 1);
 
-    setCurrentSubWin(iCurAxesUID);
-
     /* F.Leray 11.02.05 : if the new selected subwin is not inside the current figure, */
     /* we must also set the current figure to the subwin's parent */
     if (!isCurrentFigure(iParentFigureUID))