Bug 61139
| Summary: | kmailtransport: невозможно изменить транспорт по умолчанию | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Котюхов Михаил Андреевич <kotjuhovma> | ||||
| Component: | kmailtransport | Assignee: | Sergey V Turchin <zerg> | ||||
| Status: | RESOLVED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | zerg | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Анализ исходников объясняет регрессию между 26.04.3 и 26.08.2. В src/widgets/transportmanagementwidgetng.cpp, TransportManagementWidgetNgPrivate::updateButtonState(), доступность кнопки определяется сравнением: index.data(TransportModel::TransportRoles::DefaultRole).toInt() == TransportManager::self()->defaultTransportId() В TransportModel::data() роль DefaultRole возвращает ID текущего транспорта по умолчанию независимо от выбранной строки. Поэтому условие истинно для любого выбранного транспорта и кнопка отключается. Такое же сравнение используется при формировании контекстного меню. Ошибочное сравнение существовало и раньше, но изменение модели в серии 26.08 проявило дефект. В обновлении исходников до 26.08.1 (коммит ALT 7e292334ed22023e7ab1fbdfcbe3ad6f9b71b603) в src/transportmodel.cpp добавлена обработка ролей для QtQuick: раньше data() для роли, отличной от Qt::DisplayRole (за исключением отдельно обрабатываемой Qt::FontRole), возвращала пустой QVariant; теперь DefaultRole возвращает defaultTransportId(). Раньше пустое значение преобразовывалось в 0, и сравнение обычно позволяло включить кнопку; теперь сравниваются два одинаковых ID. Для исправления следует сравнивать ID выбранного транспорта (TransportIdentifierRole) с defaultTransportId(), а не значение DefaultRole. Исправить нужно как updateButtonState(), так и условие добавления действия «Set as Default» в контекстное меню. Аналогичное ошибочное сравнение обнаружено и в проверенном upstream master: https://invent.kde.org/pim/kmailtransport/-/blob/master/src/widgets/transportmanagementwidgetng.cpp Отдельный upstream bug report с этим симптомом при поиске не найден. Вывод о причине сделан по анализу исходников, без дополнительного GUI-воспроизведения. |

Description
Котюхов Михаил Андреевич 2026-10-20 11:43:12 MSKCreated attachment 22755 [details] transport Системы, обновленные до Sisyphus: kworkstation-11.4-x86-64 education-11.2-x86-64-kde Версия: kmailtransport-26.08.2-alt1 Шаги: 1. Запустить KMail. 2. Открыть Настройка → Настроить KMail → Учётные записи → Отправка. 3. Добавить 2 транспорта. 4. Назначить второй транспорт транспортом по умолчанию. Результат: Кнопка «Сделать основным» неактивна. Изменить транспорт по умолчанию невозможно. Ожидаемый результат: Кнопка «Сделать основным» активна. Выбранный транспорт можно назначить транспортом по умолчанию. Дополнительно: Не воспроизводится в p11