toobars
Борьба со статусбаром
Как я уже писал, мне удалось заставить кнопки с картинками быть практически того же размера, что и картинка на них (что не совсем так – всё же приходится добавлять 1 пиксел, иначе картинка обрезается снизу). Но в связи с этим возникла другая проблема – статусбар становится уже на два пикселя выше положенного (до этого был на один, соответственно). Если же ограничить высоту статусбара тем же способом, которым удалось уменьшить размеры кнопки, то кнопка начинает залезать на shadow сверху статусбара, что не есть хорошо.
Кроме того, сюда же можно отнести проблемы с отрисовкой resize grip – если у текущей стабильной версии посмотреть на него, то над ним отсутствует полоска shadow, свойственная всему остальному статусбару.
Про получающуюся в итоге порнографию с двумя полосками shadow, одна из которых принадлежит статусбару, а вторая – списку контактов, я вообще молчу.
Казалось бы – да убери ты эту тень! Нафиг она тебе сдалась! Но тут есть одно “но” – это свойство доступно только для чтения и как изменить его я пока не нашёл.
В общем, на текущий момент я работаю над тем, чтобы полностью отказаться от использования такого виджета, как statusbar в пользу обычного hbox’а с resize grip на нужном месте. Чит, конечно, костыль, но ничего более разумного в голову пока не пришло. Зато пришло понимания, что statusbar обладает откровенно недостаточным набором свойств, а имеющийся функционал реализован местами криво.
Ура!
Только что мне удалось заставить кнопку-переключатель быть размером с картинку, размещённую внутри, а не на пару пикселей больше (как это есть по-умолчанию).
Теперь ничто не мешает отказаться от отдельных пустых кнопок смены статуса в пользу кнопок, совмещённых с эмблемами протоколов.
Осталось ответить на последний вопрос: а оно нужно? 🙂
Работы над плагином TooBars продолжаются
Мне и самому изначально было интересно сделать отображение статуса в виде картинки, да ниасилил с наскока. А тут ещё один иностранный товарищ то же запросил… В общем, решил я ещё немного с ним поковыряться.
И уже написал код, который выводит соответствующие значки. Задумка – объединить на одном значке иконку протокола с иконкой статуса, как это сделано в Carrier’е.
А вот далее – стопяцоттрёхсотый подход к попытке наложить значок поверх кнопки, да так, чтобы кнопка эта не увеличивалась в размерах, и, как следствие, не тянула за собой и статусную строку. Пример – gedit. Там в статусной строке есть пара контроллов похожих, только там это не совсем кнопки…
Заодно уже пофиксил пару потенциальных ошибок, следствием которых (наверное :)) являлись утечки памяти.
А также баг один нашёл – при возникновении ошибки в протоколе с последующим обрывом соединения этот протокол оставался висеть в статусной строке со старым статусом, т.к. возникающее при ошибке событие не обрабатывалось.
Последний в этом году релиз
По сообщению одного иностранного товарища, в предыдущей версии имелась ошибка, которая у меня не проявлялась, но в некоторых условиях не позволявшая активировать кнопку “Добавить контакт” после загрузки учётных записей.
В итоге дважды переписал соответствующую функцию и теперь, вроде бы, всё работает 🙂
Заодно добавил контекстные меню при клике на панели инструментов и на кнопке смены статуса учётной записи.
Бугага!!!
Нашёл! Как ни странно, дело было не в моих кривых ручонках, в ручёнках того, кто писал этот самый pidgin_status_box_new_with_account.
На эту мысль меня навел тот факт, что во-первых, никаких unref’ов я там и близко не использую, однако ругается именно unref, во-вторых, при попытке установить свойство в TRUE (каковое значение и установлено по умолчанию) всё замечательно работало, проблема возникала исключительно при попытке установить его в FALSE.
Ну да ладно. Немного жаль потерянные 4 дня, что я потратил на выяснение этого.
В плюсе же – в очередной раз убедился, что верить нельзя никому, а также обнаружение и попутное устранение сегфолта при попытке добавить пользователя, если нет ни одного подключённого аккаунта (именно подключённого, а не активного).
В общем, нет худа без добра.
Эта музыка бууудет вееечной
Как выяснилось, то, что я так радостно нашёл днём – нихрена не оно и долбанная “g_object_unref: assertion `G_IS_OBJECT (object)’ failed” так и сыпет при первой попытке сделать g_object_set (TB->AccountStatusBox_sbox, “iconsel”, FALSE, NULL) при условии, что TB->AccountStatusBox_sbox это pidgin_status_box_new_with_account (account).
При этом в плагине MyStatusBox никаких таких ошибок нет. Правда, его разработчики не знают, что этот плагин можно заставить вызвать сегфолт, а я с ним уже поборолся. Возможно, следствием этого и является текущая жопа, но от этого не легче. Странный выбор для разработчика – или такая ошибка, или такая. При этом создаётся впечатление, что третьего и не дано.
Упарило уже. Как-то неприлично много внимания к какой-то сраной, копеечной проблеме. Неадекватно много. Бедные программисты, вынужденные в ЭТОМ программить постоянно. Соболезную.
Совместимость в Pidgin 2.6.4
Сегодня прилетело обновление Pidgin до версии 2.6.4. Плагин стабильно работает, будто смены версии и не произошло.
Я рад.
Одним потенциальным гиморром меньше 🙂
Нашёл!
Нашёл, откуда оно всё лезло!
Странно всё это…
Вспоминаю свои потуги несколько лет назад ковырнуть Delphi с добрым чувством. Как же там всё просто, логично и удобно. И как здесь всё…
А, не важно. Мне на этом чуде не программировать каждый день, а плагин дописать уже до того состояния, который я сам себе определил в самом начале работ 🙂
Ну, если ещё чего не вылезет, то сегодня-завтра релиз, ага 🙂
Не выходит цветочек каменный
Казалось бы – ну ругается плагин “g_object_unref: assertion ‘G_IS_OBJECT (object)’ failed“, фигня, щя найдём строчку, в которой оно возникает, починим!
Ага! А вот хрен там!
Уже который день ковыряю, не могу найти причину. Т.е. причину нашёл, только от этого не легче.
Хоть убей не понимаю, что делают эти самые g_object_ref’ы и g_object_unref’ы! Уж и так пытался понять, и эдак… Пока мне кажется, что эти сущности избыточны, вследствие чего я и не могу понять их назначения и необходимости их использования 🙁
Надо, кстати, на форуме Убунтовском спросить, может кто-то популярно сможет объяснить…
Поддержите меня!
Recent Posts
Recent Comments
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. on
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. on
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. on
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. on
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. on
Archives
- May 2020
- December 2019
- June 2019
- July 2018
- February 2018
- September 2017
- August 2017
- June 2017
- March 2017
- January 2017
- December 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- April 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- July 2014
- June 2014
- February 2014
- January 2014
- December 2013
- February 2013
- January 2013
- June 2012
- April 2012
- March 2012
- August 2011
- June 2011
- April 2011
- February 2011
- December 2010
- November 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009