Gtk::ScrolledWindow отключает прокрутку до сфокусированного дочернего элемента

У меня очень большой Gtk::EventBox в Gtk::ScrolledWindow.
В тот момент, когда я делаю grab_focus() в своем Gtk::EventBox,
Gtk::ScrolledWindow прокручивается вверху Gtk::EventBox.

Как я могу отключить это поведение?


person KoKuToru    schedule 01.11.2014    source источник


Ответы (1)


Gtk::EventBox не наследует Gtk::Scrollable
и поэтому при добавлении к Gtk::ScrolledWindow упаковывается в Gtk::Viewport
.

Чтобы отключить прокрутку до сфокусированного ребенка, вам нужно изменить focus_hadjustment/focus_vadjustment

//Disable scroll to focused child
auto viewport = dynamic_cast<Gtk::Viewport*>(m_scrolled.get_child());
if (viewport) {
  auto dummy_adj = Gtk::Adjustment::create(0,0,0);
  viewport->set_focus_hadjustment(dummy_adj);
  viewport->set_focus_vadjustment(dummy_adj);
}
person KoKuToru    schedule 03.11.2014