Моя проблема заключалась в том, что я CustomButton::handle()
возвращал 1
после события FL_KEYBOARD
без фактического использования нажатия клавиши табуляции.
Перемещение is_event_handled = 1
в оператор if позволяет мне использовать нажатие клавиши FL_Enter
только и позволяет другим виджетам (например, Fl_Group, которая управляет навигацией) принимать любые другие нажатия клавиш.
В качестве альтернативы избавьтесь от if
и замените его чем-то вроде
switch(Fl::event_key())
{
case FL_Enter:
case FL_KP_Enter:
// Do stuff
is_event_handled = 1;
break;
default:
is_event_handled = 0;
break;
}