From f7dbed2b4057c96b5bd9c64059d26f54936a89e4 Mon Sep 17 00:00:00 2001 From: Bruno JOFRET Date: Thu, 27 Mar 2014 14:07:55 +0100 Subject: [PATCH] Current axes now update figure even if not direct parent Change-Id: I7bfc4ef6455f8a276ce663baf2304c51717c8b62 --- .../getHandleProperty/set_current_axes_property.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/scilab/modules/graphics/src/c/getHandleProperty/set_current_axes_property.c b/scilab/modules/graphics/src/c/getHandleProperty/set_current_axes_property.c index 4d2fe13..dd427de 100644 --- a/scilab/modules/graphics/src/c/getHandleProperty/set_current_axes_property.c +++ b/scilab/modules/graphics/src/c/getHandleProperty/set_current_axes_property.c @@ -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)) -- 1.7.9.5