Один экран Gtkmm, над которым я работаю, содержит HorizontalBox (который прокручивается), этот блок содержит несколько кадров, каждый кадр имеет ComboBox. Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь пытается прокрутить HorizontalBox, курсор иногда находится над одним из ComboBox, а ComboBox прокручивается вместо HorizontalBox. Это вызывает серьезную проблему для ввода данных.
Я попытался исправить ситуацию, похитив событие прокрутки:
ScreenObject::ScreenObject()
{
m_CBox->signal_scroll_event().connect(sigc::mem_fun(
*this,&ScreenObject::ScrollOverride));
//ComboBox populated here
}
bool ScreenObject::ScrollOverride(GdkEventScroll *scroll)
{
cout <<"Scroll Attempted!\n";
return true;
}
Я наведите курсор мыши на ComboBox и вращаю колесо прокрутки, ComboBox прокручивается как обычно, и сообщение отладки не отправляется на консоль (что просто запутывает).
Неважно, что я делаю с ComboBox, мне не кажется, что событие сработало.
Есть ли какой-то другой сигнал, который мне нужно перехватить, чтобы подавить прокрутку ComboBox? Есть ли какая-либо опция конструктора для ComboBox, которая будет указывать игнорировать сигнал прокрутки?