button_press_event と scroll_event の 2 つのイベントが接続された Gtk::EventBox があります。2 つのイベントはすべて正常に動作しますが、マウス ボタンを押したままにすると、スクロール イベントが発生しません。
クラスに と の 2 つの関数を実装しましbool on_button_press_event (GdkEventButton *e)
たbool on_scroll_event (GdkEventScroll *e)
。この 2 つの関数false
は、イベントをさらに伝搬するために戻ります。
私はgtkmm3を使用しています。
どうすればこの問題を解決できますか?
問題を再現するコードの例:
#include <gtkmm.h>
#include <iostream>
class MyWindow : public Gtk::Window
{
Gtk::EventBox event_box;
Gtk::ScrolledWindow scrolled;
public:
bool on_button_press_event(GdkEventButton *b)
{
std::cout << "button press" << std::endl;
return false;
}
bool on_scroll_event(GdkEventScroll *e)
{
std::cout << "scrollEvent" << std::endl;
return false;
}
MyWindow ()
{
add(scrolled);
scrolled.add(event_box);
set_default_size(640, 480);
show_all();
}
};
int main(int argc, char** argv)
{
Gtk::Main kit(argc, argv);
MyWindow window;
kit.run(window);
return 0;
}