RE: Atk focus change capture fail. Why?

I found the problem I had:
The windows I showed up are blank windows. If I added them some widgets they work fine.
Also, I can't find in Google how to get focus change of all windows, not just in the same process.
Is this possible?


Date: Thu, 4 Oct 2012 11:04:58 +0200
From: apinheiro igalia com
To: gnome-accessibility-list gnome org
Subject: Re: Atk focus change capture fail. Why?

That code (although I didn't test it), seems fine, and should work if you are using a recent gtk version. If not, that will only work if accessibility is enabled.

Anyway, FWIW, we plan to deprecate those methods at some moment of the future:

If you want to track when the focus change, you can also add a global event, and filter state-change:focus events.


On 10/04/2012 12:42 AM, Tal Hadad wrote:
I tried to make my first steps in ATK, but I can't understand what I'm doing wrong.
Here is my Vala code:
using GLib;
using Atk;
using Gtk;

void _my_focus_tracker (Atk.Object object) {
    stdout.printf ("Tracked!\n");

int main (string[] args) {
    Gtk.init (ref args);
    Util.add_focus_tracker (_my_focus_tracker);
    Gtk.Window window1 = new Gtk.Window (); ();
    Gtk.Window window2 = new Gtk.Window (); ();
    Gtk.main ();
    return 0;

add_docus_tracker doesn't call _my_focus_tracker when focus get changed.
I know that most of you may not know Vala, so here is part of
the C generated/equated code:
void _my_focus_tracker (AtkObject* object) {
    FILE* _tmp0_;
    g_return_if_fail (object != NULL);
    _tmp0_ = stdout;
    fprintf (_tmp0_, "Tracked!\n");

gint _vala_main (gchar** args, int args_length1) {
    gint result = 0;
    GtkWindow* _tmp0_;
    GtkWindow* _tmp1_;
    GtkWindow* window1;
    GtkWindow* _tmp2_;
    GtkWindow* _tmp3_;
    GtkWindow* window2;
    gtk_init (&args_length1, &args);
    atk_add_focus_tracker (_my_focus_tracker_atk_event_listener);
    _tmp0_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_TOPLEVEL);
    _tmp1_ = g_object_ref_sink (_tmp0_);
    window1 = _tmp1_;
    gtk_widget_show ((GtkWidget*) window1);
    _tmp2_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_TOPLEVEL);
    _tmp3_ = g_object_ref_sink (_tmp2_);
    window2 = _tmp3_;
    gtk_widget_show ((GtkWidget*) window2);
    gtk_main ();
    result = 0;
    _g_object_unref0 (window2);
    _g_object_unref0 (window1);
    return result;

int main (int argc, char ** argv) {
    g_type_init ();
    return _vala_main (argv, argc);

For some reason, even when GLib main loop is running, no focus change detection between the two windows.
Have I miss something? I think I haven't initialize something or forgot to active watcher...

Hope for your reply

gnome-accessibility-list mailing list
gnome-accessibility-list gnome org

Alejandro Piñeiro Iglesias

_______________________________________________ gnome-accessibility-list mailing list gnome-accessibility-list gnome org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]