LINUX.ORG.RU
ФорумTalks

Зачем придумали GTK3?

 ,


2

6

Почему нельзя было развивать GTK2? Какие в нём были проблемы, требующие фундаментальной переработки с потерей совместимости? Выпуск GTK3 привёл к расколу GUI программ. У меня тоже есть программы на GTK2.

В Windows почему-то умеют поддерживать обратную совместимость. Программы для Windows 1.0 до сих пор работают на Windows 10 (на 32 битах нативно, а на 64 битах требуется 16 битный эмулятор winevdm). В WinApi не было фундаментальных изменений с времён Windows 1.0, даже соответствующим образом написанные 16 битные программы можно перекомпилировать под 64 бита. При этом он намного гибче всех Линуксовских тулкитов, можно обрабатывать окна в разных потоках, вставлять дочерние окна из другого процесса, рекурсивно вызывать цикл обработки сообщений.

Qt в целом выглядит стабильнее GTK. Большинство программ с минимальными изменениями можно перенести на новую версию.

Перемещено leave из desktop

★★★★★

Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от wandrien

Список настоящих мужиков продолжишь или может что должен уметь настоящий мужик. Должно же в этой теме хоть что-то полезное появиться.

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

Должно же в этой теме хоть что-то полезное появиться.

Разве может быть что-то полезнее тебя?

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

Я вот не пойму, так неистово восхищаться вендой на линукс форуме это тоже вариант «самоудовлетворения»?

брызжешь слюной.

lol bro okay

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

При желании можно портировать тулкит (libbe.so) и GUI сервер (app_server) Haiku на Линукс.

Ох, при желании я бы столько всего сделал, вот только где взять еще +24 часа в каждых сутках))

Тем временем, убил половину ночи на obconf.

Всё началось с того, что увидел, что в арче obconf зависит от gtk3. Что странно, т.к. последний релиз был 5 лет назад, и он был на gtk2.

Оказалось, кто-то запилил порт на gtk3. И оно так с патчем поверх релизного тарбола в арче и собирается. Что тоже странно, т.к. в арче обычно накладывают только багфиксы.

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

Пришел в ужас от русской локализации с такими словами как «маниторы», «рабочии столы» и «калаоги». Сижу правлю локализацию.

Очередная программа в Software Revive.

Вроде ничего особенного, а уже 4 утра.

А я вообще должен был документацию по работе готовить. Ну да ладно… %)

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

а)что безрукие

Давай показывай чего на GTK2/3 написал. Да и вообще что под Линукс или другие открытые UNIX-подобные ОС написал.

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

Ну а что поделать, в том сообщении на которое я отвечал переплелись «самоудовлетворение» и венда. Не мог не поинтересоваться. При этом я не указывал кому чем пользоваться или что обсуждать. Мне, просто, правда интересно.

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

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

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

В Гайке есть нормальный стек UI

Что есть нормальный стек UI? Запускал как-то гайку, выглядит как какой-нить заброшенный WM из линукс тусовки. Куда там надо смотреть чтобы восхититься?

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

Один раз не.. вендузятник. Триггером стало не упоминание, конечно, я бы устал по этому форуму бегать за этим словом. Триггером стало неоднократное упоминание. Вот и поинтересовался. А до написания и вовсе дела нет, даже не задумывался через е или и, всё равно ж неправильно :)

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

Что есть нормальный стек UI?

Начнём с того, что в нормальном стеке UI сохраняется обратная совместимость, новые фичи не ломают старые интерфейсы.

Куда там надо смотреть чтобы восхититься?

Один системный тулкит, а не over 9000 как в Линуксе. Всякие Qt, GTK, X11 работают поверх системного тулкита. Есть очень хорошая документация: BeBook, HaikuBook. Интерфейсы на C++ что упрощает написание и нет всяких костылей вроде MOC в Qt. Нет большинства проблем перечисленных в этом сообщении. Нет всяких тупых проблем вроде управления фокусом окон. Тулкит умеет работать со множеством GUI потоков и предоставляет абстракции для работы с потоками. GUI процессы могут легко обмениваться сообщениями друг с другом JSON-подобными сообщениями, например можно нажать на путь до исходного файла в сообщениях об ошибках компиляции в терминале и откроется текстовый редактор по умолчанию с выделенной ошибкой. Нормально сделан drag&drop. Есть нормальная поддержка файловых ассоциаций. Безкостыльная поддержка из коробки single application instance. Есть поддержка окон с вкладками.

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

В винде хорошо спроектирована оболочка рабочего стола. Всё просто. Если код 20+ лет работает без существенных переделок и не теряет актуальность, это хороший код.

А ваше появление в этой теме под звуки фанфар очень уж напоминает этих, которые «Не нравится в России? Вали за границу!»

Да с чего бы.

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

Винда как слово вполне в духе адаптации иностранной фонетики под русское произношение и окончания слов.

А венда чисто прикол типа «олбанской» речи.

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

Один системный тулкит, а не over 9000 как в Линуксе.

Пока нет примеров, когда сообщество смогло родить нечто в таком роде. Следим за гайкой.

Есть очень хорошая документация: BeBook, HaikuBook.

Документация есть и для GTK, и для Qt. Ни там, ни там не сталкивался с проблемами документации при создании своих поделий.

Нет большинства проблем перечисленных в этом сообщении.

Так там пишут как раз про проблемы, которые решают в семействе линуксов с помощью wayland.

Нормально сделано то или другое. А в Qt/GTK не нормально? Некоторые возможности о которых вы пишете я встречал в программах из набора KDE, например.

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

Документация есть и для GTK, и для Qt. Ни там, ни там не сталкивался с проблемами документации при создании своих поделий.

https://developer.gnome.org/gtk2/2.24/GtkMenuShell.html

The letter H in «documentation» means helpful.

Хорошо, что хоть в сорцах есть комменты:

/* Terminology:
 * 
 * A menu item can be "selected", this means that it is displayed
 * in the prelight state, and if it has a submenu, that submenu
 * will be popped up. 
 * 
 * A menu is "active" when it is visible onscreen and the user
 * is selecting from it. A menubar is not active until the user
 * clicks on one of its menuitems. When a menu is active,
 * passing the mouse over a submenu will pop it up.
 *
 * menu_shell->active_menu_item, is however, not an "active"
 * menu item (there is no such thing) but rather, the selected
 * menu item in that MenuShell, if there is one.
 *
 * There is also is a concept of the current menu and a current
 * menu item. The current menu item is the selected menu item
 * that is furthest down in the hierarchy. (Every active menu_shell
 * does not necessarily contain a selected menu item, but if
 * it does, then menu_shell->parent_menu_shell must also contain
 * a selected menu item. The current menu is the menu that 
 * contains the current menu_item. It will always have a GTK
 * grab and receive all key presses.
 *
 *
 * Action signals:
 *
 *  ::move_current (GtkMenuDirection *dir)
 *     Moves the current menu item in direction 'dir':
 *
 *       GTK_MENU_DIR_PARENT: To the parent menu shell
 *       GTK_MENU_DIR_CHILD: To the child menu shell (if this item has
 *          a submenu.
 *       GTK_MENU_DIR_NEXT/PREV: To the next or previous item
 *          in this menu.
 * 
 *     As a a bit of a hack to get movement between menus and
 *     menubars working, if submenu_placement is different for
 *     the menu and its MenuShell then the following apply:
 * 
 *       - For 'parent' the current menu is not just moved to
 *         the parent, but moved to the previous entry in the parent
 *       - For 'child', if there is no child, then current is
 *         moved to the next item in the parent.
 *
 *    Note that the above explanation of ::move_current was written
 *    before menus and menubars had support for RTL flipping and
 *    different packing directions, and therefore only applies for
 *    when text direction and packing direction are both left-to-right.
 * 
 *  ::activate_current (GBoolean *force_hide)
 *     Activate the current item. If 'force_hide' is true, hide
 *     the current menu item always. Otherwise, only hide
 *     it if menu_item->klass->hide_on_activate is true.
 *
 *  ::cancel ()
 *     Cancels the current selection
 */
wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от andalevor

У подоконников память короткая. Когда сидел на винде (3.11 - winxp) всегда была актуальна проблема совместимости. И сейчас форумы пестрят. С железной совместимостью все еще печальней.

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

Когда сидел на винде (3.11 - winxp) всегда была актуальна проблема совместимости. И сейчас форумы пестрят.

Зачем придумали GTK3? (комментарий)

Microsoft старались поддерживать совместимость насколько это вообще возможно. Они даже придумали систему патчинга говнокода, чтобы заставить его работать.

X512 ★★★★★
() автор топика

С целью обидного смеха, конечно. Чтобы кто-то страдал, кто «должны страдать». Для чего же еще?

slackwarrior ★★★★★
()

Что-бы убить работающее. Это было и с Qt/KDE. Есть такой сорт людей - вредители. В опенсоурс почти нет людей способных «надавать по голове» представителям этой социальной группы. Такое может только бизнес.

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

The GDK_SURFACE_STATE_ICONIFIED value of the GdkSurfaceState enumeration is now GDK_SURFACE_STATE_MINIMIZED.

И самое главное, ну захотел сопливый смузихлёб новое название, так сделай рядом вторую константу - зачем заменять старую константу в общеупотребительных библиотеках! В сети лежат исходники тысяч проектов, которые уже никто не будет переписывать! Это же разрушение всей экосистемы!

Я уверен, что такие вещи совершаются умышленно и планомерно.

Скорей всего, смузихлёбов используют втёмную, просто садят их на зарплату, и говорят: «Вася, сделай модно молодёжно! Выкидывай устарелое г-но!», и Вася гадит, сам того не осознавая.

А Карабас-Барабас мохнатые ручки потирает и в Центр отчитывается, мол: «Бюджет отработал, макаки внедрены, экосистема СПО разрушается, шэф!»

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

Не думаю, что Matthias Clasen не понимает, что он делает.

wandrien ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.