Page 3 of 3

Re: libkmenu

Posted: Wed Nov 04, 2015 12:48 pm
by Veliant
Если у кого есть желание и возможность помочь прикрутить меню к animage, то вот результат некоторой работы
animage.png
animage.png (10.86 KiB)
Viewed 12334 times
Из явных косяков:
-смещены некоторые элементы окна из-за того что в стилях окна теперь прописано рисовать в координатах рабочей области
-отвалился курсор в рабочей области
-при выборе некоторых пунктов меню происходит вылет (например Undo)

P.S. к сожалению код animage сложен для поддержки и дальнейшего развития

Re: libkmenu

Posted: Wed Nov 04, 2015 3:38 pm
by Pathoswithin
Видимо, ещё один Tinypad...

А по поводу несрабатывания пунктов меню мысли есть?

Re: libkmenu

Posted: Sun Nov 29, 2015 12:22 am
by IgorA
Вопрос по меню, какого размера структуру следует давать в функцию kmenu_init ?
Старую на 40 байт или новую на 192 байта? Потому как я заметил что в редакторе t_edit у меня структура старого образца system_colors на 40 байт.

Re: libkmenu

Posted: Mon Nov 30, 2015 12:01 pm
by Veliant
Расширенную, на 192 байта. В последней версии библиотеки, можно передать NULL

Re: libkmenu

Posted: Sun Feb 14, 2016 11:42 pm
by IgorA
rev 6224
Нашел и обновил очень старый пример использования меню (аж со 180-й ревизии не менялся).
Там была на кнопках какая-то непонятная штука похожая на меню. Заменил его на библиотечное kmenu.

Re: libkmenu

Posted: Fri Feb 19, 2016 5:15 pm
by Veliant
Исправил небольшой баг с мышкой
если запустить техt editor (расположен на боковой панели) и после этого перекрыть его заголовок
заголовком другого приложения (окна), то он всё равно будет выводить выбранные меню при курсоре мыши над ними

Re: libkmenu

Posted: Mon Aug 22, 2016 3:18 am
by punk_joker
Где можно найти объявление типов t_rect и t_font?

Re: libkmenu

Posted: Mon Aug 22, 2016 11:05 am
by Albom
В файле api.h (например, здесь).

typedef struct {
uint16_t left, top, right, bottom;
} t_rect;


typedef struct {
int type;
uint32_t color;
union {
uint32_t bgcolor;
void *buffer;
};
} t_font;

Re: libkmenu

Posted: Wed Oct 26, 2016 1:52 pm
by Veliant
Исправлена установка маски событий из-за чего родительское окно получало события от мышки даже в неактивном состоянии (http://bugs.kolibri-n.org/index.php?id=1)
Небольшие косметические изменения ввиде увеличенных отступов

Re: libkmenu

Posted: Wed Oct 26, 2016 3:15 pm
by Siemargl
О, лови разработчика!

Есть баг - подменю _второго уровня_ не работает - и не закрывается вовремя и не срабатывает как событие.

Если надо, выложу собранный пример вечером из c-layer

Re: libkmenu

Posted: Wed Oct 26, 2016 3:55 pm
by Veliant
Да, пример хотелось бы взглянуть.

Т.к. в моем демо (прикрепил) вроде нет таких проблем

Re: libkmenu

Posted: Wed Oct 26, 2016 4:42 pm
by Leency
Работает, спасибо.

P.S. Во время тестирования меню, приложение один раз вылетело, воспроизвести вылет потом так и не удалось.

Re: libkmenu

Posted: Wed Oct 26, 2016 6:25 pm
by Siemargl
Siemargl wrote:О, лови разработчика!

Есть баг - подменю _второго уровня_ не работает - и не закрывается вовремя и не срабатывает как событие.

Если надо, выложу собранный пример вечером из c-layer
Пока не забыл - пункт Б: если окно приложения не скинованноесоздано без флага "координаты относительно клиентской обл",
то kmenu отрисовывается поверх строки заголовка окна.

Возможно, мы неверно что то используем:
Вот исходник http://websvn.kolibrios.org/filedetails ... _example.c
Структуры тут http://websvn.kolibrios.org/filedetails ... ri_kmenu.h
Spoiler:

Code: Select all

  kmenu_init(NULL);
 
  ksubmenu_t *sub_menu1 = ksubmenu_new();
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Open", 101));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Save", 102));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, 0));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Exit", 103));
 
  ksubmenu_t *sub_menu2 = ksubmenu_new();
  ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Find", 201));
  ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Replace", 202));
 
  ksubmenu_t *sub_menu22 = ksubmenu_new();
  ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "CP1251", 211));
  ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "UTF-8", 212));
  ksubmenu_add(sub_menu2, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Encoding", sub_menu22));
 
  ksubmenu_t *main_menu = ksubmenu_new();
  ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "File", sub_menu1));
  ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Edit", sub_menu2));
Здесь kmenuitem_new() и kmenuitem__submenu_new() это одна и та же экспортируемая функция kmenuitem_new, отличается только типом параметра.

Картинка два появляется по щелчку на Encoding, и событий 211, 212 не приходит.

Без исходников не могу поковырять ни пример ни либу (