Соглашения о поведении двойного или тройного щелчка для выбора текстовых функций?

Почти любая зрелая программа, использующая текст, реализует функцию «двойной щелчок для выбора слова» и, в некоторых случаях, «тройной щелчок для выбора дополнительных элементов, например всей строки». Я нахожу эти функции полезными, но они часто несовместимы между программами.

Пример. Двойной щелчок в некоторых программах не выделяет пробел после слова, но в большинстве это делает. Некоторые распознают символ - как конец слова, другие нет. SO любит выделять весь абзац, когда я пишу этот пост, когда я трижды щелкаю по нему, VS web developer 2005 не поддерживает тройной щелчок, а ультраредактирование 32 выберет одну строку при тройном щелчке. Мы могли бы найти бесчисленное количество несоответствий в том, как сопоставление шаблонов двойного и тройного щелчка реализовано в разных программах.

Меня беспокоит, как реализовать это поведение в моей программе, если никто другой не достиг соглашения о том, как должно работать сопоставление с образцом.

Мой вопрос: существует ли соглашение (соглашения? может быть, соглашение MS или Linux?), которое диктует, как эти функции должны вести себя для конечного пользователя? Что они из себя представляют?


person John    schedule 04.04.2010    source источник
comment
Вы также реализуете свой собственный компонент текстового редактора?   -  person Matti Virkkunen    schedule 05.04.2010
comment
Браузер Opera, который я использую, также открывает контекстное меню при двойном щелчке по слову. Тройной щелчок выделяет абзац.   -  person Pindatjuh    schedule 05.04.2010
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он не о программировании и должен быть на ux.stackexchange.com   -  person phuclv    schedule 01.06.2018


Ответы (4)


Я не верю, что существует стандарт требуемого уровня спецификации, и, вероятно, его не должно быть. Руководство Apple по интерфейсу пользователя является наиболее полный. Что касается выбора содержимого (в отличие от элементов управления или объектов дискретных данных), они говорят:

Двойной щелчок чаще всего используется для быстрого выполнения других действий, например… для выбора слова. Тройной щелчок выбирает следующую логическую единицу, определенную приложением. В текстовом документе тройной щелчок по слову выделяет абзац, содержащий слово…. Двойной щелчок внутри слова выделяет слово. Выбор должен обеспечивать «умное» поведение; например, если пользователь удаляет выбранное слово, пробел после слова также должен быть удален... В некоторых контекстах — например, в языке программирования — может быть уместно разрешить пользователям выбирать как левую, так и правую круглые скобки (или скобки или квадратные скобки) в паре, а также все символы между ними, дважды щелкнув любой из них». (стр. 115–116)

Apple довольно конкретно указывает, какие символы входят в слово, а какие нет.

Руководство по взаимодействию с пользователем Windows от Microsoft гласит:

Для некоторых типов выбираемых объектов каждый щелчок расширяет эффект щелчка. Например, одиночный щелчок в текстовом поле устанавливает место ввода, двойной щелчок выбирает слово, а тройной щелчок выбирает предложение или абзац. (стр. 430)

Руководство по дизайну Java Swing Look and Feel говорит:

Двойной щелчок (быстрое последовательное двойное нажатие кнопки мыши без перемещения мыши) используется для выбора более крупных единиц (например, для выбора слова в текстовом поле)…. Тройной щелчок (трехкратное быстрое нажатие кнопки мыши без перемещения мыши) используется для выделения еще более крупных единиц (например, для выделения всей строки в текстовом поле)…. Тройной щелчок по строке текста отменяет любой существующий выбор и выделяет строку.

В Руководстве по пользовательскому интерфейсу Gnome не говорится много о том, что должен делать двойной и тройной щелчок.

Это дает вам свободу выбора того, что лучше всего подходит для ваших пользователей. Двойной и тройной щелчок — это ярлыки для профессионалов, поэтому их поведение должно быть направлено на максимальную эффективность. Подумайте, почему пользователь что-то выбирает, и спроектируйте так, чтобы сделать это проще и быстрее.

Например, очевидная причина добавления пробела в конце при двойном щелчке слова заключается в том, что пользователи обычно выбирают слово, чтобы скопировать или вставить его в другое место в тексте. Это означает, что вы автоматически включаете завершающий пробел, чтобы пользователю не приходилось вручную удалять оставшийся лишний пробел в источнике и добавлять пробел для разделения слов в месте назначения.

Аналогичным образом, если пользователи выбирают строку кода или абзац, чтобы скопировать или переместить их в другое место, то вы, вероятно, захотите включить символы новой строки, чтобы пользователь не остался с пустой строкой в ​​источнике и принудительно вручную добавил новую строку в пункт назначения (при условии, что они не хотят брать строку/абзац и объединять его с другой строкой/абзацем.

Если выделение предназначено для чего-то другого, кроме копирования и перемещения текста в предложениях, то ничего из этого не может применяться, и вы не обязательно должны включать конечные пробелы или новые строки. Поэтому стандарта быть не должно.

В качестве альтернативы можно использовать то, что Apple называет интеллектуальным вырезанием и вставкой (см. Руководство по человеческому интерфейсу), или интеллектуальную вырезку и вставку Microsoft Word, где пробелы, новые строки и другие корректировки вычисляются алгоритмически при вырезании, копировании, вставке и удалении, а не при выборе.

person Michael Zuschlag    schedule 06.04.2010
comment
Какой фантастический, исчерпывающий ответ! Если бы у меня было значительное количество репутации и средства для этого, я бы вручил вам награду. Помечено моей личной благодарностью. - person John; 07.04.2010
comment
Я воспользовался свободой, чтобы вместо вас проголосовать за всегда превосходные ответы Майкла. Вы также должны взглянуть на его сайт, это, безусловно, один из лучших ресурсов по графическому интерфейсу/удобству использования. - person mafu; 21.05.2010

В моем идеальном мире я бы хотел, чтобы это работало так.

  • Двойной щелчок по слову выбирает только слово (слово в соответствии с грамматическими правилами локали), без пробела в конце (это для упрощения копирования между программами, чтобы мне не нужно было удалять пробелы при оклейке)
  • Если я удалю выбранное слово, мой текстовый редактор узнает о моем содержании и удалит все дополнительные оставшиеся пробелы.
  • Тройной щелчок выбирает строку без завершающих символов новой строки. (Абзац — это длинная строка, которая была перенесена)
person adamse    schedule 04.04.2010
comment
Это мой любимый ответ, хотя, кажется, мы до сих пор не нашли официального стандарта. Но примите мою благодарность и оранжевую стрелку за ваше время. :) Я полностью согласен со всеми вашими пунктами. Особенно об отсутствии завершающих пробелов. Именно эта конкретная несогласованность между программами заставила меня заметить, насколько непоследовательно программы реализуют эти функции в первую очередь. Спасибо за указание на то, что тройной щелчок по абзацу SO на самом деле представляет собой одну строку текста. Мне никогда не приходило в голову, но это просто строка текста с переносом слов, а не новой строкой. :) - person John; 05.04.2010

В Windows, Linux и OS X двойной щелчок выделяет слово под курсором, тройной щелчок выделяет всю строку текста (только одну строку, т. е. строку с переносом)

person rkulla    schedule 04.04.2010
comment
Chrome в Windows выделяет весь абзац для тройного щелчка. - person rjh; 05.04.2010
comment
только одна строка, т. е. строка с переносом == абзац? (в этом случае) - person adamse; 05.04.2010
comment
Да, это действительно зависит от приложения, см.: en.wikipedia.org/wiki/Triple-click - person rkulla; 05.04.2010
comment
MS Word выделяет весь абзац тройным щелчком - person phuclv; 01.06.2018

Поиск ответов и альтернативное решение: мне нравится писать код или команду в тексте и копировать их в приглашение оболочки без окончания \n 1. использовать блокнот 2. окружать каждую строку символом () 3. использовать Ctrl + двойной щелчок . Отлично...

person MPaularBear    schedule 18.12.2016