Russian Qt Forum
Март 29, 2024, 12:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с "Copy" айтемом  (Прочитано 6647 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Сентябрь 07, 2018, 07:59 »

Добрый день

Меню бар устанавливается Ok, но всякий раз когда я меняю текст айтема "Copy" (напр на "Copy Surface") в консоли вылазит такая бяка
Цитировать
void QCocoaMenu::insertNative(QCocoaMenuItem *, QCocoaMenuItem *) Menu item is already in a menu, remove it from the other menu first before inserting
И после этого айтем с новым именем оказывается после следующего (Paste). Конечно текст меняется и для многих др айтемов (напр того же Paste) - но там все норм. Подумал может в меню есть еще один copy, распечатал все акшны - нет, только один. Что посоветуете ?

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #1 : Сентябрь 08, 2018, 02:06 »

самый очевидный вариант — спуститься в нативный код
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #2 : Сентябрь 08, 2018, 02:17 »

Что посоветуете ?

Исправить баг.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Сентябрь 08, 2018, 07:40 »

самый очевидный вариант — спуститься в нативный код
Конечно спускался, но ничего очевидного не увидел
Код:
void QCocoaMenu::insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem)
{
    [item->nsItem() setTarget:m_delegate];
    if (!item->menu())
        [item->nsItem() setAction:@selector(itemFired:)];

    if (item->isMerged())
        return;

    if ([item->nsItem() menu]) {
        qWarning() << Q_FUNC_INFO << "Menu item is already in a menu, remove it from the other menu first before inserting";
        return;
    }
...
Breakpoint на  qWarning - пожалуйста, но почему айтем присутствует, почему он не merged и почему вообще вызывается insertNative - раскопать непросто

Исправить баг.
Слишком прямолинейно (с грыжей на танк). Попробую сначала воспроизведется ли на простом примере
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Сентябрь 08, 2018, 08:32 »

Как ни странно, воспроизвелось! (аттач). Я и не надеялся, проверил для очистки совести. Правда от этого не легче  Улыбающийся Скоро буду обновляться, может само рассосется? Если не затруднит, проверьте и сообщите версию Qt

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #5 : Сентябрь 08, 2018, 22:14 »

в 4.8.7 все норм, в 5.9.4 воспроизводится.

про нативный код я имел в виду, что нужно тогда менять текст прямо через Cocoa.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Сентябрь 09, 2018, 04:35 »

в 4.8.7 все норм, в 5.9.4 воспроизводится.
Спасибо за тест. Изменил текст айтема - варнинга нет. Причем если я потом верну "Copy" из приложения - все норм. Пока сделаю-ка я начальное имя "Copy " (с пробелом в конце) - настоящие герои всегда идут в обход  Улыбающийся

Да, и эксперименты показали - та же проблема с айтемами "Cut" и "Paste" (во всяком случае в тестовом примере). Ото наверно как-то патчили чтобы работало для модальных диалогов, но вышло коряво
« Последнее редактирование: Сентябрь 09, 2018, 04:47 от Igors » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 22.