Комментарии 95
Давайте уберём их совсем, пусть каждый делает любое количество, со своими функциями и своим дизайном этих самых кнопок.
Если эта функция стала настолько популярной у разработчиков, что они используют для этого кнопку предназначенную совсем для другого, значит пришло время задуматься о создании кнопки именно для этого действия.
Как вариант, её можно показывать в окне приложения только если разработчик её явно активировал и использует эту функцию.
А продвинутый пользователь легко может предугадать поведение и, подумав, сочтёт, что в большинстве случаев удобно именно оно.
2. Думаю, что многие из тех, что не понимают разницу, не понимают её именно из-за того, что это поведение не стандартизировано.
Я вот не думаю, что многие не понимают разницу из-за неодинакового поведения. Некоторые — вполне возможно, а подавляющему большинству просто не интересно и не важно.
Но я нисколько не удивлюсь, если окажется, что где-то на форуме автомобилистов кто-то создал точно такой же опрос на тему «доколе кнопка переключения радио будет рядом с кнопкой включения обогрева сидений — у меня от этого подгорает!».«Нужно сделать четвертую педаль. Я хочу иметь выбор: тормозить всеми колесами или только задними.»
Это было актуально 15-20 лет назад, когда компьютеры только входили в жизнь обычного человека и многим приходилось открывать совершенно новую для себя область. Сейчас, по прошествии указанного количества лет, уже выросло целое поколение, которое живет с компьютером с младенчества.
А нынешние люди среднего возраста знакомилось с компьютером, будучи старшеклассниками, студентами, молодыми специалистами — то есть они прекрасно обучились.
Да, они не знают, как компилировать ядро Линукса или настраивать DNS, но уж отличить кнопочки в окне, извините, могут прекрасно.
P.S. 15-20 лет указаны для стран бывшего СССР. Для Запада можно смело накинуть еще лет 10.
Как я уже сказал, речь не о тупости. И не о том, что кто-то не может различить кнопки. Для обычного пользователя нет разницы между закрытием окна и закрытием программы. Они даже слово «окно» не используют никогда. (На всякий случай уточню ещё раз — это не потому, что они тупые и не способны понять разницу.)
Если вы нажимаете на кнопку закрытия окна, оно закрывается. То есть, исчезает с экрана и из панели задач. Кнопка делает то, что и должна. Приложения, которые предназначены для взаимодействия с пользователем, при закрытии главного окна завершаются сами, приложения с фоновыми задачами работают дальше. У многих приложений значок висит в трее независимо от открытых окон. И кстати в трее висит именно приложение, а не окно. Окно != программа, вы преувеличиваете проблему.
Забыли про кнопку.
Есть пункты меню «Закрыть» и «Выйти».
«Закрыть» — это закрытие только активного окна или всего приложения?
А «Выйти» — это из программы или из учетной записи?
Просто некоторые приложения должны работать всегда, ибо ты регулярно открываешь их и потом "закрываешь" (на самом деле сворачиваешь в трей), чтобы снова развернуть через какое-то время. Как-то: всякие мессенджеры и утилиты. А остальные приложения открываются раз в день и не нуждаются быть постоянно запущенными. Всё вполне логично, меня лично устраивает.
Разумно не закрывать, согласен. Скинуть в трей и пусть висит. Но если я нажимаю на кнопку закрытия окна, то ожидаю, что оно закроется, а не свернётся в трей. Да это ещё пол беды. Если бы все приложения реагировали одинаково, ещё ничего было бы. А когда пользователь не может предсказать поведение приложения после нажатия на стандартную кнопку, это уже совсем плохо. Это и есть не интуитивный интерфейс.
А чем закрытие и потом открытие с восстановлением состояния отличается от сворачивание в трей?
Мне кажется, окна-то как раз закрываются. Просто приложение продолжает работать
Мне кажется, окна-то как раз закрываются. Просто приложение продолжает работать
Всё верно. В этом-то и проблема.
А чем закрытие и потом открытие с восстановлением состояния отличается от сворачивание в трей?Наверное тем, что закрытое приложение не потребляет ресурсы и не проявляет сетевой активности.
Именно для таких приложений и есть трей. В принципе, для какого-нибудь мессенджера достаточно двуз кнопок — свернуть и закрыть. Только вот основная проблема была в том, что если кнопка прям здесь на виду, то закрыть очень легко и надо вставлять предупредлеждение.
А еще у приложени может быть UI отдельным процессом, а то, что жрет сеть и процессор — отдельным процессом. То есть все равно в логике приложени надо делать какую-то специальную вещь для управления бекграундом.
Мне кажется, для массового пользователя управлять беграундом не надо, а для нас с вами вполне достаточно того, что есть
Да вы посмотрите сами на опрос. ~50% ответивших в опросе тоже устали от этих постоянных скидываний в трей вместо закрытия.
Для тех, кому не нравится, что программа сворачивается в трей при нажатии кнопки «закрыть», в приличных программах есть настройка, которая убирает это поведение. Но как правило, оно сделано разработчиком не потому, что он такой коварный, а потому, что именно такое поведение и ожидается пользователем.
Все-таки здесь не настолько все очевидно, что нужно просто добавить еще одну кнопку. Тут надо еще подумать.
пусть это будет интерфейс с единым поведением для всех приложений, предсказуемый и интуитивный.Тумблер на севом фильтре не пойдет?- Закрывает сразу все приложения и выключает комп, Куда уж интуитивнее-то?
Ну а если без сарказма- что мешает Вам «смастерить » такую кнопку? Некое приложение с единственной (или наоборот- с отдельной для каждого приложения (боже, я придумал диспетчер задач)) кнопкой?
Если закрывает — рисуем на крайней красной (в винде) кнопке крестик [ х ].
Если сворачивает в трей — вместо крестика на той же кнопке рисуем что-нибудь другое.
Например стрелочку [ v ]
В итоге взаимодействие остаётся привычным, но информативность повышается, так как всегда знаем, чего от этой кнопки ожидать.
Хороший интерфейс тот, который самые востребованные функции позволяет выполнять без лишних телодвижений.
А подход «эта кнопка выполняет разные действия» и «непонятно от чего зависит какое действие будет выполнено» — это плохой интерфейс.
По теме — устраивает. Обычно в таких программах есть настройка поведения по нажатию кнопки закрытия.
К слову, в MacOS все приложения не закрываются по этой кнопке, а сворачиваются/остаются на панели подсвеченные.
В macOS не все приложения сворачиваются по этой кнопке. Примерно половина приложений выключается, когда закрыты все окна.
QuickTime и Просмотр, например, завершают работу, когда все окна закрыты, хотя у них нет главного окна и можно сделать несколько равноправных окон, а Терминал и браузеры так не делают.
При переезде с Windows на MacOS (не дай докинз переезжать обратно), был очень приятно удивлён этой логикой, потому что в подавляющем числе случаев мне надо закрыть окно, а не приложение, которое ещё может долго запускаться, а мисклик будет каждый раз бомбить.
На практике, алгоритм действия этой кнопки можно и нужно программировать, но в зависимости от логики работы самого приложения, а не виртуальной необходимости иметь возможность нажать на все кнопки. Иметь две кнопки нет никакой необходимости.
Вообще могу предположить, что механизм работы крайне простой:
если обработки события onClosing не осуществляется — окно смело закрывается, если идет перехват этого события, то дальше уже все зависит от автора программы. То есть по умолчанию в WinForms при нажатии крестика для конкретного окна будет вызвано Dispose(), ну а дальше уже зависит от того, главное это окно или нет.
Так что вопросы к UI-дизайну Windows отпадают, но появляются к наличию гайдов по дизайну приложений
С гайдами всё сложнее — они есть(Windows User Experience Interaction Guidelines), но вот найти хоть какое-то упоминание о логике работы кнопки «Закрыть» и сворачивании в трей мне не удалось. Сам Microsoft(пример — Outlook) всегда закрывает открытое приложение по «крестику», при этом для сворачивания можно установить вариант «свернуть в трей». К сожалению, это против привычек пользователей — я неоднократно случайно закрывал Outlook и переставал получать почту, в то время по-привычке ожидая стандартного поведения IM-программ — работы в трее.
В ходе последнего года работы вообще отказался от сворачивания приложений в трей — виной тому клиент Hyper-v — при попадании в фокус он убирает из трея значок раскладки клавиатуры и переключение из виртуалки в мигающее в трее приложение вызывает боль — все время промахиваешься из за сдвига значков по возвращении значка раскладки. Так что трею осталась только информирующая функция, но и та постепенно отмирает благодаря новому механизму уведомлений в Win10
если я нажимаю на кнопку закрытия окна, то ожидаю, что оно закроется, а не свернётся в трейПоведение абсолютно логичное. Окно программы закрылось, а сама программа продолжила работу, о чём свидетельствует иконка в трее.
Окно != программа.
Почему сделано изначальное допущение что приложение однооконное?
* свернуть окно
* свернуть все окна программы
* развернуть окно
* закрыть окно
* закрыть все окна программы
* закрыть программу
уже только тут минимум шесть кнопок, а если подумать — до десятка набежит легко… вы всё ещё уверены в том, что предложили хорошую идею?
О проблемах:
* свернуть все окна программы
* закрыть все окна программы
я не слышал.
Я всё ещё уверен, что предложил хорошую идею и что нужна всего лишь дополнительная четвёртая кнопка и то, вероятно, опционально, если разработчик использует функцию сворачивания в трей для своего приложения.
Более того, не только я думаю что эта проблема существенна, требует решения и я предложил хорошее решение, но ещё примерно 50% людей поучаствовавших в опросе.
А вообще, таких программ, которые сворачиваются в трей не так уж и много. Если сделать всем программам возможность сворачивания в трей — он еще больше будет захламляться. Пусть уж лучше висят в панели задач.
Я всё ещё уверен, что предложил хорошую идеюЭта идея основана на предположении, что программа имеет единственное окно и при его закрытии должна закрываться вся программа, что в современном мире не соответствует истине даже для мобильного приложения.
О проблемах я не слышал.О проблеме «четвёртой кнопки» я во т тоже до сегодняшнего дня не слышал, как бы.
Если этой функцией пользуются часто, значит должен быть быстрый доступ к этой функции.
Если одна и та же кнопка используется для выполнения разных действий (в одном случае программа не закрывается, в другом программа закрывается), то с точки зрения интерфейса пользователя это не просто плохо. Это катастрофа.
оно хуже того, которое я озвучил изначально
Изначально предложено, что кнопка закрыть — закрывает программу, а не сворачивает в трей, так? Я уже задал вопрос, почему сделано предположение, что приложение однооконное?
Простой пример. Окно программы и окно настроек программы, не модальное. Я хочу закрыть основное окно и продолжить настройку. Как поступить? Какая именно кнопка закрытия какого именно окна должна закрывать приложение? К примеру, последнего активного? А если это мессенджер, я открыл окно настроек, но закрыл окно чата, что делать? Нужно ли открывать окно для отображения нового сообщения? Или закрытие окна чата означает, что следует отключиться от сети передачи сообщений?
Огромное количество нюансов и вопросов без ответа. На каждое действие по своей кнопке?
А зачем пользователю вообще в его системе понятий приложение как таковое? Ему надо какие-то сущности предметной области — документ, процесс приема и передачи сообщений
Если у нас есть две функции на одну кнопку, логично эту кнопку разделить на две. Чтобы каждая отвечала за свою функцию.
Если я что-то не так понял, уточните, я попробую объяснять.
Мой опыт пользователя говорит, что у программы есть главное окноИ вам все пытаются доказать, что именно в этом ваша ошибка. Такого понятия как «главное окно» в принципе не существует. Есть некая условность, что какая-то форма более важна чем другие.
Простой пример — приложения на Delphi, казалось бы, вот она — главная форма и дополнительные, но на самом деле, в приложении живёт ещё одно окно, скрытой от пользователя, невидимое, и именно оно обрабатывает все сообщения от системы (очередь событий и всё такое) и именно закрытие этой формы закрывает приложение, но как это сделать если оно невидимо?
Обсудите эту проблему с другими пользователями в этой теме или пообщайтесь в других темах, но не нужно ждать ответа от меня. Моё мнение о вас уже сформировалось и общаться с вами мне не хочется.
Всего доброго.
1) Приложение которые запускаются пользователем вручную, у которых есть главное окно в котором и работает пользователь, при закрытии которого приложение обычно завершает свою работу.
2) Приложения, которые, как правило, стартуют самостоятельно, показывая лишь иконку в трее. При двойном щелчке по иконке в трее или при щелчке по одному из пунктов трей-меню приложения, оно может показывать какие-то окна. Но при их закрытии приложение не должно никуда деваться из трея.
Т.е. грубо говоря, если при запуске приложения было показано окно, то при его закрытии, приложение в 99% завершает свою работу. Если же при запуске, никаких окон показано не было, и окна появлялись уже после взаймодействия с трей-значком, то при их закрытии приложение завершать свою работу не должно.
Но бывают и исключения, например, когда пользователю не нужно приложение в автозагрузке, и при запуске оно показывает главное окно, но при его закрытии уходит в трей, т.к. является ещё и фоновым сервисом.
Во всех случаях при нажатии кнопки закрыть окно — оно закрыватся. Было ли при этом завершено приложение? А должно ли пользователя это вообще волновать? И что значит приложение было завершено? Завершен ли процесс? А что если трей-иконка и окна открытые, при нажатии на нее это разные процессы? Можно ли считать приложение завершенным, если закрывая окно, процесс их породивший завршится, при этом другой процесс того же программного продута останется висеть с иконкой в трее? А если при закрытии главного окна приложения, оно не завершается еще какое-то время, чтобы при последующем запуске не тратить время на загрузку ресурсов? Возвращаемся к изначальному вопросу: должно ли пользователя это волновать, и если у него нет проблем с производительностью ОС? ИМХО — нет.
Это мой компьютер и кого как не меня должно волновать что у меня запущено, что поедает ресурсы системы и что лезет в интернет?
Если я нажимаю закрыть приложение, то я ожидаю от него такого поведения при котором закроется само приложение и все запущенные процессы, которые были запущены при старте этого приложения (с глаз долой из сердца вон).
нажимая кнопку закрытия окна ожидают, что приложение закроется полностью, а не только окноПриложение и закрывается, если программист написал в программе, что после закрытия окна приложение(процесс) заканчивает свою работу. Но если нужна фоновая работа — процесс продолжает свою работу в фоне, и если программист написал в программе индикацию значка в трее, то программа после закрытия окна «сворачивается в трей».
а, автор, зря развел такую тему. умные люди (разработчики программ) уже придумали в настройках указывать, что делать по нажатию крестика окна программы, к примеру: skype, total commander, keepass, utorrent и это удобно. а по твоему выходит что и у дропбокса, виндовс дефендера, сети, и даже у флешки будет свое окно с кнопками крестика и сворачиванием окна. на кой ляд людям сворачивать браузер, проводник, ворд и прочее в трей? наверно такая кнопка поможет скрывать игрушки и браузеры от взора начальника из-за спины и только (rbtray)
Однако, лично меня бесит хромиум, по закрытию последней вкладки закрывается весь браузер. конечно, костыли уже придумали, но со времен православной оперы, да и большинства программ привычка осталась.
уже придумали в настройках указывать, что делать по нажатию крестика окна программы, к примеру: skype, total commander, keepass, utorrent и это удобноЛично я считаю следующее:
Если программе нужно работать в фоне — она должна висеть в трее (пример из списка выше: skype, keepass, utorrent(опционально))
Если программа «обычная», без фоновых процессов — она должна сворачиваться в панель задач, но не в трей (total commander)
Всё лучше чем сейчас. Хотя бы будешь точно знать, что нажимаешь «свернуть» и она свернулась. Проблема только в том, что программы будут сворачиваться в разные места, но это однозначно гораздо меньшая проблема, чем сейчас.
По этой же причине вкладки в браузере стали располагаться сверху впритык к границе экрана. Таким образом они стали обладать бесконечной высотой. Сколько не веди курсор вверх, всё-равно останешься на той самой вкладке.
Ваше предложение — при закрытии последнего окна всегда должна завершаться программа. В этом случае, например, при закрытии последнего открытого окна проводника должен завершаться процесс explorer, который помимо окошек с папками еще и меню пуск рисует.
Если этот пример исключение, то чем explorer лучше торрента или мессенджера, они тоже хотят продолжать работать при закрытии окна.
Мой опыт пользователя говорит, что у программы есть главное окно (которое и ассоциируется с приложением) и окна вызываемые из главного окна. Когда я закрываю окна вызванные из главного окна, я ожидаю что закроются именно они. Когда я закрываю главное окно, я ожидаю, что закроется приложение целиком. И обратите внимание на опрос, который говорит, что половина пользователей тоже ожидают такого же поведения от программы.
Про эксплорер. Я этот процесс не запускаю, его запускает система для чего-то, что ей нужно. А окно проводника это окно проводника. Я его закрыл, оно закрылось. Я доволен.
Но это гипотетически. Потому что сейчас не пользуюсь виндовс и не запускаю эксплорер.
Про эксплорер. Я этот процесс не запускаюНе читал, но обсуждаю?
Тогда возникает вопрос по программам из автозагрузки. Их как, закрывать по «крестику» или сворачивать? Их Вы тоже не запускали, их запустила система.
сейчас не пользуюсь виндовсПросто из любопытства, а чем пользуетесь?
Но это гипотетически. Потому что сейчас не пользуюсь виндовс и не запускаю эксплорер.То есть вы гипотетически предлагаете людям, которые сидят на другой системе, работать с тем интерфейсом, который как вам кажется удобней?
Медленная эволюция интерфейсов или сага о четвёртой кнопочке