Columns UI v2.1.0 [30.09.2023]

Список разделов foobar2000 Секреты foobar2000 Интерфейс - CUI



Сообщение #361 seriousstas » 12.09.2019, 14:08

по которым костыли причиняют боль самому UIHacks и другим компонентам
Просто - все оч абстрактно ..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 10 месяцев

Сообщение #362 TheQwertiest » 12.09.2019, 15:10

Ничего абстрактного: компонент построен на костылях (foo_ui_hacks). Это факт, с которым можно только смириться =)

зы: в любом случае, детальное обсуждение foo_ui_hacks выходит за рамки данного топика.
TheQwertiest
Репутация: 4
С нами: 6 лет 8 месяцев

Сообщение #363 LUR » 12.09.2019, 17:06

TheQwertiest:компонент меняет поведение программы и окон, которые ему не принадлежат, в обход предоставляемого API.
Т.е. Columns UI этого не делает совершенно?) Что такое вообще костыли, если любой компонент может взять хендл любого окна и сделать с ним все что угодно? Вполне возможно что новые колумнсы сами лезут туда, где просто начинается конфликт интересов с хаксом, который ну тупо не поддерживается, а автору колумнсов на него срать) Да и любой сторонний компонент типа сплиттера тоже "костыль".
TheQwertiest:был дан ответ с примером
Дайте ссылку на пост, а то лень искать...
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #364 TheQwertiest » 12.09.2019, 23:06

Т.е. Columns UI этого не делает совершенно?)
На текущий момент ничего такого в CUI не видел (ни в исходных кодах, ни в поведении самого компонента).

Что такое вообще костыли, если любой компонент может взять хендл любого окна и сделать с ним все что угодно?
Именно это и есть костыли - брать владение чужими ресурсами, когда это не предполагается (и не ожидается), изменять чужие ресурсы, когда это не предполагается и т.д. и т.п..

Вполне возможно что новые колумнсы сами лезут туда, где просто начинается конфликт интересов с хаксом, который ну тупо не поддерживается, а автору колумнсов на него срать)
Скорее всего (ибо не полезу в дизасэмбл ради праздного интереса) всё много проще. Как я писал выше, foo_ui_hacks использует перехваты для реализации функционала работы со шрифтами. CUI, наверное, стал использовать WinAPI функцию, которую foo_ui_hacks не перехватывает, из-за этого "костыль" для шрифтов не отрабатывает.

CUI не использует перехваты (по крайней мере я не обнаружил этого в исходном коде), поэтому конфликта по перехватам точно там нет.

Да и любой сторонний компонент типа сплиттера тоже "костыль".
Почему? Брать владение ресурсом, который предполагает, что им будет кто-то владеть - это нормально.
Компоненты типа "панель" всегда работают через некоторый API (CUI/DUI), который позволяет родительской панели\компоненту управлять им (и передавать об этом информацию управляемому компоненту) без необходимости костылей. "Панель" знает, что её могут перемещать, менять размер, скрывать и т.п.. Это ожидаемое поведение.

Костыль - это, например, насильно перехватывать управление родительским окном (эффект прилипания к краю экрана в UiHacks): если fb2k реализует схожий функционал, то "двойное" управление окном приведёт к очень "интересным" багам.
Костыль - это редактировать чужой компонент, добавляя туда новое меню (изменение интерфейса foo_albumlist в UiHacks). Если компонент foo_albumlist изменит номер ресурса и переиспользует старый номер для других целей, то это приведёт к полному undefined behaviour'у.
И т.д. и т.п..

Дайте ссылку на пост, а то лень искать...
Пост на предыдущей странице.

foo_ui_hacks - это (в некотором смысле) эквивалент бинарного патча, который редактирует некоторые места программы с надеждой, что эти места никто и никогда не поменяет. Иногда эти места меняются и "патч" приводит к непредсказуемым последствиям.

При всем сказанном, "костыль" - это не плохо само по себе (и автор UiHacks проделал великолепную работу). Но каждый такой "костыль" несёт риски и это надо понимать. Перекладывать ответственность за сломанные костыли на разработчиков, которые эти костыли сами не делали и никогда не поддерживали, - это абсурд.
TheQwertiest
Репутация: 4
С нами: 6 лет 8 месяцев

Сообщение #365 LUR » 13.09.2019, 13:35

TheQwertiest, спасибо за ответ по полочкам. Кстати, перехват в JSplitter таки используется просто для таскания панелей плагинов средней кнопкой мыши. Сам увидел, к чему это порой приводит, хотя опцию отключаемой и сделал. Но при этом я там же вмешиваюсь в прорисовку панелей плагинов, включая ухищрения для отрисовки фона и копирования его в основное окно, так что как и WSH Panel Mod, так и впрочем JScript Panel, как его наследователь, имеет механизмы, для того, чтобы вмешаться в отрисовку плагинов. Я просто решил чуть-чуть поразмышлять на тему грани костылей с "обходом API". Конкретно в моем случае, я имею в виду так называемую псевдопрозрачность. Пытаясь реализовать сплиттер, в котором так же может находится такой же сплиттер и панели с псевдопрозрачностью, наткнулся на очень неоднозначное решение вопроса. Ну лично для меня, конечно.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #366 foobar2000.ru » 01.12.2019, 00:10

Вышла новая версия плагина: Columns UI v1.3.0-beta.1 [30.11.2019]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #367 foobar2000.ru » 06.12.2019, 00:10

Вышла новая версия плагина: Columns UI v1.3.0-rc.1 [05.12.2019]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #368 foobar2000.ru » 15.12.2019, 00:10

Вышла новая версия плагина: Columns UI v1.3.0 [14.12.2019]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #369 foobar2000.ru » 15.01.2020, 00:10

Вышла новая версия плагина: Columns UI v1.4.0-beta.1 [14.01.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #370 foobar2000.ru » 29.01.2020, 11:10

Вышла новая версия плагина: Columns UI v1.4.0-rc.1 [28.01.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #371 foobar2000.ru » 16.02.2020, 00:10

Вышла новая версия плагина: Columns UI v1.4.0 [15.02.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #372 foobar2000.ru » 08.03.2020, 00:10

Вышла новая версия плагина: Columns UI v1.4.1 [06.03.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #373 foobar2000.ru » 30.08.2020, 00:10

Вышла новая версия плагина: Columns UI v1.5.0 [29.08.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #374 foobar2000.ru » 04.09.2020, 11:10

Вышла новая версия плагина: Columns UI v1.6.0 [03.09.2020]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #375 foobar2000.ru » 09.08.2021, 00:10

Вышла новая версия плагина: Columns UI v1.7.0-beta.1 [03.08.2021]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #376 foobar2000.ru » 27.10.2021, 00:10

Вышла новая версия плагина: Columns UI v1.7.0-beta.2 [24.10.2021]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #377 foobar2000.ru » 01.12.2021, 00:10

Вышла новая версия плагина: Columns UI v1.7.0 [28.11.2021]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #378 foobar2000.ru » 24.04.2022, 00:10

Вышла новая версия плагина: Columns UI v2.0.0-alpha.1 [22.04.2022]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #379 foobar2000.ru » 02.10.2022, 00:10

Вышла новая версия плагина: Columns UI v2.0.0-alpha.2 [01.10.2022]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Сообщение #380 foobar2000.ru » 03.10.2022, 00:10

Вышла новая версия плагина: Columns UI v2.0.0-alpha.3 [02.10.2022]
foobar2000.ru
Автор темы, Робот
Репутация: 9
С нами: 12 лет 5 месяцев

Пред.След.

Вернуться в Интерфейс - CUI