Summary: | Конфликт действий на комбинации клавиш Dolphin | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Жора Змейкин <katze_942> |
Component: | dolphin | Assignee: | Sergey V Turchin <zerg> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | corwin, maxpozdeev, sergey.sukiyazov, zerg |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Attachments: |
Description
Жора Змейкин
2025-01-02 13:59:20 MSK
Попробуйте удалить ~/.config/kglobalshortcutsrc и ~/.config/khotkeysrc , сделав резервную копию и перезайти в систему. (Ответ для Sergey V Turchin на комментарий #1) > Попробуйте удалить ~/.config/kglobalshortcutsrc и ~/.config/khotkeysrc , > сделав резервную копию и перезайти в систему. Удалил два файла и перезагрузился. К сожалению, не помогло. Заметил, что подобная проблема ещё и в Kate. Created attachment 17520 [details]
patch for 9003-qt6-base-6.7.2-qmenu_fix_shortcuts.patch in qt6-base
Тоже столкнулся с такими ошибками. Причина оказалась в патче 9003-qt6-base-6.7.2-qmenu_fix_shortcuts.patch в пакете qt6-base, если пересобрать пакет без него, то все ок.
В итоге удалось этот патч немного поправить и ошибки исчезли. Предлагаю к рассмотрению.
Created attachment 17524 [details]
Исправленные патчи для Qt6
Сформировал исправленные патчи с правкой от Max Pozdeev
(Ответ для Max Pozdeev на комментарий #3) > Создано вложение 17520 [details] [подробности] > patch for 9003-qt6-base-6.7.2-qmenu_fix_shortcuts.patch in qt6-base > > Тоже столкнулся с такими ошибками. Причина оказалась в патче > 9003-qt6-base-6.7.2-qmenu_fix_shortcuts.patch в пакете qt6-base, если > пересобрать пакет без него, то все ок. > > В итоге удалось этот патч немного поправить и ошибки исчезли. Предлагаю к > рассмотрению. Да, это корректное исправление. В Qt >= 6.7.0 добавили новый класс с методом QKeyCombination::keyboardModifiers(), я понадеялся что там "все лишнее" убирается. Но судя по всему нет. Так что правка абсолютно корректная. > ++ if (!result.contains(qtKey + int(mods))) //NOTE: We should disallow duplicates in the result list (TODO: Is this check really needed?) Эта проверка нужна, т.к. result формируется при проверке всех раскладок, соответственно есть вероятность что на разных раскладках комбинации могут задублироваться. Sergey V Turchin, я прикрепил архив с исправленными патчами для qt-6.7.2 и qt-6.8.0, их можно заменить в rpm-ках и пересобрать. Спасибо Max Pozdeev за найденную ошибку. (Ответ для Сукиязов С.А. на комментарий #4) > Создано вложение 17524 [details] [подробности] > Исправленные патчи для Qt6 > > Сформировал исправленные патчи с правкой от Max Pozdeev В новом патче для 6.7.2 эта строка отличается от 6.8.0: if (shortcut.key() == qtKey && (shortcut.keyboardModifiers() & mods)) { Created attachment 17525 [details]
Исправленные патчи для Qt6 (исправлено)
(Ответ для Max Pozdeev на комментарий #7) > В новом патче для 6.7.2 эта строка отличается от 6.8.0: > if (shortcut.key() == qtKey && (shortcut.keyboardModifiers() & mods)) { Блин, пропустил. Перезалил. (Ответ для Сукиязов С.А. на комментарий #5) > > ++ if (!result.contains(qtKey + int(mods))) //NOTE: We should disallow duplicates in the result list (TODO: Is this check really needed?) > Эта проверка нужна, т.к. result формируется при проверке всех раскладок, > соответственно есть вероятность что на разных раскладках комбинации могут > задублироваться. Если не трудно, поясните, пожалуйста. Разве не должны дубли отфильтроваться чуть ранее? Здесь: ``` for (QKeyCombination shortcut : std::as_const(result)) { if (shortcut.key() == qtKey && (shortcut.keyboardModifiers() & mods) == mods) { ambiguous = true; break; } } if (ambiguous) continue; ``` QKeyCombination есть суть пара key и keyboardModifiers, а в условие (shortcut.keyboardModifiers() & mods) == mods в том числе попадает выражение (shortcut.keyboardModifiers == mods) И если оба члена сравниваемых пар (комбинаций) равны, то и комбинации тоже. (Ответ для Max Pozdeev на комментарий #10) > Если не трудно, поясните, пожалуйста. Разве не должны дубли отфильтроваться > чуть ранее? Здесь: Просмотрел код еще раз. Согласен, вторая проверка не нужна. Created attachment 17531 [details]
Исправленные патчи для Qt6 (исправлено 2)
Убрал ненужное условие из патчей
Sergey V Turchin, последняя редакция патчей "Исправленные патчи для Qt6 (исправлено 2)", их можно заменить в rpm-ках и пересобрать. (Ответ для Сукиязов С.А. на комментарий #11) > (Ответ для Max Pozdeev на комментарий #10) > > Если не трудно, поясните, пожалуйста. Разве не должны дубли отфильтроваться > > чуть ранее? Здесь: > Просмотрел код еще раз. Согласен, вторая проверка не нужна. Спасибо за комментарий. qt6-base-6.7.2-alt8 -> sisyphus: Wed Jan 15 2025 Sergey V Turchin <zerg@altlinux> 6.7.2-alt8 - fix qmenu_fix_shortcuts.patch (thanks Corwin) (closes: 52611) |