Problem with the fifth outpu argument of xclick function. Nothing will 51/18551/2
Adeline CARNIS [Wed, 21 Sep 2016 12:55:23 +0000 (14:55 +0200)]
happen when clicking on Ok and Cancel menus. Test with getcolor function.
Fix getcolor and 1 + []

Change-Id: Ic34680ffc13fae86ed1f2875cbbead1816b49dd7

scilab/modules/graphics/macros/getcolor.sci
scilab/modules/graphics/sci_gateway/c/sci_xclick.c

index a2f69d4..ccaea69 100644 (file)
@@ -51,7 +51,12 @@ function [c] = getcolor(Title,cini)
     end;
 
     // create the window for getcolor
-    win = max(winsid()) + 1;
+    
+    win = max(winsid());
+    if isempty(win) then 
+        win = 1;
+    end
+        
     scf(win);
 
     sdf;
index 2c69034..18d4ddf 100644 (file)
@@ -68,8 +68,8 @@ int sci_xclick(char *fname, void *pvApiCtx)
 
     // Get return values
     mouseButtonNumber = getJxclickMouseButtonNumber();
-    pixelCoords[0] = (int) getJxclickXCoordinate();
-    pixelCoords[1] = (int) getJxclickYCoordinate();
+    pixelCoords[0] = (int)getJxclickXCoordinate();
+    pixelCoords[1] = (int)getJxclickYCoordinate();
     iWindowUID = getJxclickWindowID();
     menuCallback = getJxclickMenuCallback();
 
@@ -99,7 +99,7 @@ int sci_xclick(char *fname, void *pvApiCtx)
             return 1;
         }
 
-        rep[0] = (double) mouseButtonNumber;
+        rep[0] = (double)mouseButtonNumber;
         rep[1] = userCoords2D[0];
         rep[2] = userCoords2D[1];
     }
@@ -116,7 +116,7 @@ int sci_xclick(char *fname, void *pvApiCtx)
             return 1;
         }
 
-        rep[0] = (double) mouseButtonNumber;
+        rep[0] = (double)mouseButtonNumber;
     }
 
     if (nbOutputArgument(pvApiCtx) >= 2)
@@ -165,23 +165,19 @@ int sci_xclick(char *fname, void *pvApiCtx)
         }
 
         getGraphicObjectProperty(iWindowUID, __GO_ID__, jni_int, (void**)&piFigureId);
-        rep[0] = (double) iFigureId;
+        rep[0] = (double)iFigureId;
     }
 
     if (nbOutputArgument(pvApiCtx) >= 5)
     {
-        char *strRep  = NULL;
-        AssignOutputVariable(pvApiCtx, 5) = nbInputArgument(pvApiCtx) + 5;
-        istr = (int)strlen(menuCallback);
-
-        if (allocSingleString(pvApiCtx, nbInputArgument(pvApiCtx) + 5, istr * one, &strRep))
+        if (createSingleString(pvApiCtx, nbInputArgument(pvApiCtx) + 5, menuCallback))
         {
             Scierror(999, _("%s: Memory allocation error.\n"), fname);
             deleteJxclickString(menuCallback);
             return 1;
         }
-        strncpy(strRep, menuCallback, istr);
-        freeAllocatedSingleString(strRep);
+
+        AssignOutputVariable(pvApiCtx, 5) = nbInputArgument(pvApiCtx) + 5;
     }
 
     deleteJxclickString(menuCallback);