>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >gContextMenu http://forum.mozilla-russia.org/viewtopic.php?id=10316 |
cesspit > 15-05-2006 16:25:56 |
здраствуйте, моё расширение добавляет пару пунктов в контекстное меню. В обработчике выпадания контекстного меню я меняю видимость моих пунктов меню в зависимомти от того есть ли выделение. Выделение определяю по gContextMenu.isTextSelected. С задизабливанием всё ок. есть идеи? спасибо. |
Anton > 15-05-2006 16:41:50 |
Может, перед изменением innerHTML попробовать удалять выделение: ? или проверять наличие выделения через |
cesspit > 15-05-2006 18:34:46 |
Anton пишет
честно говоря я не очень понял идею.. что даёт window. getSelection (). removeAllRanges ();? попробовал, ничего не поменялось я пишу расширение-перводчик страниц в браузере (не TransBar , работает на локальном ядре промта). Страницы я перевожу так: беру , передаю его в свою компоненту(XPCOM), оттуда получаю переведённый текст и строкой запихиваю его обратно. В контекстном меню у меня команда "перевести выделенный фрагмент", которую я хотел показывать или скрывать в зависимости от наличия выделенного текста. Если ничего не переводить(то бишь не менять innerHTML), то gContextMenu.isTextSelected и getSelection() всегда возвращают то что есть на самом деле, если же начать переводить проявляются глюки, вот мои наблюдения: -) Вариант 1. -) Вариант 2. самый прикол, что я нашёл как это "лечить" - достаточно переключится на другое окно (не ФФ) и вернуться обратно, всё сразу начинает работать нормально. вообщем нифига не понимаю, пойду покурю |
Anton > 15-05-2006 21:36:55 |
cesspit пишет
После замены innerHTML выделение сохраняется, хотя его и не видно; может, в связи с этим и глючит gContexMenu.isTextSelected.
Удаляет все области выделения из окна. А других идей у меня нет. |
Mash > 15-05-2006 22:27:22 |
А там компонента (или чего-там-ещё) сама не влияет на фокус окна? Я к тому, что в gContextMenu::isTextSelection вызывается gContextMenu::searchSelected, а там есть focusedWindow. М.б. где-то фокус сбивается? Попробуйте посмотреть в эту сторону. Правда, к вечеру уже башня не варит, но как вариант... |
cesspit > 15-05-2006 23:18:05 |
ну да, я тоже по browser.js прошёлся и у меня такое же подозрение возникло. В компоненте происходит смена фокуса. При старте перевода я дизаблю окно ФФ (хендл получаю через виндовую GetActiveWindow), создаю на фоне задизабленного ФФ диалог прогресса по закрытии которого раздизабливаю ФФ и устананавливаю фокус на полученный ранее хендл. Сейчас уже не на работе, не проверить, завтра напишу чё вышло. |
cesspit > 16-05-2006 11:11:47 |
гы, всё было из-за фокуса p.s. спасибо всем огромное! |