Xpoint
   [напомнить пароль]

Как показать XUL-окошко с выделяемым и копируемым текстом?

Метки: [без меток]
2007-03-27 14:24:12 [обр] blacklion[досье]
Мне в экстеншене надо показать что-то типа тултипа, но закрываемого отдельной ссылочкой внутри него и, главное, содержащего много текста с возможностью выделить-скопировать как из обычной HTML-странички.
Показ "вечного" тултипа я решил просто - открываю dependent-окошко, застайленное как tooltip, без заголовка. Работает. Даже текст показывается нормально, если его добавить в <description> и ограничить максимальную ширину. Но это не даёт возможностей по выделению мышкой и копированию в клипборд.
Пробовал добавлять <html:div> вместо <description> - не лучше. Пробовал добавить <iframe> с HTML-документом - выделение работает, контекстного меню у него нет. К тому же я не смог заставить <iframe> увеличивать себя автоматически до оптимального размера, он показывает скроллбары.
Как лучше всего поступить?
спустя 1 час 57 минут [обр] Владимир Палант(434/4445)[досье]
<textbox class="plain" multiline="true"/>
Или таки используйте HTML-документ, поскольку в XUL выделение как таковое не реализовано. Контекстное меню при этом на вашей совести — смотрите, как сделано contentAreaContextMenu в браузере. Вместо <iframe> используйте <browser> и ставьте у него атрибут contentcontextmenu, указывающий на ваше контекстное меню. Если нужен пример поменьше, смотрите chrome://xpoint-sidebar/content/html-context.xul и chrome://xpoint-sidebar/content/html-context.js в Xpoint Sidebar (этот код использовался для реализации пейджера).
спустя 23 часа [обр] blacklion[досье]

Текстбокс — самое привлекательное, вот только я не очень пока понял как его заставить сделатся оптимального размера (до пределов maxHeight/maxWidth, конечно). Он не реагирует на flex="1" и стремится показать скроллбары, зараза такая. Так что, видимо, HTML :(

А выделние, кстати, работает в FF 2.0 как минимум: "-moz-user-select: text;" в стили, но тоже надо делать контекстное меню. И пока не проверял, заработает ли в FF1.5/SM1.0/SM1.1

спустя 17 минут [обр] Владимир Палант(434/4445)[досье]
Документация говорит, что есть только -moz-user-select: normal, значения "text" не существует. Работать должно даже в Gecko 1.7, это не новая фича. Но думаю, что копирование текста в HTML все-таки лучше отлажено.
спустя 24 минуты [обр] blacklion[досье]
Ну, я нашёл ": text" в последних исходниках... Посмотрим, что получится. Чем-то мне путь через <description> больше нравится, чем HTML. но если быстро не получится — сделаю через <browser>.
спустя 2 минуты [обр] blacklion[досье]
Ну, в документации сказано, что "-moz-user-select" не влияет на хром: "This doesn't have any affect on content loaded as chrome, except in textboxes.". Так что, будет ли это работать в Gecko 1.7 — вопрос тёмный.
спустя 2 дня 6 часов [обр] Владимир Палант(434/4445)[досье]
Напишите, что получится. Если окажется, что с выделением текста в XUL все лучше, чем я думал, то хотелось бы узнать.
спустя 1 день 23 часа [обр] blacklion[досье]

Всё странно поулчается: вроде и работает, но вот popup (context menu) появляется только если щёлкнуть правой кнопокй МИМО теста (на концах коротких строк)...

А с <browser> та же проблема, что с <textbox> — совершенно не ясно, как считать оптимальный размер, т.е. пока не упёрлись в maxWidth наращивать width (если это даёт уменьшение высоты, если нет — остановиться) и если необходимая после этого height < maxHeight, то сделать её такой, а если мало — только тогда показать скроллбары. Ни <browser> ни <iframe> ни <textbox> такого не умеют :(. Для <description> это, видимо, в C++ сделано...

Powered by POEM™ Engine Copyright © 2002-2005