window_tracker: additionaly register on "restore" signal
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 18 Dec 2014 11:00:25 +0000 (12:00 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 18 Dec 2014 11:00:25 +0000 (12:00 +0100)
src/window_tracker.c

index 3ceb4eb..545eaa2 100644 (file)
@@ -10,16 +10,21 @@ static AtspiAccessible *last_active_win;
 static void
 _on_atspi_window_cb(const AtspiEvent *event)
 {
-   if (!strcmp(event->type, "window:activate"))
+   if (!strcmp(event->type, "window:activate") ||
+       !strcmp(event->type, "window:restore"))
      {
-        last_active_win = event->source;
-        if (user_cb) user_cb(user_data, event->source);
+        if (last_active_win != event->source)
+            {
+              if (user_cb) user_cb(user_data, event->source);
+              last_active_win = event->source;
+            }
      }
    else if (!strcmp(event->type, "window:deactivate"))
      {
         if ((last_active_win == event->source) &&
             user_cb)
           user_cb(user_data, NULL);
+        last_active_win = NULL;
      }
 }
 
@@ -54,12 +59,14 @@ void window_tracker_init(void)
    listener = atspi_event_listener_new_simple(_on_atspi_window_cb, NULL);
    atspi_event_listener_register(listener, "window:activate", NULL);
    atspi_event_listener_register(listener, "window:deactivate", NULL);
+   atspi_event_listener_register(listener, "window:restore", NULL);
 }
 
 void window_tracker_shutdown(void)
 { 
    atspi_event_listener_deregister(listener, "window:activate", NULL);
    atspi_event_listener_deregister(listener, "window:deactivate", NULL);
+   atspi_event_listener_deregister(listener, "window:restore", NULL);
    g_object_unref(listener);
    listener = NULL;
    user_cb = NULL;