<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>55739</bug_id>
          
          <creation_ts>2025-08-27 14:32:41 +0300</creation_ts>
          <short_desc>Switch to Qt6</short_desc>
          <delta_ts>2025-11-10 12:12:39 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>OpenBoard</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="neurofreak@altlinux.org">neurofreak</assigned_to>
          <cc>antohami</cc>
    
    <cc>brow</cc>
    
    <cc>iv</cc>
    
    <cc>neurofreak</cc>
    
    <cc>rider</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271484</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-08-27 14:32:41 +0300</bug_when>
    <thetext>Апстрим рекомендует Qt6 начиная с 1.7.3[1]. Предлагаю подумать о переходе.

[1]https://git.altlinux.org/gears/O/OpenBoard.git?a=blob;f=README.md;h=cd8563ef982996c01571fc32f05f882550e95fad#l29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271486</commentid>
    <comment_count>1</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-08-27 14:56:04 +0300</bug_when>
    <thetext>(Ответ для Ivan A. Melnikov на комментарий #0)
&gt; Апстрим рекомендует Qt6 начиная с 1.7.3[1]. Предлагаю подумать о переходе.
&gt; 
&gt; [1]https://git.altlinux.org/gears/O/OpenBoard.git?a=blob;f=README.md;
&gt; h=cd8563ef982996c01571fc32f05f882550e95fad#l29

Я уже пробовал. Пара патчей отваливается. Их нужно переписывать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271492</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-08-27 16:18:20 +0300</bug_when>
    <thetext>&gt; Пара патчей отваливается

Отваливается (точнее, мешает сборке) только 0006-polygon_line_styles.patch, из-за использования QStringRef. Его несложно допинать, на моей машине собралось такое:

https://git.altlinux.org/tasks/393374

Но вообще в этом патче странный код, неплохо бы посмотреть на него внимательнее.

Не понятно, что делает метод convertLineToPolygon. QPolygonF собирается в строку, а потом разбирается обратно в QPolygonF, при этом на первый взгляд он от этого не должен поменяется, только памяти немного утекает.

Что произойдёт, если заменить эту функцию на однострочник `return pLine;`? Как это увидеть?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271497</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-08-27 16:33:18 +0300</bug_when>
    <thetext>&gt; https://git.altlinux.org/tasks/393374

Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node. qt5-webengine там кстати тоже в FTBFS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271507</commentid>
    <comment_count>4</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-08-27 18:47:30 +0300</bug_when>
    <thetext>(Ответ для Ivan A. Melnikov на комментарий #3)
&gt; &gt; https://git.altlinux.org/tasks/393374
&gt; 
&gt; Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node.
&gt; qt5-webengine там кстати тоже в FTBFS.

Под i586 можно не собирать. Не проблема.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271542</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-08-28 13:19:19 +0300</bug_when>
    <thetext>Во-певрых, я вчера накосячил при переносе 0006-polygon_line_styles.patch, сегодня очевидная ошибка исправлена.

Во-вторых, эффект от convertLineToPolygon увидеть несложно: нужно нарисовать несколько пунктирных линий, а потом пробовать их стирать стёркой. Если convertLineToPolygon просто вернёт свой аргумент, то при работе стёрки иногда будут пропадать сегменты, расположенные вне области действия (возможно даже где-то очень далеко).

Как convertLineToPolygon решает эту проблему неясно, но очевидно, что происходит какая-то магия. Более того, при сборке с qt6 эта магия слегка подразваливается -- при определённом упорстве можно воспроизвести проблему, но не так легко и заметно, как было бы без convertLineToPolygon.

Природа этой магии не очевидна. По всей видимости, превращения float&apos;ов в строчки и обратно как-то очень удачно их округляют. Попытки понять, как именно, и как-то воспроизвести эту магию более простыми действиями достаточно результата пока не дали, хотя обычное округление координат до 3-4 десятичных знаков делает проблему заметно реже воспоизводящейся.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271824</commentid>
    <comment_count>6</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2025-09-01 20:01:47 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #5)
&gt; Природа этой магии не очевидна.

И понять её мне так и не удалось. К тому же, она начинает подводить при сборке с Qt6.

Вместо оживления магии можно попробовать сделать что-то более понятное. 

Суть проблемы в том, что стёрка вычетает один QPainterPath из другого, и алгоритм этого вычетания не справляется с полигонами, состоящими из нескольких не связанных друг с другом частей. Соответственно идея в том, чтобы не ставить перед ним таких сложных задач -- например, обрабатывать все чёрточки пунктироной линии по одной.

Однако сильно вмешиваться в код, апстрим которого не хочет принимать такие сложные изменения[1] наверное не стóит, так что была изобретена небольшая хитрость. Линии как и раньше добавляются в сцену целиком, и разделяются на цельные куски непосредственно при применении к ним стёрки. На моей машине работает хорошо:

https://git.altlinux.org/tasks/393758/

[1]https://github.com/OpenBoard-org/OpenBoard/pull/714#issuecomment-1533112260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276333</commentid>
    <comment_count>7</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2025-11-08 20:33:18 +0300</bug_when>
    <thetext>Спасибо за патчи. Отправил в Сизиф.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276393</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-11-10 12:08:35 +0300</bug_when>
    <thetext>(Ответ для Ivan A. Melnikov на комментарий #3)
&gt; Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node.
Нет. Из-за прекращения поддержки в Blink.
Патч для возвращения, кажется, ещё где-то есть, на я решил изначально не делать в Qt6, чтоб потом не мучиться с выпиливанием.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276396</commentid>
    <comment_count>9</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2025-11-10 12:12:39 +0300</bug_when>
    <thetext>(Ответ для Ivan A. Melnikov на комментарий #3)
&gt; похоже из-за проблем node.
Эта решена #56065</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>