<?xml version="1.0" ?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel rdf:about="https://qcad.org/bugtracker/">
    <title>Flyspray::</title>
    <link>https://qcad.org/bugtracker/</link>
    <description>Feed for all projects</description>
    <dc:date>2026-08-20T02:17:50Z</dc:date>
    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2744" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2743" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2742" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2741" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2740" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2739" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2738" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2737" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2736" />
                <rdf:li rdf:resource="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2735" />
              </rdf:Seq>
    </items>
    		
  </channel>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2744">
    <title>FS#2744: Select by handle to find an offending drawing object</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2744</link>
    <dc:date>2026-08-20T02:17:50Z</dc:date>
    <dc:creator>CVH</dc:creator>
     <description>

As we can read in this forum topic:https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970



The tool can report “Object selected: nnn” when selecting an offending entity while nothing seems to be selected.The search for the offending entity can be simplified by also reporting its Block name.

    if (isEntity(obj)) {
        di.selectEntity(obj.getId());
        EAction.handleUserMessage(qsTr(&amp;quot;Object selected:&amp;quot;) + &amp;quot; &amp;quot; + obj.getId() + &amp;quot; (&amp;quot; + obj.getBlockName() + &amp;quot;)&amp;quot;);
    }


The object ID nnn is of no use for a common user.



Automatically switching to the Block in question is perhaps even better.



In the referred topic the user explains how to find and delete the entity.It won&amp;#039;t be saved thus saving and reopening is then the more simplier solution.



Offending is for example an ellipse with a negative ratio.Not automatically fixed by correctMajorMinor().But easily fixed when selected (in the current Block).



Regards,CVH

</description>
    <content:encoded><![CDATA[
<p>
As we can read in this forum topic:<br /><a href="https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970" class="urlextern" title="https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970"  rel="nofollow">https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970</a>
</p>

<p>
The tool can report “<strong>Object selected: nnn</strong>” when selecting an offending entity while nothing seems to be selected.<br />The search for the offending entity can be simplified by also reporting its Block name.
</p>
<pre class="code">    if (isEntity(obj)) {
        di.selectEntity(obj.getId());
        EAction.handleUserMessage(qsTr(&quot;Object selected:&quot;) + &quot; &quot; + obj.getId() + &quot; (&quot; + obj.getBlockName() + &quot;)&quot;);
    }</pre>

<p>
The object ID nnn is of no use for a common user.
</p>

<p>
Automatically switching to the Block in question is perhaps even better.
</p>

<p>
In the referred topic the user explains how to find and delete the entity.<br />It won&#039;t be saved thus saving and reopening is then the more simplier solution.
</p>

<p>
Offending is for example an ellipse with a negative ratio.<br />Not automatically fixed by <em>correctMajorMinor()</em>.<br />But easily fixed when selected (in the current Block).
</p>

<p>
Regards,<br />CVH<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2743">
    <title>FS#2743: Performance: slow performance when (un-)collapsing parent layers</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2743</link>
    <dc:date>2026-08-19T17:53:14Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

See also:https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961 

</description>
    <content:encoded><![CDATA[
<p>
See also:<br /><a href="https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961" class="urlextern" title="https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961"  rel="nofollow">https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961</a> 
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2742">
    <title>FS#2742: Layer list: collapsed layers not remembered correctly if there are layer states</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2742</link>
    <dc:date>2026-08-19T16:24:36Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

If a drawing has layer states, the collapse state of layers that are also in the layer state is not remembered correctly.

</description>
    <content:encoded><![CDATA[
<p>
If a drawing has layer states, the collapse state of layers that are also in the layer state is not remembered correctly.<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2741">
    <title>FS#2741: Comparing values with the squared tolerance (1e-18)</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2741</link>
    <dc:date>2026-08-16T06:24:12Z</dc:date>
    <dc:creator>CVH</dc:creator>
     <description>

Andrew, 



Nicely summarized by an AI:Comparing two floating-point values within a tolerance is NOTthe same as comparing their squared values within the squared tolerance.Squaring changes the scale of values and the distance between them.This breaks the linear logic used in standard tolerance checks, especially for values near zero or larger values.



Why These Methods Are Not Equal:- Different scaling near zero: If a = 0.1 and b = 0.2, their absolute difference is 0.10.Their squared values are 0.01 and 0.04, with a difference of 0.03 (three times smaller).- Different scaling for large values: If a = 1000.1 and b = 1000.2, their difference is 0.10, but their squared values differ by about 200 (2000 times larger).- Tolerance distortion: A linear tolerance epsilon allows a fixed window [a-epsilon &amp;lt; b &amp;lt; a+epsilon]. Squaring maps this to a non-linear, asymmetric range that grows much faster for larger base values.



When It Fails:- Small values (&amp;lt;±1): The squared difference becomes much smaller than the linear difference.A tolerance that passes linear values might fail squared values.- Larger values (&amp;gt;±1): The squared difference becomes much larger than the linear difference.A tolerance that passes linear values will likely fail squared values.- Negative values: Squaring loses the sign. If (a = -1.001) and (b = 1.001), they are far apart linearly,but their squared values are nearly identical (1.002 vs 1.002).





 Recently implemented at various places in QCAD.For example to compare a distance in XY with a value within tolerance avoiding thesqrt() of the vector magnitude by retrieving the squared magnitude.Where the distance d = sqrt(dX²+dY²+dZ²) is compared with a positive value v within a small tolerance (e.g. RS.PointTolerance = 1e-9)Including dZ because there is no 2D variant for RVector::getSquaredMagnitude().Or for example where the squared distance is calculated in direct as dSqr = dX²+dY².



Typically worked out as fabs(d - v) &amp;lt; 1e-9 (analog of RMath.fuzzyCompare).What results in fabs(sqrt(dX²+dY²) - v) &amp;lt; 1e-9.



And then falsely replaced by fabs(dX²+dY² - v²) &amp;lt; 1e-9*1e-9 Or comparing a difference to within 1e-18.In the case of larger numbers (&amp;gt;1):Subtracting 2 much larger but near equal values with no more than 17 significant digits.



Also algebraically incorrect ! … Squaring both sides of (|d - v| &amp;lt; tol) to exploit d² instead of d results in: ((d - v)² &amp;lt; tol²)And this expands to: (d² - 2dv + v² &amp;lt; tol²) where the root d is still present.



(fabs(d - v) &amp;lt; tol) is already a reduction of a window comparison: (d &amp;gt; v-tol &amp;amp;&amp;amp; d &amp;lt; v+tol)At best, avoiding the subtraction of a small value in floating point: (d+tol &amp;gt; v &amp;amp;&amp;amp; d &amp;lt; v+tol)We then also avoid digit cancellation when subtracting larger values in fabs(d - v).But squaring this also leads to ((d+tol)² &amp;gt; v²) or (d²+2*d*tol+tol² &amp;gt; v²) for the first test.  





With the initial window comparison:Squaring (d &amp;gt; v-tol &amp;amp;&amp;amp; d &amp;lt; v+tol) results in: (d² &amp;gt; (v-tol)² &amp;amp;&amp;amp; d² &amp;lt; (v+tol)²)In wich we can replace d² and the intended value v ≈ sqrt(d²) to compare with: (dSqr=dX²+dY² &amp;gt; (v-tol)² &amp;amp;&amp;amp; dSqr=dX²+dY² &amp;lt; (v+tol)²)



This may fail when (d == v).And always when tol is too small to be added or subtracted in floating-point.When comparing (squared) values within a small tolerance we must thus include equality:

if (dSqr &amp;gt;= (v-tol)*(v-tol) &amp;amp;&amp;amp; dSqr &amp;lt;= (v+tol)*(v+tol)) {...}


Programmatically more complex … … and perhaps no longer a faster method than taking the root.The second test is skipped when the first is true.



It certainly avoids the absurd comparison with 1e-18.Because that is mostly true for real near equal distances after squaring.



 Regards,CVH

</description>
    <content:encoded><![CDATA[
<p>
Andrew, 
</p>

<p>
Nicely summarized by an AI:<br />Comparing two floating-point values within a tolerance is NOT<br />the same as comparing their squared values within the squared tolerance.<br />Squaring changes the scale of values and the distance between them.<br />This breaks the linear logic used in standard tolerance checks, especially for values near zero or larger values.
</p>

<p>
<strong><em>Why These Methods Are Not Equal</em></strong>:<br />- Different scaling near zero: <br />If a = 0.1 and b = 0.2, their absolute difference is <strong>0.10</strong>.<br />Their squared values are 0.01 and 0.04, with a difference of <strong>0.03</strong> (three times smaller).<br />- Different scaling for large values: <br />If a = 1000.1 and b = 1000.2, their difference is <strong>0.10</strong>, <br />but their squared values differ by about <strong>200</strong> (2000 times larger).<br />- Tolerance distortion: <br />A linear tolerance epsilon allows a fixed window <strong>[a-epsilon &lt; b &lt; a+epsilon]</strong>. Squaring maps this to a non-linear, asymmetric range that grows much faster for larger base values.
</p>

<p>
<strong><em>When It Fails</em></strong>:<br />- Small values (&lt;±1): <br />The squared difference becomes much smaller than the linear difference.<br />A tolerance that passes linear values might fail squared values.<br />- Larger values (&gt;±1): <br />The squared difference becomes much larger than the linear difference.<br />A tolerance that passes linear values will likely fail squared values.<br />- Negative values: Squaring loses the sign. <br />If (a = -1.001) and (b = 1.001), they are far apart linearly,<br />but their squared values are nearly identical (1.002 vs 1.002).
</p>
<hr />
<hr />

<p>
 Recently implemented at various places in QCAD.<br />For example to compare a distance in XY with a value within tolerance avoiding the<br /><strong>sqrt()</strong> of the vector magnitude by retrieving the squared magnitude.<br />Where the distance <strong>d = sqrt(dX²+dY²+dZ²)</strong> is compared with a positive value <strong>v</strong> within a small tolerance (e.g. <em>RS.PointTolerance = 1e-9</em>)<br />Including dZ because there is no 2D variant for <em>RVector::getSquaredMagnitude()</em>.<br />Or for example where the squared distance is calculated in direct as <strong>dSqr = dX²+dY²</strong>.
</p>

<p>
Typically worked out as <strong>fabs(d - v) &lt; 1e-9</strong> (analog of <em>RMath.fuzzyCompare</em>).<br />What results in <strong>fabs(sqrt(dX²+dY²) - v) &lt; 1e-9</strong>.
</p>

<p>
And then falsely replaced by <strong>fabs(dX²+dY² - v²) &lt; 1e-9*1e-9</strong> <br />Or comparing a difference to within <em class="u"><strong>1e-18</strong></em>.<br />In the case of larger numbers (&gt;1):<br />Subtracting 2 much larger but near equal values with no more than 17 significant digits.
</p>

<p>
<strong>Also algebraically incorrect !</strong> … <br />Squaring both sides of (<strong>|d - v| &lt; tol</strong>) to exploit <strong>d²</strong> instead of <strong>d</strong> results in: (<strong>(d - v)² &lt; tol²</strong>)<br />And this expands to: (<strong>d² - 2dv + v² &lt; tol²</strong>) where the root <strong>d</strong> is still present.
</p>

<p>
(<strong>fabs(d - v) &lt; tol</strong>) is already a reduction of a window comparison: (<strong>d &gt; v-tol &amp;&amp; d &lt; v+tol</strong>)<br />At best, avoiding the subtraction of a small value in floating point: (<strong>d+tol &gt; v &amp;&amp; d &lt; v+tol</strong>)<br />We then also avoid digit cancellation when subtracting larger values in <strong>fabs(d - v)</strong>.<br />But squaring this also leads to (<strong>(d+tol)² &gt; v²</strong>) or (<strong>d²+<em class="u">2*d*tol</em>+tol² &gt; v²</strong>) for the first test.  
</p>
<hr />
<hr />

<p>
With the initial window comparison:<br />Squaring (<strong>d &gt; v-tol &amp;&amp; d &lt; v+tol</strong>) results in: (<strong>d² &gt; (v-tol)² &amp;&amp; d² &lt; (v+tol)²</strong>)<br />In wich we can replace <strong>d²</strong> and the intended value <strong>v ≈ </strong>sqrt(d²) to compare with: <br />(<strong>dSqr=dX²+dY² &gt; (v-tol)² &amp;&amp; dSqr=dX²+dY² &lt; (v+tol)²</strong>)
</p>

<p>
This may fail when <strong>(d == v)</strong>.<br />And always when <strong>tol</strong> is too small to be added or subtracted in floating-point.<br />When comparing (squared) values within a small tolerance we must thus include equality:
</p>
<pre class="code">if (dSqr &gt;= (v-tol)*(v-tol) &amp;&amp; dSqr &lt;= (v+tol)*(v+tol)) {...}</pre>

<p>
Programmatically more complex … <br />… and perhaps no longer a faster method than taking the root.<br />The second test is skipped when the first is true.
</p>

<p>
It certainly avoids the absurd comparison with <strong>1e-18</strong>.<br />Because that is mostly true for real near equal distances after squaring.
</p>

<p>
 Regards,<br />CVH<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2740">
    <title>FS#2740: System reverts to &quot;Custom&quot; Printing Page size rather than taking ANSI-A (Letter) or other Named size</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2740</link>
    <dc:date>2026-08-14T11:15:49Z</dc:date>
    <dc:creator>Steven Guttag</dc:creator>
     <description>

I&amp;#039;ve noted that on my (relatively) new Mac Mini (M4), when I open my drawings, it yells at me when I open a block about using a &amp;quot;Custom&amp;quot; paper size.  it should be &amp;quot;A&amp;quot; size (US-Letter).  When I try to set it to ANSI-A (Letter), even after saving, it reverts to &amp;quot;Custom&amp;quot; (though the dimensions remain correct (8.5&amp;quot;x11&amp;quot;)

</description>
    <content:encoded><![CDATA[
<p>
I&#039;ve noted that on my (relatively) new Mac Mini (M4), when I open my drawings, it yells at me when I open a block about using a &quot;Custom&quot; paper size.  it should be &quot;A&quot; size (US-Letter).  When I try to set it to ANSI-A (Letter), even after saving, it reverts to &quot;Custom&quot; (though the dimensions remain correct (8.5&quot;x11&quot;)<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2739">
    <title>FS#2739: High CPU usage under Gnome with Text Size other than 100%</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2739</link>
    <dc:date>2026-08-08T19:16:34Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

See also:https://forum.qcad.org/t/high-cpu-when-idle-with-no-diagram-loaded-on-linux-wayland/11895 

</description>
    <content:encoded><![CDATA[
<p>
See also:<br /><a href="https://forum.qcad.org/t/high-cpu-when-idle-with-no-diagram-loaded-on-linux-wayland/11895" class="urlextern" title="https://forum.qcad.org/t/high-cpu-when-idle-with-no-diagram-loaded-on-linux-wayland/11895"  rel="nofollow">https://forum.qcad.org/t/high-cpu-when-idle-with-no-diagram-loaded-on-linux-wayland/11895</a> 
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2738">
    <title>FS#2738: Block &gt; Edit block in place: After editing the block, the block reference has draw order 0</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2738</link>
    <dc:date>2026-08-03T19:55:23Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

See also:https://forum.qcad.org/t/after-editing-a-block-in-place-the-block-loses-its-display-order-in-the-main-drawing/11918 

</description>
    <content:encoded><![CDATA[
<p>
See also:<br /><a href="https://forum.qcad.org/t/after-editing-a-block-in-place-the-block-loses-its-display-order-in-the-main-drawing/11918" class="urlextern" title="https://forum.qcad.org/t/after-editing-a-block-in-place-the-block-loses-its-display-order-in-the-main-drawing/11918"  rel="nofollow">https://forum.qcad.org/t/after-editing-a-block-in-place-the-block-loses-its-display-order-in-the-main-drawing/11918</a> 
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2737">
    <title>FS#2737: System reverts to &quot;Custom&quot; Printing Page size rather than taking ANSI-A (Letter) or other Named size</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2737</link>
    <dc:date>2026-08-03T15:53:03Z</dc:date>
    <dc:creator>Steven Guttag</dc:creator>
     <description>

This may be unique to the ARM version but I&amp;#039;ve noted that with each drawing I open, it flags that I am using a &amp;quot;Custom&amp;quot; page size.  My default Printing-Page is ANSI-A (US-Letter).  I can save that (Application Preferences)…close the program…open it up and while the page dimensions remain correct, the program still reports it as a &amp;quot;Custom&amp;quot; size.  



I see a similar behavior from the Drawing Preferences, with respect to Printing - Page. 



I didn&amp;#039;t start noticing this behavior until I changed my computer to an M4 based Mac Mini running Tahoe.  With that change, I started using the ARM based version of QCAD.  So, I&amp;#039;m wondering if the problem is ARM based rather than on other operating systems, including Intel based Macs, like my previous one. 

</description>
    <content:encoded><![CDATA[
<p>
This may be unique to the ARM version but I&#039;ve noted that with each drawing I open, it flags that I am using a &quot;Custom&quot; page size.  My default Printing-Page is ANSI-A (US-Letter).  I can save that (Application Preferences)…close the program…open it up and while the page dimensions remain correct, the program still reports it as a &quot;Custom&quot; size.  
</p>

<p>
I see a similar behavior from the Drawing Preferences, with respect to Printing - Page. 
</p>

<p>
I didn&#039;t start noticing this behavior until I changed my computer to an M4 based Mac Mini running Tahoe.  With that change, I started using the ARM based version of QCAD.  So, I&#039;m wondering if the problem is ARM based rather than on other operating systems, including Intel based Macs, like my previous one. 
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2736">
    <title>FS#2736: REllipse::correctMajorMinor() calls itself one more time, switchMajorMinor() calls it twice</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2736</link>
    <dc:date>2026-07-30T11:14:34Z</dc:date>
    <dc:creator>CVH</dc:creator>
     <description>

Andrew,



Claude included major/minor swapping in REllipse::getVectorTo().This is an existent resource and already used in most cases.I never encountered a major radius less than the minor but it is plausible.



For a ratio over 1.0, correctMajorMinor() caches the minor point (Line 1205).Sets a corrected ratio (Line 1206).And then it sets the major point using REllipse::setMajorPoint() (Line 1207). 



 setMajorPoint() calls REllipse::correctMajorMinor() again.This time the ratio is less than 1.0 and nothing is altered.



 Because correctMajorMinor() is setting things straight it can simply updatethe public attributes: &amp;#039;ratio&amp;#039;, &amp;#039;majorPoint&amp;#039;, &amp;#039;startParam&amp;#039; and &amp;#039;endParam&amp;#039; in this order.



correctMajorMinor() is typically called for:- The valid REllipse constructor.- When setting the REllipse major point, the ratioand thus also when setting the minor point.- When setting the properties of an REllipseEntity. 




There is a second analog to REllipse::correctMajorMinor().



The method REllipse::switchMajorMinor() does practically the same but then based on an external test.In open source only used in RShape::getIntersectionPointsEE (Line 1275 and 1279).Then called when the major radius is less than the minor radius.



The main difference is that it is skipped when the ratio is less than 1e-9.fabs(ratio) in line 314 is odd because a negative ratio is invalid … Not rendered. 



switchMajorMinor() triggers correctMajorMinor() twice.



 It first set the major point equal to the minor point based on the former ratio.This triggers correctMajorMinor().Then it sets the reciprocal of the ratio.This also triggers correctMajorMinor().



switchMajorMinor() can also update the public attributes in direct. 




For the record: REllipse::getTangents also swaps major/minor in direct when the point is on the minor axis. This method handles an ellipse as full and doesn&amp;#039;t correct end parameters.



Regards,CVH

</description>
    <content:encoded><![CDATA[
<p>
Andrew,
</p>

<p>
Claude included major/minor swapping in <strong>REllipse::getVectorTo()</strong>.<br />This is an existent resource and already used in most cases.<br />I never encountered a major radius less than the minor but it is plausible.
</p>

<p>
For a ratio over 1.0, <strong>correctMajorMinor()</strong> caches the minor point (Line 1205).<br />Sets a corrected ratio (Line 1206).<br />And then it sets the major point using <strong>REllipse::setMajorPoint()</strong> (Line 1207). 
</p>
<blockquote><div class="no">
<blockquote><div class="no">
 <strong>setMajorPoint()</strong> calls <strong>REllipse::correctMajorMinor()</strong> again.<br />This time the ratio is less than 1.0 and nothing is altered.</div></blockquote>
</div></blockquote>

<p>
 Because <strong>correctMajorMinor()</strong> is setting things straight it can simply update<br />the public attributes: &#039;ratio&#039;, &#039;majorPoint&#039;, &#039;startParam&#039; and &#039;endParam&#039; in this order.
</p>

<p>
<strong>correctMajorMinor()</strong> is typically called for:<br />- The valid REllipse constructor.<br />- When setting the REllipse major point, the ratio<br />and thus also when setting the minor point.<br />- When setting the properties of an REllipseEntity. 
</p>
<hr />

<p>
There is a second analog to <strong>REllipse::correctMajorMinor()</strong>.
</p>

<p>
The method <strong>REllipse::switchMajorMinor()</strong> does practically the same but then based on an external test.<br />In open source only used in <strong>RShape::getIntersectionPointsEE</strong> (Line 1275 and 1279).<br />Then called when the major radius is less than the minor radius.
</p>

<p>
The main difference is that it is skipped when the ratio is less than 1e-9.<br />fabs(ratio) in line 314 is odd because a negative ratio is invalid … Not rendered. 
</p>
<blockquote><div class="no">
<blockquote><div class="no">
<strong>switchMajorMinor()</strong> triggers <strong>correctMajorMinor()</strong> twice.</div></blockquote>
</div></blockquote>

<p>
 It first set the major point equal to the minor point based on the former ratio.<br />This triggers <strong>correctMajorMinor()</strong>.<br />Then it sets the reciprocal of the ratio.<br />This also triggers <strong>correctMajorMinor()</strong>.
</p>

<p>
<strong>switchMajorMinor()</strong> can also update the public attributes in direct. 
</p>
<hr />

<p>
For the record: <strong>REllipse::getTangents</strong> also swaps major/minor in direct when the point is on the minor axis. This method handles an ellipse as full and doesn&#039;t correct end parameters.
</p>

<p>
Regards,<br />CVH
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2735">
    <title>FS#2735: File &gt; Open: Frozen layer states from viewports are not loaded for empty layers</title>
    <link>https://qcad.org/bugtracker/index.php?do=details&amp;task_id=2735</link>
    <dc:date>2026-07-29T17:11:06Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

1. Freeze an empty layer in a viewport2. Save3. Reopen



Layer is not frozen.



See also:https://forum.qcad.org/t/manage-viewport-layers-not-persisting-save-and-reopen/11902 

</description>
    <content:encoded><![CDATA[
<p>
1. Freeze an empty layer in a viewport<br />2. Save<br />3. Reopen
</p>

<p>
Layer is not frozen.
</p>

<p>
See also:<br /><a href="https://forum.qcad.org/t/manage-viewport-layers-not-persisting-save-and-reopen/11902" class="urlextern" title="https://forum.qcad.org/t/manage-viewport-layers-not-persisting-save-and-reopen/11902"  rel="nofollow">https://forum.qcad.org/t/manage-viewport-layers-not-persisting-save-and-reopen/11902</a> 
</p>
]]></content:encoded>
  </item>
  </rdf:RDF>
