changeset 28613:b11f026bc443

maint: merge stable to default.
author Rik <rik@octave.org>
date Mon, 03 Aug 2020 08:07:27 -0700
parents deebf4428e56 (current diff) bdc53d9affb2 (diff)
children 652a675c0916
files scripts/plot/appearance/legend.m
diffstat 1 files changed, 20 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/appearance/legend.m	Mon Aug 03 11:05:10 2020 -0400
+++ b/scripts/plot/appearance/legend.m	Mon Aug 03 08:07:27 2020 -0700
@@ -1284,10 +1284,17 @@
   endswitch
 endfunction
 
-function pos = boxposition (axpos, pba, ~)
+function pos = boxposition (axpos, pba, pbam, dam)
+
   pos = axpos;
+
+  if (strcmp (pbam, "auto") && strcmp (dam, "auto"))
+    return;
+  endif
+
   pbratio = pba(1)/pba(2);
   posratio = axpos(3)/axpos(4);
+
   if (pbratio != posratio)
     if (posratio < pbratio)
       pos(4) = pos(3) / pbratio;
@@ -1297,6 +1304,7 @@
       pos(1) += (axpos(3) - pos(3)) / 2;
     endif
   endif
+
 endfunction
 
 function update_legend_position (hl, sz)
@@ -1353,11 +1361,9 @@
                                              "plotboxaspectratiomode", ...
                                              "plotboxaspectratio", ...
                                              "dataaspectratiomode"}){:};
-    
-    if (strcmp (pbam, "manual") || strcmp (dam, "manual"))
-      axpos = boxposition (axpos, pba);
-    endif
-    
+
+    axpos = boxposition (axpos, pba, pbam, dam);
+
     lpos = [get(hl, "position")(1:2), sz];
 
     if (! outside)
@@ -1412,7 +1418,7 @@
           if (axpos(1) < (dx + hmargin))
             li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3)));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) - dx;
           lpos(2) = axpos(2);
@@ -1421,7 +1427,7 @@
           if (axpos(1) < (dx + hmargin))
             li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3)));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) - dx;
           lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2;
@@ -1430,7 +1436,7 @@
           if (axpos(1) < (dx + hmargin))
             li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3)));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) - dx;
           lpos(2) = axpos(2) + axpos(4) - lpos(4);
@@ -1439,7 +1445,7 @@
           if (li(4) < (dy + vmargin))
             li(4) = min (dy + vmargin, axpos(4));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2;
           lpos(2) = axpos(2) + axpos(4) + vmargin + ti(4);
@@ -1448,7 +1454,7 @@
           if (li(3) < (dx + hmargin))
             li(3) = min (dx + hmargin, axpos(3));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3);
           lpos(2) = axpos(2) + axpos(4) - lpos(4);
@@ -1457,7 +1463,7 @@
           if (li(3) < (dx + hmargin))
             li(3) = min (dx + hmargin, axpos(3));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3);
           lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2;
@@ -1466,7 +1472,7 @@
           if (li(3) < (dx + hmargin))
             li(3) = min (dx + hmargin, axpos(3));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3);
           lpos(2) = axpos(2);
@@ -1475,7 +1481,7 @@
           if (li(2) < (dy + vmargin))
             li(2) = min (dy + vmargin, 0.95 * (axpos(2) + axpos(4)));
             set (hax, "looseinset", li);
-            axpos = boxposition (get (hax, "position"), pbam, pba);
+            axpos = boxposition (get (hax, "position"), pba, pbam, dam);
           endif
           lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2;
           lpos(2) = axpos(2) - lpos(4) - vmargin - ti(2);