Пример.
Открыл окно модуля и начинаю в нем писать текст "т.к." в текстовом литерале. После первого нажатия "." каретка прыгает на несколько строк вверх и остальные символы вводятся там, где я их даже не вижу сначала. Потом конечно замечаю и приходится откатывать ввод через CTRL+Z.
При этом код из моего скрипта не вызывается, т.е. проблема похоже чисто в Турбоконфе.
Ссылка скрыта
#1, 07 декабря 2023 21:39
Проблема возникает при идентификации документа.
Для начала хочу понять, в логе непонятное событие есть, после нажатия Ctrl+T фокус попадает сначала на какой-то элемент "ОбработкаСобытий", а потом почти сразу на нужный элемент РаботаСРаспоряжениями
[07.12.23 17:29:27:512] -------------------------------------------UIAutomation Focus Changed = ОбработкаСобытий
[07.12.23 17:29:27:519] -------------------------------------------UIAutomation Focus Changed = РаботаСРаспоряжениями
Что это за элемент, почему на него ушел фокус?
#2, 07 декабря 2023 21:47
Плохо конечно, что такой обрезанный скриншот, сложно оценить общую картину по окнам конфигуратора.
#3, 07 декабря 2023 21:48
В логе как будто фигурирует 2 окна, которые получают фокус по очереди.
#4, 07 декабря 2023 21:52
@tormozit, но для начала меня интересует ОбработкаСобытий - что это?
#5, ред. 07 декабря 2023 23:00
Было открыто 2 общих модуля.
#6, 07 декабря 2023 23:08
(5) tormozit, окна свободные были, судя по тому, что у них разные указатели?
#7, ред. 07 декабря 2023 23:14
Как бы это не было связано с тикетом про свободное окно.
А комбинация Alt+Shift+R (восстановить положение окна) - мне напоминает Shift+R = русская К, которая была ведена.
Может совпадение конечно.
#8, 07 декабря 2023 23:22
Еще и контрол там почему то залип, похоже все это связано со свободным окном. Вопрос окна были свободные или обычные на момент ввода "т.к."?
#9, ред. 07 декабря 2023 23:38
Окна были обычными в момент возникновения проблемы. Свободными делает другая проблема https://turboconf.ru/Tasks/8912 Я их потом каждый раз делаю обычными.
#10, 07 декабря 2023 23:37
Проблема случилась сразу при нажатии клавиши ".", а не R/К. Так что про ALT+Shift+R - скорее всего совпадение.
#11, 07 декабря 2023 23:43
(9) tormozit, но они стали свободными после этого? Я про это и написал, что возможно проблема связана. Т.к. я вижу в логе, что у окон разные указатели, что является признаком, что они свободные.
#12, 10 декабря 2023 15:03
Проблема скорее всего была вызвана https://turboconf.ru/Tasks/8912 и не должна больше происходить, если использовать рекомендации в https://turboconf.ru/Tasks/8912
bolsun изменил статус на Закрыто
#13, ред. 10 декабря 2023 18:46
Связь с проблемой https://turboconf.ru/Tasks/8912 думаю можно вычеркнуть. Опять случались эта неприятная беда.
Начал вводить слово "Ложь" в окне модуля. В момент после нажатия клавиши "о" каретка улетела на тысячу строк вверх и там напечатались остальные буквы "ожь".
Уже несколько раз такое случалось после той доработки скрипта и в данном случае сценарий вообще не содержал открытия COM окон как впрочем и исходный сценарий этой заявки.
Ссылка скрыта
tormozit изменил статус на Открыто
#14, 10 декабря 2023 19:04
Почему это происходит у меня нет идей, я пробовал повторить по всякому и ни разу такой проблемы не встречал. Лог тоже не дает ответов. Значит нужно найти способ воспроизведения.
bolsun изменил статус на На выяснении
#15, 10 декабря 2023 19:05
Единственное что ясно из лога - проблема происходит в момент идентификации документа.
#16, 10 декабря 2023 19:06
Может это происходит это из-за залипания модификаторов и наложения на это отправки сочетаний для идентификации документа.
#17, 10 декабря 2023 19:12
(16) tormozit, нет, модификаторы не залипают, иначе бы они остались зажатыми после прыжка, но текст вводится правильный.
У меня только одна сейчас мысль появилась, что подсказка штатная появляется в момент идентификации, что конечно нарушает весь ее процесс.
Отсюда и непонятный фокус на каком-то элементе в процессе.
#18, ред. 10 декабря 2023 19:18
Но в логе правда видно, что подсказка вызывается после уже идентификации и курсор уже не в той позиции.
#19, 10 декабря 2023 19:21
Кстати, была ли правка перед этим в том месте куда попал неправильно курсор?
Я только так смог смоделировать нажатиями Ctrl+T и Ctrl+OemMinus попадание в другую позицию.
#20, 10 декабря 2023 19:46
Правки кода в месте, куда прилетела каретка, не было.
#21, 10 декабря 2023 20:37
(20) tormozit, добавил доп. логирование, нужен будет новый лог
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#22, ред. 13 декабря 2023 00:14
Закрыл все окна модулей. Открыл модуля обработки. Установил каретку справа от точки в одном из выражений и нажал CTRL+Space однократно.
Каретка улетела на несколько тысяч строк вверх.
Ссылка скрыта
#23, 13 декабря 2023 13:50
Еще бы скриншоты, приходится много гадать. Вижу подсказка вроде открылась после улетания.
Когда улетит в следующий раз просьба приложить скрин, сразу после улетания (желательно всего окна конфигуратора), а также скрин из какого места улетело.
#24, ред. 13 декабря 2023 13:53
Можно попробовать проанализировать такие скриншоты из сообщения #13. Каретка прыгает обычно на начало какого то метода, но вроде бы не всегда.
#25, ред. 13 декабря 2023 13:53
(24) tormozit, анализировал, но там другой лог без доп. информации. Сложно сопоставить.
#26, 13 декабря 2023 13:54
Плюс случаи разные, во втором Ctrl+Space нажимался, а в первом автовызов.
#27, 13 декабря 2023 13:57
У меня пока только одно предположение, что фокус не успевает вернуться из дерева конфигурации после идентификации. Попробую поставить там ожидание возврата в документ.
#28, 13 декабря 2023 14:28
@tormozit https://disk.yandex.ru/d/XKCz9ijzgtoO1w
В этой версии добавил ожидание фокуса в исходный документ после идентификации + еще доп. логирование.
Если проблема возникнет нужен новый лог + скрины.
Не возникнет - значит в этом дело было.
#29, 13 декабря 2023 16:25
@tormozit, исправил ошибку в ожидании смены фокуса, на этой версии попробуй, будет ли каретка прыгать. Если возникнет, нужен лог.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#30, 13 декабря 2023 17:41
Появилась проблема с открытием штатной подсказки
2cW3oY4yIs.mp4
#31, 13 декабря 2023 17:54
(30) tormozit, не воспроизводится, нужен лог.
#32, 13 декабря 2023 17:59
Так случается только если список Т9 пуст
Ссылка скрыта
#33, 13 декабря 2023 18:00
Вставка из списка Т9 по ощущениям стала дольше выполняться и стала заметна крутилка при каждой вставке.
#34, 13 декабря 2023 18:02
(32) tormozit, это норма?
[13.12.23 17:58:43:166] Warning: Выражение = Объект.ВключенныеВидыПроверок1.Загр. Найдено типов 0. Слов передано 0, выведено 0. Основной тип = ?,
#35, 13 декабря 2023 18:45
(33) tormozit, тогда пока верну предыдущую реализацию вставки, она все таки проверена временем.
#36, 13 декабря 2023 18:55
Может вставку синхронным способом делать только при первом вызове в окне модуля, т.е. когда точно будет переключение фокуса?
#37, 13 декабря 2023 20:12
(36) tormozit, вставка не связана с фокусом, фокус уходит при открытии подсказки. Это просто была экспериментальная правка. Я не просто так изначально сделал отдельный асинхронный метод для Т9, это было сделано для отзывчивости при наборе.
#38, 13 декабря 2023 20:19
Вернул асинхронную вставку
Ссылка скрыта
#39, 13 декабря 2023 20:21
(34) @tormozit, проблема с отменой актуальна? жду ответ по этому вопросу
#40, ред. 13 декабря 2023 20:49
Проблема #30 воспроизводится и в версии 6.0.8747.36656
Но немного подумав, мне теперь кажется что она была и раньше. Просто ситуация очень редкая. Она требует следующих условий
Логично что штатный механизм в этом случае не показывает свой список, а сразу дополняет слово до конца единственного подходящего варианта. Далее ты отменяешь эту вставку, но список Т9 пуст. Поэтому в итоге пользователь получает ничего и он не доволен.
#41, 13 декабря 2023 21:22
(40) tormozit, вот почему он пуст?
если не использовать ИР, то будет показана подсказка с одним этим значением, предлагаю создать отдельный тикет для обсуждения
#42, 13 декабря 2023 21:29
(41) bolsun, пуст потому что я не могу рассчитать тип в этом случае. А элементы штатного списка мне недоступны
#43, 13 декабря 2023 21:30
(42) tormozit, нужен отдельный тикет для обсуждения и реализации. Этот тикет о проблеме с кареткой.
#44, 13 декабря 2023 21:36
(43) bolsun, создал заявку по открытию списка https://turboconf.ru/Tasks/8931
#45, 14 декабря 2023 17:34
Скорее всего проблема была связана с отсутствием ожидания возврата в документ после идентификации. Пока закрываю, если появится снова нужен будет лог на текущей версии.
bolsun изменил статус на Закрыто
#46, 14 декабря 2023 18:33
При выполнении команды "ИР Перейти к определению" сегодня опять случилось изменение режима отображения окон в конфигураторе. Эта команда не открывала окон и потому не могла отправлять нажатия клавиш.
#47, 14 декабря 2023 18:34
(46) tormozit, лог?
#48, 14 декабря 2023 18:35
bolsun изменил статус на На выяснении
#49, 14 декабря 2023 18:37
Кажется это случилось примерно в 18:00
Ссылка скрыта
tormozit изменил статус на Закрыто
#50, 14 декабря 2023 18:39
(49) tormozit, так не реально найти, нужен лог сразу же после возникновения проблемы.
bolsun изменил статус на На выяснении
#51, ред. 16 декабря 2023 19:15
Опять прыгнула каретка.
Открыл новое окно существующего модуля. Установил каретку справа от точки и нажал CTRL+Space. Штатная подсказка не сработала. Вызвалось событие Т9. Каретка улетела в почти в самое начало модуля в середину имени объявления переменной, которой я давно уже не интересовался.
Ссылка скрыта
#52, ред. 17 декабря 2023 23:26
Опять прыгнула каретка
Ссылка скрыта
Каретка прилетела сюда и выделила параметр в заголовке метода, который я до этого искал поиском, т.е. похоже что кто то отправил нажатие CTRL+"-" в окно модуля.
Затем продолжилась печать символов, которые я нажимал на клавиатуре.
#53, 17 декабря 2023 23:41
Да, проблема возникает именно после Ctrl+-, я про это писал. Поэтому и спрашивал, были ли правки в том месте.
Видимо не только правки, а просто факт нахождения в этом месте.
Почему Ctrl+- срабатывает в документе, а не в дереве как должно быть, нужно разбираться.
#54, ред. 18 декабря 2023 13:27
Опять прыгнула каретка. Но в этот раз в окне, которое уже давно открыто было и в нем уже много раз вызывалась подсказка, т.е. в кэше Турбоконфа имя конфигурации для этого окна должно было быть известно. Зачем он отправлял нажатие CTRL+"-" - непонятно.
Ссылка скрыта
#55, ред. 18 декабря 2023 15:35
(54) tormozit, т.к. лог обрезан я не могу определить вызывалась ли раньше идентификация этого документа, и если не вызывалась то почему.
В очередной раз в процессе Ctrl+T Ctrl+-
фокус забирает какой-то элемент, которого быть в этом месте не должно. В данном случае ирПлатформа. Откуда он берется я не понимаю. Мы просто переходим по Ctrl+T в дерево из модуля ирКлсПолеТекстаПрограммы, откуда тут берется ирПлатформа - не ясно.
[18.12.23 12:40:36:123] OnFocusChange() title=[КА1 серверная] - Обработка ирКлсПолеТекстаПрограммы: Модуль объекта - Конфигуратор - Комплексная автоматизация, редакция 1.1 , fg=468744
[18.12.23 12:40:36:124] -------------------------------------------UIAutomation Focus Changed = ирПлатформа
[18.12.23 12:40:36:128] -------------------------------------------UIAutomation Focus Changed = ирПлатформа
[18.12.23 12:40:36:129] -------------------------------------------UIAutomation Focus Changed = ирКлсПолеТекстаПрограммы
#56, 18 декабря 2023 15:37
Единственное объяснение, что до этого был выделен другой элемент в списке, и элемент по Ctrl+T активируется не сразу.
#57, 18 декабря 2023 15:43
Да, похоже так и есть. Но пока не ясно влияет ли это на перемещение каретки.
#58, 18 декабря 2023 15:50
в #52 достаточно подробно описал наблюдение. Удалось там что то новое увидеть? Может еще расширить логирование?
#59, ред. 18 декабря 2023 15:58
Есть версии на счет того, зачем Турбоконф у старого окна, для которого он точно уже узнавал имя конфигурации, пытается узнавать имя конфигурации заново?
#60, ред. 18 декабря 2023 16:07
(55) bolsun, вот большой лог. Нашел в нем еще какую то внутреннюю ошибку, уведомления о которой я не видел:
[18.12.23 12:25:25:700] Error: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в UIAutomationClient.IUIAutomationTreeWalker.GetParentElement(IUIAutomationElement element)
в TurboConf.Service.MainForm.AdjustContextMenu()
Ссылка скрыта
#61, ред. 18 декабря 2023 16:20
(60) tormozit, документ редактировался, но без идентификации, так подсказка не вызывалась (во всяком случае я не вижу этого в логе).
С этим вроде все в порядке.
#62, ред. 18 декабря 2023 16:28
У меня есть предположение только такое, после Ctrl+T хотя фокус и ушел в дерево, следующая комбинация Ctrl+- выполняется слишком быстро и конфигуратор считает, что еще активен модуль и выполняет команду возврат для него, а не для дерева.
В логе вообще в этом месте все просто
каретка в правильном месте
Ctrl+T
дождались смены элемента (попали в дерево)
Ctrl+OemMinus
дождались смены элемента на документ
и уже каретка не в том месте
Добавлю там небольшую задержку.
#63, 18 декабря 2023 16:38
@tormozit Добавил по 100 мс, после Ctrl+T. По результатам теста уменьшим/увеличим.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#64, 18 декабря 2023 16:41
На всякий случай вот код, которым я пользовался на своей стороне до передачи этой роли Турбоконфу.
Вроде бы с ним не было такой проблемы. Но были залипания клавиш-модификаторов.
#65, 18 декабря 2023 17:06
(63) bolsun, не помогло. Опять каретка улетела
отсюда
сюда
Ссылка скрыта
#66, 18 декабря 2023 17:24
Не помнишь, почему мы вообще используем Ctrl+- для возврата, а не Esc?
#67, ред. 18 декабря 2023 18:10
В окнах внешнего объекта (например внешней обработки) не работает клавиша Esc
#68, ред. 18 декабря 2023 18:21
Тогда больше идей у меня нет. просто после нажатия Ctrl+OemMinus в дереве конфигурации фокус попадает в документ, а затем через несколько миллисикунд прыгает курсор.
Причем у меня ни разу такого не было.
#69, 18 декабря 2023 18:33
Вот еще одна отладочная версия, в ней для ускорения воспроизведения идентификация не кэшируется и выполняется каждый раз.
Так же нужно протестировать отдельно функцию ТурбоКонф.ИдентифицироватьТекущийДокумент();
Изменить cкрипт ShowOutputForm.os
//ТурбоКонф.ShowOutputForm();
ТурбоКонф.ИдентифицироватьТекущийДокумент();
и попробовать вызывать его в разных ситуациях, может проблема воспроизведется.
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#70, ред. 18 декабря 2023 20:51
Пока не удалось воспроизвести специально.
Напомни в каком случае автоматически вызывается подсказка Т9, если ввожу слово без точки (в наблюдении #65 я вводил слово "Конец" и событие сработало после первого символа).
#71, 18 декабря 2023 20:46
(70) tormozit, не совсем понятен вопрос. После первого введенного символа и вызывается, если место подходящее.
#72, 18 декабря 2023 20:47
(71) bolsun, Вроде вызывается штатная подсказка автоматом. Слово "Конец" вводилось не после точки.
#73, 18 декабря 2023 20:48
(72) tormozit, нужен пример.
#74, ред. 19 декабря 2023 13:39
Вроде на обычной версии у тебя часто возникала проблема, на отладочной версии не возникает больше?
#75, 19 декабря 2023 15:10
(69) bolsun, эту версию я погонял часок с передышками. Проблема не повторилась. Но важно учесть, что и раньше я не мог ее специально воспроизвести. Эта версия работает очень медленно. Поэтому я затем вернулся на обычную.
#76, ред. 19 декабря 2023 17:26
Опять случилось. В этот раз я нажал клавишу "." и точка появилась в другом месте.
Ссылка скрыта
#77, ред. 19 декабря 2023 17:47
(76) tormozit, нужен лог из текущей версии 6.0.8753.29371 или выше, там есть дополнительное логирование позиции.
#78, 19 декабря 2023 17:50
(77) bolsun, жду починки блокирующей ошибки https://turboconf.ru/Tasks/8954
#79, 23 декабря 2023 08:44
Опять прыгнула каретка при нажатии клавиши "."
Ссылка скрыта
#80, 24 декабря 2023 11:47
bolsun изменил статус на Баг платформы
#81, ред. 29 декабря 2023 13:29
После внедрения мер противодействия больше прыжков на возникало.