Re: Why cursor keys are not longer reported in key press events
Kjell Ahlstedt via gtkmm-list <[email protected]>
| Newsgroups | gmane.comp.gnome.gtkmm |
|---|---|
| Message-ID | <[email protected]> |
On 2020-03-27 17:03, Klaus wrote:
> Some research later:
>
> Seems that build in event handler of Gtk::Window has changed behavior.
>
>
> class MyWin: public Gtk::Window
> {
> bool on_key_press_event( GdkEventKey* event ) override
> {
> std::cout << "KeyPressEvent" << std::endl;
> bool retval = Gtk::Window::on_key_press_event( event );
> std::cout << "Retval from native win function:" << retval <<
> std::endl;
>
> return false;
> }
> };
>
> As we see, if cursor keys are going into the function, retval is true
> which stops following handlers to see the keys.
>
> Every handler which was introduced with
> "win.signal_key_press_event().connect" will not any longer executed.
>
> That Gtk::Window "eats" the cursor keys is new. Compiled the same
> program some weeks ago the cursor keys where also present in the later
> on dynamically registered handlers.
>
> OK, can workaround by simply overriding all the window handlers...
>
> Regards
> Klaus
>
>
This is normal behavior for event signals. The default handler can stop
further processing by returning true. It's described e.g. at
https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en
https://developer.gnome.org/gtkmm-tutorial/stable/chapter-keyboardevents.html.en
You shall set the 'after' parameter to false in the call the connect().
https://developer.gnome.org/glibmm/stable/classGlib_1_1SignalProxy.html#a0bee9dba36374339ab19ec34f288613e
Kjell
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list