Pull to refresh

Comments 41

А почему у Вас на левой кнопке логотип Убунту? :)
UFO landed and left these words here
Интеренсно, а реально ли сделать аналог для linux. Или все прочно завязано на WinAPI? Но и в таком случае, вероятно, есть варианты решения… Нужно разобраться.
Думается, что реально. В данном случае всё завязано на WinAPI, собственно как что угодно другое, скрытое фреймворком Qt. Где-то проскакивали предложения воплотить подобную возможность в декораторе окон KDE, но пока лишь предложения.
Поддерживаю, только опять же, в силу несовместимости менеджеров окон решение не будет переносимо, или придется для каждого писать свое…
Если бы для других менеджеров и систем сделать подобные вещи можно было бы хотя бы сравнительно просто с тем, как это делается для Windows, мы бы сделали.
Но что есть, то есть, уж никак не выкрутиться.
Можно сделать как в хромиуме — отказаться от стандартного заголовка окна в пользу своего. Правда у такого решения тоже есть свои минусы — окно будет выглядеть нестандартно и может не вписываться в окружение пользователя.
UFO landed and left these words here
UFO landed and left these words here
Ну сделайте нам бэкенты для других систем и DE, будет более кроссплатформенный класс. =)
UFO landed and left these words here
UFO landed and left these words here
Там за рамку вокруг окна отвечает менеджер окон. Приспособиться ко всем различным менеджерам окон вряд ли возможно, тем более что некоторые эту рамку вообще не рисуют. Остаётся лишь убирать рамку вообще и рисовать её, включая название окна и кнопки, самому, но тогда результат не будет соответствовать стилю других, обычных окон.
Не «стремится», а «стремиться». Не «недописан», а «не дописан».
UFO landed and left these words here
Увы, как надо работает только в Windows Vista и Windows 7, да и то со включённой «Aero». В ХP все контроллы из заголовка сместятся вниз, заголовок окна будет совершенно обычным. Чтобы добиться такого эффекта в XP, надо вручную рисовать заголовок, границы окна, кнопки… Это хлопотно.
UFO landed and left these words here
На скрине gui-версия программы, выводящей собственный код?
Я бы сильно улыбнулся, если бы там был текст Qt-скрипта, который реализует добавление плюшек в title и запускаемый по любому изменению своего текста (игнорируя неработоспособность). Ну так удобно дебажить :)
по правде говоря я не совсем понимаю для чего делать такое, ведь Qt был разработан для того чтобы программы на нем везде работали одинаково, а тут придется для каждой ОС рисовать свое оформление.
UFO landed and left these words here
Зашел прочитать кроссплатформенную реализацию, разочаровался
UFO landed and left these words here
Не представляю, поэтому зашел почитать.
Браво! Полезная штука! Действительно жаль, что такое под Линукс не увижу, хотя есть вариант скрыть стандартное оформление, тогда придется перемещение окна, писать самому и вообще оформление системное для приложения потеряется:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);
// ...
}

А если над рамкой окна вывесить свой тулбар и таскать его, отслеживая перемещения окна?
Нет, идея рисовать что-то в заголовке для Linux вообще малоподходящая. Во-первых, может быть включён композитный режим и, к примеру, желейные окна — такой метод будет выглядеть жутко. Во-вторых, абсолютное положение окна — это всего лишь рекомендация серверу, которую он может игнорировать. Есть тайловые менеджеры, которые не делают одно окно поверх другого. В-третьих, заголовка может вообще не быть — как в тайловых менеджерах, так и в обычных (floating).
В тяжёлых случаях тулбар можно переносить или отключать в опциях. Всё же большинство* менеджеров заголовок окна используют.
* По количеству пользователей
UFO landed and left these words here
Ну, про большинство — да, соглашусь, но встаёт вопрос декораций: kwin3, kwin4, metacity, mutter, compiz-fusion, icewm, etc. В общем, нет единого протокола. Да и нарушение идеологии, в общем-то. К тому же надо динамически реагировать (у меня, к примеру в KDE4 на Win+Del висит убрать/показать декорации).
UFO landed and left these words here
А он этого и не делает. Заголовок отдельно, содержимое отдельно. И Chrome этого не делает, есть режим «без заголовка» и «с заголовком».
UFO landed and left these words here
Мы про Linux говорим? Какая оранжевая кнопка? Вот картинка с сайта, как оно в GNOME выглядит, у меня KDE, просто заголовок окна другой.
Чую меня сейчас прирежут, но никто не подкинет примера реализации на Delphi?
Если вас не страшит использование чистого WinAPI из дельфей, то спокойно смотрите исходный код, там всё предельно ясно.
Главная болезнь всех манипуляций с заголовком решена или не подвержен, он продолжает слушаться оконного менеджера? Например горячие зоны при разворачивания на весь экран, привязке к стороне и так далее. А то как посмотришь на некоторые реализации, которые в наглую игнорируют стандартное поведение.
Окошко можно растягивать за границы, таскать за заголовок, разворачивать и восстанавливать двойным тыком по заголовку, работает Aero Snap (или как там называется разворот окна при подведении к границе экрана), — всё работает как и прежде.
UFO landed and left these words here
Кстати, а почему отказались от своего заголовка окна, как в старой версии?
Меня это интересует с сугубо практической точки зрения — я по воле судьбы пишу такой вот свой кроссплатформенный «Window Decorator», хочу узнать немного про подводные камни.
Sign up to leave a comment.

Articles