I'm using gtk-3.0 to create my simple UI and I want to send a fake event to GTKEntry via g_signal_emit(...) function. Actually, I don't know, what parameters I should pass to this function.
Asked
Active
Viewed 400 times
0
-
You need to provide a bit more detail in your question - the answer to the question depends on which signal you are trying to emit. – ptomato Jul 19 '15 at 05:02
1 Answers
1
Source: https://mail.gnome.org/archives/gtkmm-list/2007-June/msg00115.html
void Foo:bar() // handler for signal_clicked()
{
<YOUR TREEVIEW>.grab_focus(); // essential
guint keyval = GDK_Page_Down;
GdkKeymapKey* keys;
gint n_keys;
gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(),
keyval,
&keys,
&n_keys);
// Note: GdkEvent is an union
GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
((GdkEventKey*)event)->window =
<YOUR TREEVIEW>get_window()->gobj();
((GdkEventKey*)event)->send_event = TRUE;
((GdkEventKey*)event)->time = GDK_CURRENT_TIME;
((GdkEventKey*)event)->state = GDK_KEY_PRESS_MASK;
((GdkEventKey*)event)->keyval = keyval;
((GdkEventKey*)event)->hardware_keycode = keys[0].keycode;
((GdkEventKey*)event)->group = keys[0].group;
gdk_event_put(event);
// Or, more gdkmm-ish:
// Gdk::Event(event).put();
}

Stian Skjelstad
- 2,277
- 1
- 9
- 19