LINUX.ORG.RU

gtk2 сам себя не форкнет

 , , ,


8

13

Что ж, этот день настал. Будем делать gtk 2.26.

Минимальный план работ такой:

  • Обеспечить масштабирование заданных в настройках тулкита размеров иконок в соответствии с DPI.
  • Обеспечить масштабирование заданных темой пиксельных размеров в соответствии с DPI.
  • Предоставить для приложения API для масштабирования размеров из условных пикселей (под 96 DPI) в реальные в соответствии с DPI.
  • Исправить мелкие косяки в теме Redmond, которые остались с тех пор, как отрисовка темы была переведена на cairo.
  • Дополнить дефолтный пакет тем стилями для gtk3, максимально приближенно имитирующими классические темы.
  • Бэкпортировать из gtk3 некоторые улучшения в диалогах открытия/сохранения файлов.

Приглашаются все желающие. Пишите ваши соображения.

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

P.S. @hobbit, верни тэг gtk2 в БД сайта!!!

Ответ на: комментарий от wandrien

Пока такой прикладной API вырисовывается:

Так да не так.

GdkScreen не хранит указатель на GtkSettings. Он об этом классе вообще ничего не знает.

GtkSettings назначает себя как внешнее проперти на GdkScreen при помощи g_object_set_data_full().

Пока открытым остаётся вопрос, кто за что должен отвечать.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Имея окно, мы должны знать, как масштабироваться для этого окна.

Таким образом главным стрелочником является GdkWindow. Именно окно платформы должно уметь отвечать на вопрос «как под тебя масштабироваться».

Сама логика масштабирования размазана на платформенно-независимую и платформенно-зависимую части.

Платформенно-независимая часть – это настройки в GtkSettings.

Платформенно-зависимая – это общение GDK с WM/комопзитором.

Вообще не очень понятно, почему GtkSettings находится в платформенно-независимой части, ведь она вроде как зависит от протокола XSETTINGS, который является платформенно-специфичным. Надо еще покопаться в коде.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Обработка XSETTINGS устроена так.

GDK слушает события иксов и формирует Event с типом GDK_SETTING в главном ивент-лупе.

Обработчик событий в gtk_main_do_event() ловит это событие и вызывает _gtk_settings_handle_event() в модуле gtksettings.c.

Таким образом трансляция изменений XSETTINGS, полученных от бэкэнда, в настройки GtkSettings является деталью реализации модуля gtksettings.c.

Ладно, с этим разобрались.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Пока у меня следующая проблема.

Я хочу организовать управление масштабированием с двух сторон:

Как с платформенно-независимой стороны – со стороны настроек тулкита и/или приложения.

Так и с платформенно-зависимой стороны – со стороны композитора.

Из-за этого возникают сложности, как классы раскидать между GDK и GTK, и какой класс за что отвечает.

Если оставить только одну сторону вопроса, то система классов получается очевидной.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Башка капец в тумане сегодня

Так может не надо программирУвать тогда сегодня? Сходи по лесу прогуляйся, возьми термос чая и бустер с колбасой. Пока гуляешь - оно само нарисует я в голове, а нет, так хоть пробздишься, нечего через силу кодить, все равно потом переделывать

pihter ★★★★★
()
Ответ на: комментарий от pihter

Это не претензия, а лулз. ТС известен провозглашением наполеоновских планов о переписывании всего подряд «как надо», но вместо реализации своих планов сидит на форуме и катает кучу яростных постов о том, какие тупые пидарасы те кто делает опенсорс.

Это симптом.

anonymous
()
Ответ на: комментарий от anonymous

Это не претензия, а лулз

А судьи - кто?

ТС известен провозглашением наполеоновских планов о переписывании всего подряд «как надо»,

И я таким был: все лучше, чем шататься по форума и смеяться с тех, кто взялся за общественно-полезное дело и не сделал пока (ведь мы-то с тобой даже не взялись, нам ли осуждать?)

но вместо реализации своих планов сидит на форуме и катает кучу яростных постов о том, какие тупые пидарасы те кто делает опенсорс.

Только что была претензия про то, что 2 недели нет постов, теперь претензия про то, что шатается по форумам, вместо того чтоб реализовывать то, за что взялся - тебе не кажется что это взаимопротиворечивые претензии?

pihter ★★★★★
()

Тут есть одна проблема. Софт уже ушел с gtk2 на gtk3, и не вернется. Тут уже если форкать то форкать gtk3. Хотя тоже не совсем ясно зачем - в принципе есть патчсет gtk-classic вычищающий гномью скверну где можно (хоть и не везде).

Qui-Gon ★★★★★
()
Ответ на: комментарий от pihter

все лучше, чем

Не лучше.

Если ты не понял, почему ТС вызывает ухмылку, поясню снова.

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

И я таким был

Все мы такими были в 15 лет. Но если в зрелом возрасте у тебя не выработалась аллергия на болтунов и горлопанов-обличителей, и ты не начал ставить на первое место дела вместо слов, то это печально.

Замечу ещё, что ТС часто жалуется на плохое самочувствие. А откуда оно будет хорошее, если он регулярно ругается и ноет?

anonymous
()
Ответ на: комментарий от anonymous

Но у ТСа на один коммит приходится десяток постов с руганью и нытьём.

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

anonymous
()
Ответ на: комментарий от anonymous

Если ты считаешь, что существующий софт - дерьмо, и ты можешь сделать лучше - просто бери и делай

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

Но у ТСа на один коммит приходится десяток постов с руганью и нытьём.

Тем не менее, коммит у него есть

если в зрелом возрасте у тебя не выработалась аллергия на болтунов и горлопанов-обличителей, и ты не начал ставить на первое место дела вместо слов, то это печально

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

Замечу ещё, что ТС часто жалуется на плохое самочувствие. А откуда оно будет хорошее, если он регулярно ругается и ноет?

Не знаю, я не так пристально слежу за тс-ом чтоб прям постоянно это слышать: слышал только один раз тут, насколько я помню. А как связано нытье и самочувствие по-твоему?

pihter ★★★★★
()
Ответ на: комментарий от anonymous

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

Весь софт одному человеку переписать не под силу. Но ТС, тем не менее, вносит вклад в опенсорс, у него есть свои проекты. Кроме того, критика существующих проектов (по-твоему, «ругань и нытьё») тоже нужна, без неё никто не пошевелится, а если кто-то пошевелится, то получится, что он сделал фичу только для себя, поскольку те, кому она была нужна, «не ныли», сделает раз, сделает два, а на третий забьёт.

почему ТС вызывает ухмылку

Ухмылку тут вызываешь только ты, наезжающий на тех, кто формулирует проблемы и пытается что-то делать. ТСу же я сочувствую, хоть GTK-проблемы мне и не особо близки.

и ты не начал ставить на первое место дела вместо слов

Начни с себя. Прекрати кидать словесные камни в тех, кто хоть что-то делает.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от hobbit

Прекрати кидать словесные камни в тех, кто хоть что-то делает.

Наоборот. В тех, кто что-то делает, нужно кидать втрое больше камней. Недеяние - благо, вся мировая херня творится именно активными людьми, которые «что-то делают», именно их нужно сдерживать, а не поддерживать. Иначе происходит взрывной рост херни и долгое расхлебывание последствий.

Основа любой сложной, но устойчивой системы - отрицательная обратная связь, ОТРИЦАТЕЛЬНАЯ, вот буквально negative feedback.

Верхнее техническое образование наполучали, а основ не понимаете.

thesis ★★★★★
()
Ответ на: комментарий от hobbit

Критика и ругань с нытьём это разные вещи.

Если тебе нужно это объяснять, то говорить с тобой не о чем.

Прекрати кидать словесные камни в тех, кто хоть что-то делает.

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

anonymous
()
Ответ на: комментарий от Qui-Gon

Тут есть одна проблема. Софт уже ушел с gtk2 на gtk3, и не вернется. Тут уже если форкать то форкать gtk3.

А раньше ты об этом ТСу сказать не мог? Он уже год gtk2 форкает. Какой же ты все таки нехороший человек.

mbivanyuk ★★★★★
()