<?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://www.ribbonsoft.com/bugtracker/">
    <title>Flyspray::</title>
    <link>https://www.ribbonsoft.com/bugtracker/</link>
    <description>Flyspray::QCAD Bugtracker: Recently closed tasks</description>
    <dc:date>2026-08-14T11:15:49Z</dc:date>
    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2740" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2564" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2739" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2738" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2737" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2734" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2736" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2735" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2733" />
                <rdf:li rdf:resource="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2719" />
              </rdf:Seq>
    </items>
    		
  </channel>
    <item rdf:about="https://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2564">
    <title>FS#2564: REllipse::getVectorTo(p) returns a vector to a major point when p is on the major axis</title>
    <link>https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2564</link>
    <dc:date>2026-08-10T08:10:57Z</dc:date>
    <dc:creator>CVH</dc:creator>
     <description>

Andrew,



If a given point p is on the major axis then REllipse::getVectorTo(p) returns one of the major points. In the code this is handled as a special case when the point is in-line (collinear) with the major axis. This is only correct for points outside the evolute.



On the major axis is defined by getAngle().This may fail for a magnitude equal to or less than 1e-6.A point that close to the center should not have a single solution at zero degrees.



The correct solutions are:- If p is equal to the center ⇒ Two vectors to the two minor points.- On the major axis and strictly inside the evolute ⇒ Two mirrored vectors.- On the major axis and on or outside the evolute ⇒ The nearest major point.- On the minor axis ⇒ The nearest minor point.



 An additional problem is now what to return on a duality with full ellipses.Or for an ellipse arc where both of two results are valid.getVectorTo() typically returns but one unique result.



For example: RCircle::getVectorTo(p) returns an invalid vector when the point is near the center.Then there are an unlimited number of solutions. 





Further discovered that the point related to the returned vector may fail x²/a²+y²/b²=1Although almost on the ellipse within 2.299e-10 … f(x,y) may return 9.5310This example would fail REllipse::contains while the border is considered as inside.



Meanwhile implemented a &amp;#039;simple method&amp;#039; to find the nearest point(s) on an ellipse.Fast converging in 3 steps, no trigs and very accurate, about 24 lines of code.f(x,y) returns mostly 1.000 with so far:- a minimum of 0.9999999999999997 - a maximum of 1.0000000000000007.In other words, it is only off for the last meaningful decimal digit.



With this all methods that are based on REllipse::getVectorTo(p) can be implemented very reliable with tolerance, border flag, … and so on.By default the normal for a point is given with high accuracy and a tangent is that rotated.… ...



Regards,CVH 


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

<p>
If a given point p is on the major axis then REllipse::getVectorTo(p) returns one of the major points. In the code this is handled as a special case when the point is in-line (collinear) with the major axis. <br />This is only correct for points outside the evolute.
</p>

<p>
On the major axis is defined by getAngle().<br />This may fail for a magnitude equal to or less than 1e-6.<br />A point that close to the center should not have a single solution at zero degrees.
</p>

<p>
The correct solutions are:<br />- If p is equal to the center ⇒ <strong>Two</strong> vectors to the two minor points.<br />- On the major axis and strictly inside the evolute ⇒ <strong>Two</strong> mirrored vectors.<br />- On the major axis and on or outside the evolute ⇒ The nearest major point.<br />- On the minor axis ⇒ The nearest minor point.
</p>

<p>
 An additional problem is now what to return on a duality with full ellipses.<br />Or for an ellipse arc where both of two results are valid.<br />getVectorTo() typically returns but one unique result.
</p>

<p>
For example: <br />RCircle::getVectorTo(p) returns an invalid vector when the point is near the center.<br />Then there are an unlimited number of solutions. 
</p>
<hr />
<hr />

<p>
Further discovered that the point related to the returned vector may fail x²/a²+y²/b²=1<br />Although almost on the ellipse within 2.299e-10 … f(x,y) may return 9.5310<br />This example would fail REllipse::contains while the border is considered as inside.
</p>

<p>
Meanwhile implemented a &#039;simple method&#039; to find the nearest point(s) on an ellipse.<br />Fast converging in 3 steps, no trigs and very accurate, about 24 lines of code.<br />f(x,y) returns mostly 1.000 with so far:<br />- a minimum of 0.9999999999999997 <br />- a maximum of 1.0000000000000007.<br />In other words, it is only off for the last meaningful decimal digit.
</p>

<p>
With this all methods that are based on REllipse::getVectorTo(p) can be implemented very reliable with tolerance, border flag, … and so on.<br />By default the normal for a point is given with high accuracy and a tangent is that rotated.<br />… ..<br />.
</p>

<p>
Regards,<br />CVH 
</p>
<pre class="code"></pre>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2734">
    <title>FS#2734: Concerning: Commit 2b1838b</title>
    <link>https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2734</link>
    <dc:date>2026-07-30T15:11:31Z</dc:date>
    <dc:creator>CVH</dc:creator>
     <description>

RCircle.getVectorTo was modded to avoid the sqrt() in getMagnitude() and used v.getSquaredMagnitude().Then comparing that with the square of the default tolerance (1e-18).Part of Commit d233495



In RCircle::getDistanceTogetDistanceTo2D is based on getMagnitude2D().This should be compared with RS.PointTolerance (1e-9), not squared (1e-18).



! ! !Only true in an arbitrary (unlimited) precision.The method using the magnitude or the squared magnitude cannot be compared in floating point.The squared magnitude will hardly ever have a meaningful 18th digit after the comma.As it is the subtraction of the vector components with no more than 17 significant digits.



A method missing here is RVector::getSquaredMagnitude2D() avoiding + 0.0*0.0 for dz² 





 Here you use a circular tolerance area in 2D: Less than 1e-9 away in any 2D direction.Or a spherical tolerance in 3D.



Positions are typically compared using an axis aligned square shape as tolerance range in 2D (RVector::equalsFuzzy2D) or a cubic box in 3D (RVector::equalsFuzzy): Less than 1e-9 to 1.414214e-9 away in any 2D directionOr less than 1e-9 to 1.732051e-9 away in 3D.40 to 70% more tolerant depending 2 or 3D and the direction.



 Regards,CVH



PS:I can start a comment on GitHub like before but that is no longer accepting inputs.

</description>
    <content:encoded><![CDATA[
<p>
RCircle.getVectorTo was modded to avoid the sqrt() in getMagnitude() and used v.getSquaredMagnitude().<br />Then comparing that with the square of the default tolerance (1e-18).<br />Part of Commit d233495
</p>

<p>
In RCircle::getDistanceTo<br />getDistanceTo2D is based on getMagnitude2D().<br /><strong>This should be compared with RS.PointTolerance (1e-9)</strong>, not squared (1e-18).
</p>

<p>
! ! !<br />Only true in an arbitrary (unlimited) precision.<br />The method using the magnitude or the squared magnitude cannot be compared in floating point.<br />The squared magnitude will hardly ever have a meaningful 18th digit after the comma.<br />As it is the subtraction of the vector components with no more than 17 significant digits.
</p>

<p>
A method missing here is RVector::getSquaredMagnitude2D() avoiding + 0.0*0.0 for dz² 
</p>
<hr />
<hr />

<p>
 Here you use a circular tolerance area in 2D: Less than 1e-9 away in any 2D direction.<br />Or a spherical tolerance in 3D.
</p>

<p>
Positions are typically compared using an axis aligned square shape as tolerance range in 2D (RVector::equalsFuzzy2D) or a cubic box in 3D (RVector::equalsFuzzy): <br />Less than 1e-9 to 1.414214e-9 away in any 2D direction<br />Or less than 1e-9 to 1.732051e-9 away in 3D.<br />40 to 70% more tolerant depending 2 or 3D and the direction.
</p>

<p>
 Regards,<br />CVH
</p>

<p>
PS:<br />I can start a comment on GitHub like before but that is no longer accepting inputs.<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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://www.ribbonsoft.com/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>
    <item rdf:about="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2733">
    <title>FS#2733: Transparent black or white entities lose transparency with color correction</title>
    <link>https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2733</link>
    <dc:date>2026-07-01T09:37:52Z</dc:date>
    <dc:creator>Andrew</dc:creator>
     <description>

Color correction strips the alpha channel.



See:https://forum.qcad.org/t/qcad-shading-of-hatches/11828 

</description>
    <content:encoded><![CDATA[
<p>
Color correction strips the alpha channel.
</p>

<p>
See:<br /><a href="https://forum.qcad.org/t/qcad-shading-of-hatches/11828" class="urlextern" title="https://forum.qcad.org/t/qcad-shading-of-hatches/11828"  rel="nofollow">https://forum.qcad.org/t/qcad-shading-of-hatches/11828</a> 
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2719">
    <title>FS#2719: Moiré Effect with QT6 on Linux when Display Scaling is &gt; 100%</title>
    <link>https://www.ribbonsoft.com/bugtracker/index.php?do=details&amp;task_id=2719</link>
    <dc:date>2026-06-19T10:24:24Z</dc:date>
    <dc:creator>Alex Holden</dc:creator>
     <description>

I have noticed a problem that causes ugly rendering when using the QT6 version of 3.32.7 on KDE/XWayland if my system display scaling is set higher than 100%. The problem does not occur with QT5.



Attached screenshots were taken using QT5 and QT6 for comparison (both at 125% scaling). Antialiasing was turned off. Note how the grid dots fade in and out like a moiré pattern.

</description>
    <content:encoded><![CDATA[
<p>
I have noticed a problem that causes ugly rendering when using the QT6 version of 3.32.7 on KDE/XWayland if my system display scaling is set higher than 100%. The problem does not occur with QT5.
</p>

<p>
Attached screenshots were taken using QT5 and QT6 for comparison (both at 125% scaling). Antialiasing was turned off. Note how the grid dots fade in and out like a moiré pattern.
</p>
]]></content:encoded>
  </item>
  </rdf:RDF>
