Соглашения о поведении двойных или тройных функций «клик для выбора текста»? - PullRequest
7 голосов
/ 05 апреля 2010

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

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

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

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

Ответы [ 4 ]

13 голосов
/ 06 апреля 2010

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

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

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

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

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

Руководство по дизайну Java Swing Look & Feel скажем:

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

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

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

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

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

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

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

2 голосов
/ 05 апреля 2010

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

  • Двойной щелчок по слову выбирает только слово (слово в соответствии с правилами грамматики локали), без пробела (это для упрощения копирования между программами, поэтому мне не нужно удалять любые пробелы при вставке)
  • Если я удалю выбранное слово, мой текстовый редактор узнает о моем контенте и удалит все дополнительные пробелы, оставшиеся над
  • Тройной щелчок выбирает строку без завершающих строк новой строки. (Абзац - это длинная строка, которая была завернута)
0 голосов
/ 18 декабря 2016

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

0 голосов
/ 05 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...