Фикс для ListView, ImgList, Toolbar

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Фикс для ListView, ImgList, Toolbar

Сообщение Browny » 07.09.2007 18:30:50

Фикс для ListView, ImgList, Toolbar
Lazarus version: 0.9.23, snapshot 04.09.2007, svn 11933, Win32

Фикс для:
1. автосоздание серого bitmap в TToolButton для состояния Enabled:= False, если не использован набор иконок из свойства "DisabledImages" в Toolbar'е.

2. Перестала подниматься ToolButton при наведении мыши, если кнопка в состоянии Enabled:= False.

3. Не возникает AccessViolation, если убрать ссылку на SmallImages или LargeImages в ListView.

4. Баг ListView, приводящий к зависанию программы при выходе и зависанию IDE. Баг описан в http://www.freepascal.org/mantis/view.php?id=9609

Патч здесь: http://brokenplate.mpt.ru/filestorage/lcl-04.09.2007-svn11933-listviewfix-2.2.rar

Патч открыт для критики. В планах - исправление отсутствия маскирования 4-битных Bitmap в ImageList.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Павел Ишенин » 08.09.2007 19:26:11

Очень хорошо, что люди делают патчи и помогают тем самым делать лазарус лучше и стабильнее.
Одно замечяние (патч еще не смотрел) - лучше делать по патчу на одну ошибку и складывать в баг трекер. Тогда это дело дойдет до разработчиков.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Сообщение Павел Ишенин » 09.09.2007 13:04:53

Посмотрел патчи и часть изменений применил:
1. AV при удалении ImageList в ListView
2. Обновление шрифта кнопок ToolBar
3. Перерисовка при смене Enabled и передачи состояния ToolButton в ImageList.Draw

Спасибо. Эти изменения попали в ревизию 11974.

Далее:

1. Мне нужно ваше ФИО для добавления в список contributors
2. С зависанием ListView я поразбираюсь. Ваше решение не кажется оптимальным.
3. По поводу измененного imglist.inc - в таком виде это точно не попадет в svn. ifdef Windows, ifdef Unix и подключение windows, Unix модулей в LCL - вещь недопустимая. Для этих целей есть модули lclintf, win32intf, функции из которых реализованы в каждом интерфейсе (windows, gtk, carbon, ...). Лучше всего использовать возможности LCL, т.е. TCanvas.
4. Отрисовка disabled и highlight состояний запланирована на следующую версию и использованный вами алгоритм может пригодиться.

Пока все.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Сообщение Павел Ишенин » 09.09.2007 13:37:25

Извиняюсь, решение с зависанием ListView по другому и не сделать. Применил ваше - ревизия 11975. Спасибо.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Сообщение Browny » 10.09.2007 10:24:21

Павел, отправил Вам письмо в "Личное сообщение". Спасибо за рекомендации.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Browny » 14.09.2007 15:06:29

Небольшое дополнение:

Патч здесь: http://brokenplate.mpt.ru/filestorage/l ... ix-2.2.rar

Патч открыт для критики. В планах - исправление отсутствия маскирования 4-битных Bitmap в ImageList.


Чуть-чуть исправил патч, связанный с отрисовкой серых иконок. Убрал IFDEF MSWINDOWS, IFDEF UNIX в модулях imglist.pp, imglist.inc.

Брать здесь: http://brokenplate.mpt.ru/filestorage/lcl-04.09.2007-svn11933-listviewfix-2.3.rar

Относительно 4-битных картинок: ошибался, всё работает. Проблемы не с картинкой, а с добавлением её в ImageList родным property-editor'ом. Если выравнивание картинки отличается от GlyphAdjustment = gaNone, то по краям картинки вылезают поля цветом TransparentColor.

Предварительный патч (базируется на патче Тома Грегоровича) лежит тут: http://brokenplate.mpt.ru/filestorage/lcl-04.09.2007-svn11933-imglistfix-1.rar

upd: http://brokenplate.mpt.ru/filestorage/lcl-04.09.2007-svn11933-imglistfix-1.1.rar

Большой недостаток моего патча в том, что пришлось вмешаться в класс TBitmap и модули, связанные с API. Поэтому: напоминаю, что патч реализован только для Lazarus 0.9.23, Win32, svn 11933, snapshot 04.09.2007. Для более поздних версий его поведение предсказать не могу!
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

Рейтинг@Mail.ru