Как стать автором
Обновить

Комментарии 95

Данную «проблему» в любом случае не решить. Всегда можно сделать окно без всякого оформления и рамок, и нарисовать свои кнопки со своим функционалом. Многие так и делают.
Зачем тогда эти три?
Давайте уберём их совсем, пусть каждый делает любое количество, со своими функциями и своим дизайном этих самых кнопок.
Чтобы в основной массе приложения пользовались системными кнопками.
Вот для этого и нужна кнопка сворачивания в трей.
Если эта функция стала настолько популярной у разработчиков, что они используют для этого кнопку предназначенную совсем для другого, значит пришло время задуматься о создании кнопки именно для этого действия.
Как вариант, её можно показывать в окне приложения только если разработчик её явно активировал и использует эту функцию.
Я десктопные приложения под винду не писал, поэтому не знаю — окно же в трей сворачивается потому что так разработчик программы обрабатывает нажатие кнопки закрытия? Если так, то что мешает ему оставить это же поведение при наличии хоть десяти дополнительных кнопок?
То же самое, что сейчас мешает ему сделать закрытие окна по нажатию кнопки сворачивания окна.
Да ничего не мешает сделать свой собственный способ обработки, кроме здравого смысла)
Просто некоторые приложения разумно не закрывать, а сворачивать в трей. Я, например, не ожидаю, что при нажатии на крестик мессенджер, торрент или почтовый клиент закроется.
Разумно не закрывать, согласен. Скинуть в трей и пусть висит. Но если я нажимаю на кнопку закрытия окна, то ожидаю, что оно закроется, а не свернётся в трей. Да это ещё пол беды. Если бы все приложения реагировали одинаково, ещё ничего было бы. А когда пользователь не может предсказать поведение приложения после нажатия на стандартную кнопку, это уже совсем плохо. Это и есть не интуитивный интерфейс.
Обычному пользователю и не нужно ничего предсказывать — ему просто не важно, закроется программа или свернётся, он не понимает разницы между этими состояниями. И от введения дополнительной кнопки, которая делает непонятно что, он пострадает больше всего. Кому станет лучше, если он насовсем закроет нажатием привычной кнопки клиент облачного диска, например?
А продвинутый пользователь легко может предугадать поведение и, подумав, сочтёт, что в большинстве случаев удобно именно оно.
1. Апеллируя к сферическому «обычному пользователю» всё-таки не стоит считать его идиотом.
2. Думаю, что многие из тех, что не понимают разницу, не понимают её именно из-за того, что это поведение не стандартизировано.
Я и не говорю, что он идиот, просто эти технические детали, они интересны только нам, потому что это наша сфера. Вот я, например, не умею водить — вождение и вообще автомобили мне просто не интересны. И когда меня таксист куда-то везёт, мне совершенно не интересно, какая кнопка на панели у него за что отвечает. Но я нисколько не удивлюсь, если окажется, что где-то на форуме автомобилистов кто-то создал точно такой же опрос на тему «доколе кнопка переключения радио будет рядом с кнопкой включения обогрева сидений — у меня от этого подгорает!». Каждому — своё, короче говоря.
Я вот не думаю, что многие не понимают разницу из-за неодинакового поведения. Некоторые — вполне возможно, а подавляющему большинству просто не интересно и не важно.
Но я нисколько не удивлюсь, если окажется, что где-то на форуме автомобилистов кто-то создал точно такой же опрос на тему «доколе кнопка переключения радио будет рядом с кнопкой включения обогрева сидений — у меня от этого подгорает!».
«Нужно сделать четвертую педаль. Я хочу иметь выбор: тормозить всеми колесами или только задними.»
Да эта песня давно устарела. Очень часто вижу эти обращения к «обычному пользователю» — и всегда неявно подразумевается очень недалекий, на грани тупости, пользователь.
Это было актуально 15-20 лет назад, когда компьютеры только входили в жизнь обычного человека и многим приходилось открывать совершенно новую для себя область. Сейчас, по прошествии указанного количества лет, уже выросло целое поколение, которое живет с компьютером с младенчества.
А нынешние люди среднего возраста знакомилось с компьютером, будучи старшеклассниками, студентами, молодыми специалистами — то есть они прекрасно обучились.
Да, они не знают, как компилировать ядро Линукса или настраивать DNS, но уж отличить кнопочки в окне, извините, могут прекрасно.

P.S. 15-20 лет указаны для стран бывшего СССР. Для Запада можно смело накинуть еще лет 10.

Как я уже сказал, речь не о тупости. И не о том, что кто-то не может различить кнопки. Для обычного пользователя нет разницы между закрытием окна и закрытием программы. Они даже слово «окно» не используют никогда. (На всякий случай уточню ещё раз — это не потому, что они тупые и не способны понять разницу.)

Если вы нажимаете на кнопку закрытия окна, оно закрывается. То есть, исчезает с экрана и из панели задач. Кнопка делает то, что и должна. Приложения, которые предназначены для взаимодействия с пользователем, при закрытии главного окна завершаются сами, приложения с фоновыми задачами работают дальше. У многих приложений значок висит в трее независимо от открытых окон. И кстати в трее висит именно приложение, а не окно. Окно != программа, вы преувеличиваете проблему.

Хорошо.
Забыли про кнопку.

Есть пункты меню «Закрыть» и «Выйти».
«Закрыть» — это закрытие только активного окна или всего приложения?
А «Выйти» — это из программы или из учетной записи?
Это, увы, проблемы русского языка. В английском это логичные Close/Exit и Sign out. И для Sign out обычно используют фразу «Выход из учётной записи».

Просто некоторые приложения должны работать всегда, ибо ты регулярно открываешь их и потом "закрываешь" (на самом деле сворачиваешь в трей), чтобы снова развернуть через какое-то время. Как-то: всякие мессенджеры и утилиты. А остальные приложения открываются раз в день и не нуждаются быть постоянно запущенными. Всё вполне логично, меня лично устраивает.

Выше уже ответил.
Разумно не закрывать, согласен. Скинуть в трей и пусть висит. Но если я нажимаю на кнопку закрытия окна, то ожидаю, что оно закроется, а не свернётся в трей. Да это ещё пол беды. Если бы все приложения реагировали одинаково, ещё ничего было бы. А когда пользователь не может предсказать поведение приложения после нажатия на стандартную кнопку, это уже совсем плохо. Это и есть не интуитивный интерфейс.

А чем закрытие и потом открытие с восстановлением состояния отличается от сворачивание в трей?


Мне кажется, окна-то как раз закрываются. Просто приложение продолжает работать

Мне кажется, окна-то как раз закрываются. Просто приложение продолжает работать

Всё верно. В этом-то и проблема.

А чем закрытие и потом открытие с восстановлением состояния отличается от сворачивание в трей?
Наверное тем, что закрытое приложение не потребляет ресурсы и не проявляет сетевой активности.

Именно для таких приложений и есть трей. В принципе, для какого-нибудь мессенджера достаточно двуз кнопок — свернуть и закрыть. Только вот основная проблема была в том, что если кнопка прям здесь на виду, то закрыть очень легко и надо вставлять предупредлеждение.


А еще у приложени может быть UI отдельным процессом, а то, что жрет сеть и процессор — отдельным процессом. То есть все равно в логике приложени надо делать какую-то специальную вещь для управления бекграундом.


Мне кажется, для массового пользователя управлять беграундом не надо, а для нас с вами вполне достаточно того, что есть

Если бы мне было достаточно того что есть, я бы не стал это всё писать. Я постоянно мучаюсь с тем, что приложение не закрывается когда я его пытаюсь закрыть, а сворачивается в трей. И каждое приложение ведёт себя по разному. В результате надо самому помнить какие приложения по нажатию на кнопку закрытия закрываются, а какие сворачиваются в трей. И постоянно возникают ситуации когда: «О блин! Я же тебя закрывал, а ты в трее» или «Блин! Нажал закрыть, а оно в трей ушло и теперь лезть надо разобраться в какие меню и пункты меню залезть (и как до них добраться) чтобы закрыть приложение). Может кому-то такое положение вещей и нравится, но не мне.

Да вы посмотрите сами на опрос. ~50% ответивших в опросе тоже устали от этих постоянных скидываний в трей вместо закрытия.

Да ладно. Вы по тысяче новых приложений в день открываете и закрываете? Чем вы там занимаетесь?

ну как вариант торренты на слабом железе качает.
Не знаю как вы, а я не хочу своей тёще объяснять, чем отличается «закрыть» от «свернуть в трей» и что вообще за «трей» и почему всё так сложно. С тем же успехом можно добавить туда кнопку, которая будет делать условный «kill -9 %PID%». И кнопку, которая добавит программу в автозагрузку. И много чего ещё.

Для тех, кому не нравится, что программа сворачивается в трей при нажатии кнопки «закрыть», в приличных программах есть настройка, которая убирает это поведение. Но как правило, оно сделано разработчиком не потому, что он такой коварный, а потому, что именно такое поведение и ожидается пользователем.
Кажется, что подход не с того конца. В многозадачной системе зыкрытие окна и закрытие программы вполне может выглядеть одинаково. Конечно, конкретно в Windows это не так, но все ли пользователи это знают? А если не знают, значит их вариант _закрытия окна_ устраивает, и делать отдельно закрытие окна и закрытие окна с закрытием прогремы не совсем правильно?

Все-таки здесь не настолько все очевидно, что нужно просто добавить еще одну кнопку. Тут надо еще подумать.
Давайте подумаем. Предложите что-то другое, что решит проблему. Пусть нынешняя кнопка закрытия закрывает окно, а рядом сделаем ещё одну БОЛЬШУЮ, КРАСНУЮ кнопищу, которая закрывает приложение окончательно. Но пусть это будет интерфейс с единым поведением для всех приложений, предсказуемый и интуитивный.
пусть это будет интерфейс с единым поведением для всех приложений, предсказуемый и интуитивный.
Тумблер на севом фильтре не пойдет?- Закрывает сразу все приложения и выключает комп, Куда уж интуитивнее-то?
Ну а если без сарказма- что мешает Вам «смастерить » такую кнопку? Некое приложение с единственной (или наоборот- с отдельной для каждого приложения (боже, я придумал диспетчер задач)) кнопкой?
Я не разработчик. Я пользователь. Но буду рукоплескать подобным приложениям, если мне не придётся лезть в настройки и понимать что и как там в программе делается при нажатии кнопки «закрыть», а сразу будут две кнопки которые будут отвечать каждая за свою функцию.
Я вижу простейшее решение проблемы «закрывает ли эта кнопка программу или сворачивает в трей?».
Если закрывает — рисуем на крайней красной (в винде) кнопке крестик [ х ].
Если сворачивает в трей — вместо крестика на той же кнопке рисуем что-нибудь другое.
Например стрелочку [ v ]
В итоге взаимодействие остаётся привычным, но информативность повышается, так как всегда знаем, чего от этой кнопки ожидать.
Да, это будет уже однозначно лучше чем сейчас. Но иногда нужно закрыть приложение и хочется сделать это быстро. Желательно нажатием одной кнопки. А если разработчик эту кнопку занял функцией сворачивания в трей, то возникает проблема.
Хороший интерфейс тот, который самые востребованные функции позволяет выполнять без лишних телодвижений.
А подход «эта кнопка выполняет разные действия» и «непонятно от чего зависит какое действие будет выполнено» — это плохой интерфейс.
Кстати, в Windows кнопку [X] еще можно заменить двойным нажатием на левый угол окна. Очень удобно, когда мышь в той стороне, и ей лень тянуть в другой угол.

По теме — устраивает. Обычно в таких программах есть настройка поведения по нажатию кнопки закрытия.
К слову, в MacOS все приложения не закрываются по этой кнопке, а сворачиваются/остаются на панели подсвеченные.

В macOS не все приложения сворачиваются по этой кнопке. Примерно половина приложений выключается, когда закрыты все окна.

Если в приложении всего одно окно главное и программист использовал applicationShouldTerminateAfterLastWindowClosed

QuickTime и Просмотр, например, завершают работу, когда все окна закрыты, хотя у них нет главного окна и можно сделать несколько равноправных окон, а Терминал и браузеры так не делают.

Нет, не завершаю, остаются висеть в доке, как и терминал без настройки на обратное, а вот калькулятор например/дисковая утилита закрываются полностью.

У меня QuickTime и Просмотр исчезают из Dock, но соответствующие процессы остаются в Мониторинге системы. Я слышал, что macOS закрывает эти приложения (когда закрыты все их окна), если в системе мало ОЗУ.

В MacOS некоторые приложения закрываются, а некоторые просто закрывают окна по красной кнопке. В основном закрытие именно окна. В последнее время количество приложений, которые перестали использовать красную кнопку, как закрытие программы уменьшилось, и это очень логично и правильно.
При переезде с Windows на MacOS (не дай докинз переезжать обратно), был очень приятно удивлён этой логикой, потому что в подавляющем числе случаев мне надо закрыть окно, а не приложение, которое ещё может долго запускаться, а мисклик будет каждый раз бомбить.

На практике, алгоритм действия этой кнопки можно и нужно программировать, но в зависимости от логики работы самого приложения, а не виртуальной необходимости иметь возможность нажать на все кнопки. Иметь две кнопки нет никакой необходимости.
Не против того, чтобы приложения, которые редко закрываются посреди рабочего процесса прятались по крестику в трей. Но РЕЗКО ПРОТИВ того, чтобы они так же поступали по Alt+F4. С нажатием кнопки в углу экрана так никто на 100 %, что должно случиться с приложением, но предельно ясно, что оно должно убраться с рабочего стола и из панели задач, закрытия приложения (или Dispose() конкретного окна) не гарантировали. А вот по шорткату, который еще и подписан как «Закрыть приложение» хочется, чтобы приложение убивалось.
Не знаю как в более старых и более новых виндах и других операционках, но у меня на Windows 7 и на Windows 8.1 шорткат «Alt+F4» отображается напротив пункта «Закрыть»(контекстное меню на заголовке окна), а кнопки «Закрыть приложение» нет вообще.
Даже через панель задач, через правую кнопку мышки находится пункт «Закрыть окно», а не «Закрыть приложение»

Вообще могу предположить, что механизм работы крайне простой:
если обработки события onClosing не осуществляется — окно смело закрывается, если идет перехват этого события, то дальше уже все зависит от автора программы. То есть по умолчанию в WinForms при нажатии крестика для конкретного окна будет вызвано Dispose(), ну а дальше уже зависит от того, главное это окно или нет.
Так что вопросы к UI-дизайну Windows отпадают, но появляются к наличию гайдов по дизайну приложений

Механизм действительно работает так, если не переопределить действие при закрытии — форма закроется, а с ней и приложение, если это основная форма.

С гайдами всё сложнее — они есть(Windows User Experience Interaction Guidelines), но вот найти хоть какое-то упоминание о логике работы кнопки «Закрыть» и сворачивании в трей мне не удалось. Сам Microsoft(пример — Outlook) всегда закрывает открытое приложение по «крестику», при этом для сворачивания можно установить вариант «свернуть в трей». К сожалению, это против привычек пользователей — я неоднократно случайно закрывал Outlook и переставал получать почту, в то время по-привычке ожидая стандартного поведения IM-программ — работы в трее.

В ходе последнего года работы вообще отказался от сворачивания приложений в трей — виной тому клиент Hyper-v — при попадании в фокус он убирает из трея значок раскладки клавиатуры и переключение из виртуалки в мигающее в трее приложение вызывает боль — все время промахиваешься из за сдвига значков по возвращении значка раскладки. Так что трею осталась только информирующая функция, но и та постепенно отмирает благодаря новому механизму уведомлений в Win10

если я нажимаю на кнопку закрытия окна, то ожидаю, что оно закроется, а не свернётся в трей
Поведение абсолютно логичное. Окно программы закрылось, а сама программа продолжила работу, о чём свидетельствует иконка в трее.
Окно != программа.
Почему сделано изначальное допущение что приложение однооконное?
Значит нужно сделать кнопку закрытия приложения в дополнение к имеющимся трём. Тоже решение. Однако мне кажется оно хуже того, которое я озвучил изначально.
То есть нужен, как минимум, следующий набор кнопок:
* свернуть окно
* свернуть все окна программы
* развернуть окно
* закрыть окно
* закрыть все окна программы
* закрыть программу

уже только тут минимум шесть кнопок, а если подумать — до десятка набежит легко… вы всё ещё уверены в том, что предложили хорошую идею?
Насколько я знаю, люди в основном мучаются именно с этой проблемой.
О проблемах:
* свернуть все окна программы
* закрыть все окна программы
я не слышал.

Я всё ещё уверен, что предложил хорошую идею и что нужна всего лишь дополнительная четвёртая кнопка и то, вероятно, опционально, если разработчик использует функцию сворачивания в трей для своего приложения.

Более того, не только я думаю что эта проблема существенна, требует решения и я предложил хорошее решение, но ещё примерно 50% людей поучаствовавших в опросе.
Не нужно загромождать интерфейс лишними бесполезными кнопками. Специально для таких людей, которые забывают в какой программе какая кнопка сворачивает в трей — нужно сделать кнопку свернуть/закрыть с иконкой в виде точки справа-внизу с соответствующим тултипом, и тогда будет понятно какая кнопка сворачивает окно в трей.

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

Если одна и та же кнопка используется для выполнения разных действий (в одном случае программа не закрывается, в другом программа закрывается), то с точки зрения интерфейса пользователя это не просто плохо. Это катастрофа.
Кнопка закрытия окна и Кнопка закрытия программы — это разные вещи и не нужно их смешивать. Абсолютно нормально, что можно закрыть все окна программы, например — любой мессенджер, но оставить саму программу работать (иконка в трее). Все окна действительно закрыты, их ресурсы освобождены, но программа продолжает работу и имеет ту самую «кнопку» — «закрыть программу», вызывается из меню и называется «выход из программы».
И отдельно отвечу на:
оно хуже того, которое я озвучил изначально

Изначально предложено, что кнопка закрыть — закрывает программу, а не сворачивает в трей, так? Я уже задал вопрос, почему сделано предположение, что приложение однооконное?
Простой пример. Окно программы и окно настроек программы, не модальное. Я хочу закрыть основное окно и продолжить настройку. Как поступить? Какая именно кнопка закрытия какого именно окна должна закрывать приложение? К примеру, последнего активного? А если это мессенджер, я открыл окно настроек, но закрыл окно чата, что делать? Нужно ли открывать окно для отображения нового сообщения? Или закрытие окна чата означает, что следует отключиться от сети передачи сообщений?
Огромное количество нюансов и вопросов без ответа. На каждое действие по своей кнопке?

А зачем пользователю вообще в его системе понятий приложение как таковое? Ему надо какие-то сущности предметной области — документ, процесс приема и передачи сообщений

А решение элементарное. Есть такая программка rbtray для окошек. Как можно уже догадаться по названию — сворачивает окно в трей по нажатию ПРАВОЙ кнопки мыши на кнопке сворачивания. Если забыть про мак — у всех остальных на мышке больше одной кнопки. А ещё есть клавиатурный модификаторы типа alt, shift и пр. Что в сумме может изрядно разнообразить варианты без роста количества кнопок на окне.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Отсутствие заголовка не слишком удобно, если нужно менять расположение окон. Сам обычно работаю в полноэкранном режиме, однако изредка требуется видеть пару окон одновременно. Особенно если точно позиционированных. И вот тут начинаются проблемы. И с клавой ещё та проблема, что сложно предсказать, как с этими кнопками будет работать конкретная программа. С мышкой же точно указываем, с чем взаимодействуем.
НЛО прилетело и опубликовало эту надпись здесь
Если бы вы пользовались Мак, то было бы очевидно, что это всё кнопки закрытия окон, а не программ, и по какой причине закрывается программа вообще не понятно, на Маке для этого вообще кнопок не надо command+Q и программа завершилась, только вот там можно определить без всяких окон, какая программа активна, а в Виндовс — нет. По вашему же вопросу, меня со времён Виндовс 95 всегда ставило в ступор, что программы светящиеся в трее, при сворачивании сворачиваются не в трей, а для этого их надо закрыть… вот это вот шок. почему сворачивание-то не для трея?
Иногда бывает ситуация, когда окно это не вся программа, а только вспомогательная её часть. Например вся программа сидит в трее, и что-то там делает (например, ожидает хоткеев для каких-то действий). Дваждый щелкнув по иконке в трее, я открываю окно настроек. Это единственное окно этой программы. Выставив настройки как мне надо, я нажимаю «применить», а затем закрываю окно настроек. И вот меньше всего я ожидаю, что при этом вся программа прекратит свою работу :) Да и вообще, крестик значит — закрыть окно. Вы его нажимаете, окно закрывается? Закрывается! Какое отношение закрытие окна имеет к прекращению работы программы? Тогда уже надо делать не кнопку «свернуть в трей», а кнопку «завершить программу»
Всё зависит от того, с какой стороны посмотреть. Для кого-то этот крестик — закрытие окна. Для кого-то — закрытие приложения. И не понятно кого больше. Тех кто считает что крестик закрывает окно или тех, кто считает, что крестик закрывает приложение. Потому что на практике встречается и то и другое. А с точки зрения построения хорошего пользовательского интерфейса, кнопка не должна выполнять разные действия (то есть закрытие приложения, то нет).
Если окон несколько, никто ведь не ждет, что закрывая одно из окон, закроется вообще все приложение. Закрывается конкретно то окно, у которого была нажата кнопка. Вопрос возникает, когда «главное» окно было закрыто. Но во первых, не все приложения имеют «главные» окна, во вторых, если основная задача приложения работать в фоне, то закрытие главного окна не должно быть причиной для прекращения работы всего приложения. Если я закрыл окно торрента, это не значит, что не хочу чтобы они качались. Это значит, что я не хочу больше видеть его окно и я нажимаю его закрыть. Именно закрыть, не свернуть потому, что при сворачивании я ожидаю, что оно должно остаться на панели задач вместе с другими свернутыми окнами, а оно мне там не нужно. Я хочу его закрыть, полностью. Но чтобы торренты при этом продолжали качаться.
Я про это и говорил. Некоторые люди (и их довольно много) нажимая кнопку закрытия окна ожидают, что приложение закроется полностью, а не только окно.
Если у нас есть две функции на одну кнопку, логично эту кнопку разделить на две. Чтобы каждая отвечала за свою функцию.
Тогда надо делать две кнопки «закрыть окно» и «закрыть приложение», но что делать если было закрыто последнее окно приложения и у него нет иконок в трее? Все равно ведь придется закрывать приложение :) Если только у последнего окна приложения, которое завершится после его закрытия, оставлять только кнопку «закрыть приложение» и не делать кнопку «закрыть окно».
Вот поэтому мне и кажется, что решение с кнопкой «свернуть в трей» лучше. А по нажатии кнопки «закрыть» — закрывать приложение, а не окно.
А если приложение не должно сворачиваться в трей нужна ещё одна кнопка «свернуть но не в трей»?
Но это же все равно не решает проблемы разного поведения кнопки закрыть. Например для дополнительных окон, кнопка закрыть будет закрывать только окна, для основного окна кнопка закрыть будет завершать приложение. Причем зачастую при закрытии главного окна работа приложения завершается, несмотря на то, что у приложения были открыты и другие окна. Мне кажется так, как сейчас уже сделано оптимально. Нужно понимать что окно — это не приложение, а всего лишь его часть, не всегда обязательная, т.к. не любое приложение обязано иметь пользовательский интерфейс. Кнопка закрытия всегда закрывает окно и если после этого приложению больше нечего делать — оно закрывается. А если у него осталась другая функциональность — оно продолжит работу. Такое понятие, как «свернуть в трей», придумали зря. Чаще всего, у приложения всегда висит иконка в трее, независимо от открытых окон. Такое приложение есть ничто иное как сервис, который позволяет показать некоторые окна с информацией и после их закрытия также продолжит работу. Почему это должно быть не так? И тогда сразу следующий вопрос: а если приложения из трея, по клику или из меню запустит другой процесс в котором будут окна, должно ли оно будет завершиться когда эти окна будут закрыты? :)
Мой опыт пользователя говорит, что у программы есть главное окно (которое и ассоциируется с приложением) и окна вызываемые из главного окна. Когда я закрываю окна вызванные из главного окна, я ожидаю что закроются именно они. Когда я закрываю главное окно, я ожидаю, что закроется приложение целиком. И обратите внимание на опрос, который говорит, что половина пользователей тоже ожидают такого же поведения от программы.

Если я что-то не так понял, уточните, я попробую объяснять.
Мой опыт пользователя говорит, что у программы есть главное окно
И вам все пытаются доказать, что именно в этом ваша ошибка. Такого понятия как «главное окно» в принципе не существует. Есть некая условность, что какая-то форма более важна чем другие.
Простой пример — приложения на Delphi, казалось бы, вот она — главная форма и дополнительные, но на самом деле, в приложении живёт ещё одно окно, скрытой от пользователя, невидимое, и именно оно обрабатывает все сообщения от системы (очередь событий и всё такое) и именно закрытие этой формы закрывает приложение, но как это сделать если оно невидимо?
Господин, уймитесь уже. Я вам уже давно не отвечаю, но вы ходите по всем веткам и упорно продолжаете оппонировать мне.
Обсудите эту проблему с другими пользователями в этой теме или пообщайтесь в других темах, но не нужно ждать ответа от меня. Моё мнение о вас уже сформировалось и общаться с вами мне не хочется.
Всего доброго.
Фу, как грубо.
Но «господин» — это хорошо, это правильно :)
Давайте разделим приложения на два типа:
1) Приложение которые запускаются пользователем вручную, у которых есть главное окно в котором и работает пользователь, при закрытии которого приложение обычно завершает свою работу.
2) Приложения, которые, как правило, стартуют самостоятельно, показывая лишь иконку в трее. При двойном щелчке по иконке в трее или при щелчке по одному из пунктов трей-меню приложения, оно может показывать какие-то окна. Но при их закрытии приложение не должно никуда деваться из трея.

Т.е. грубо говоря, если при запуске приложения было показано окно, то при его закрытии, приложение в 99% завершает свою работу. Если же при запуске, никаких окон показано не было, и окна появлялись уже после взаймодействия с трей-значком, то при их закрытии приложение завершать свою работу не должно.

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

Во всех случаях при нажатии кнопки закрыть окно — оно закрыватся. Было ли при этом завершено приложение? А должно ли пользователя это вообще волновать? И что значит приложение было завершено? Завершен ли процесс? А что если трей-иконка и окна открытые, при нажатии на нее это разные процессы? Можно ли считать приложение завершенным, если закрывая окно, процесс их породивший завршится, при этом другой процесс того же программного продута останется висеть с иконкой в трее? А если при закрытии главного окна приложения, оно не завершается еще какое-то время, чтобы при последующем запуске не тратить время на загрузку ресурсов? Возвращаемся к изначальному вопросу: должно ли пользователя это волновать, и если у него нет проблем с производительностью ОС? ИМХО — нет.
Ну вот вы считаете что это не должно волновать пользователя, а 50% пользователей почему-то это продолжает волновать.
Это мой компьютер и кого как не меня должно волновать что у меня запущено, что поедает ресурсы системы и что лезет в интернет?

Если я нажимаю закрыть приложение, то я ожидаю от него такого поведения при котором закроется само приложение и все запущенные процессы, которые были запущены при старте этого приложения (с глаз долой из сердца вон).
Среднестатистического пользователя вообще не волнует будет ли закрыт процесс или нет, он даже может не знать, что это такое. Ему важно, чтобы файлы с которыми он работал были сохранены и корректно закрыты. Если процесс повисит в памяти ещё какое-то время (особенно если памяти много) — ничего страшного не будет, даже наоборот, время запуска документов ассоциированное с этим приложением уменьшится и пользователь от этого только выиграет. При этом когда памяти останется мало, приложение может выгрузиться окончательно. Такое умное поведение программы у пользователя вызовет лишь положительные эмоции.
Как скажете.
нажимая кнопку закрытия окна ожидают, что приложение закроется полностью, а не только окно
Приложение и закрывается, если программист написал в программе, что после закрытия окна приложение(процесс) заканчивает свою работу. Но если нужна фоновая работа — процесс продолжает свою работу в фоне, и если программист написал в программе индикацию значка в трее, то программа после закрытия окна «сворачивается в трей».
Alt+F4 и не надо елозить мышкой в поисках крестика.
Ещё можно жесты мышкой использовать для разворачивания/сворачивания/закрытия. Я уже забыл когда в кнопочки эти тыкал последний раз, крайне неудобное решение, они мелкие и ещё расположены рядом.
Честно, начиная с W7 я уже не помню когда пользовался кнопкой «свернуть в окно/развернуть». Гораздо проще мышкой потянуть за заголовок окна.
у меня aquasnap стоит для чуть большего удобства работы с окнами на windows 10. в свободное время я приучиваюсь к i3wm

а, автор, зря развел такую тему. умные люди (разработчики программ) уже придумали в настройках указывать, что делать по нажатию крестика окна программы, к примеру: skype, total commander, keepass, utorrent и это удобно. а по твоему выходит что и у дропбокса, виндовс дефендера, сети, и даже у флешки будет свое окно с кнопками крестика и сворачиванием окна. на кой ляд людям сворачивать браузер, проводник, ворд и прочее в трей? наверно такая кнопка поможет скрывать игрушки и браузеры от взора начальника из-за спины и только (rbtray)

Однако, лично меня бесит хромиум, по закрытию последней вкладки закрывается весь браузер. конечно, костыли уже придумали, но со времен православной оперы, да и большинства программ привычка осталась.
Эту кнопку можно сделать опционально активируемой при разработке, для тех приложений в которых она нужна (так же как можно при разработке отключить кнопку «развернуть на весь экран»).
уже придумали в настройках указывать, что делать по нажатию крестика окна программы, к примеру: skype, total commander, keepass, utorrent и это удобно
Лично я считаю следующее:
Если программе нужно работать в фоне — она должна висеть в трее (пример из списка выше: skype, keepass, utorrent(опционально))
Если программа «обычная», без фоновых процессов — она должна сворачиваться в панель задач, но не в трей (total commander)
Или так.
Всё лучше чем сейчас. Хотя бы будешь точно знать, что нажимаешь «свернуть» и она свернулась. Проблема только в том, что программы будут сворачиваться в разные места, но это однозначно гораздо меньшая проблема, чем сейчас.
В принципе, вышеназванные программы с настройками по умолчанию именно так себя и ведут, как написал выше.
Не знаю как себя ведут вышеперечисленные приложения по умолчанию, но приложения которые сворачиваются в трей не ограничиваются этим списком. И не все себя так ведут по умолчанию.
Мне просто удобно использовать угловую кнопку, т.к. я могу просто «бросить» в угол курсор и кликнуть, не задумываючись о прицеливании. К примеру Utorrent позволяет настраивать поведение угловой кнопки на закрытие или сворачивание.
По этой же причине вкладки в браузере стали располагаться сверху впритык к границе экрана. Таким образом они стали обладать бесконечной высотой. Сколько не веди курсор вверх, всё-равно останешься на той самой вкладке.
Если разделять понятия окна и программ, то все становится логичнее. При нажатии кнопки всегда закрывается окно. Различается поведение программы — она либо завершается либо нет.

Ваше предложение — при закрытии последнего окна всегда должна завершаться программа. В этом случае, например, при закрытии последнего открытого окна проводника должен завершаться процесс explorer, который помимо окошек с папками еще и меню пуск рисует.

Если этот пример исключение, то чем explorer лучше торрента или мессенджера, они тоже хотят продолжать работать при закрытии окна.
Ответил на то же самое выше:
Мой опыт пользователя говорит, что у программы есть главное окно (которое и ассоциируется с приложением) и окна вызываемые из главного окна. Когда я закрываю окна вызванные из главного окна, я ожидаю что закроются именно они. Когда я закрываю главное окно, я ожидаю, что закроется приложение целиком. И обратите внимание на опрос, который говорит, что половина пользователей тоже ожидают такого же поведения от программы.


Про эксплорер. Я этот процесс не запускаю, его запускает система для чего-то, что ей нужно. А окно проводника это окно проводника. Я его закрыл, оно закрылось. Я доволен.
Но это гипотетически. Потому что сейчас не пользуюсь виндовс и не запускаю эксплорер.
Про эксплорер. Я этот процесс не запускаю
Не читал, но обсуждаю?
Тогда возникает вопрос по программам из автозагрузки. Их как, закрывать по «крестику» или сворачивать? Их Вы тоже не запускали, их запустила система.
сейчас не пользуюсь виндовс
Просто из любопытства, а чем пользуетесь?
Но это гипотетически. Потому что сейчас не пользуюсь виндовс и не запускаю эксплорер.
То есть вы гипотетически предлагаете людям, которые сидят на другой системе, работать с тем интерфейсом, который как вам кажется удобней?
Вот есть такие люди, которые ходят и без устали гадят по углам, под коврик, за диван…
Не хочу вас расстраивать, но это вы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации