Exemplo n.º 1
0
static void
control_spi_listener_init (ControlSpiListener *listener)
{
    listener->event_queue = g_queue_new ();
    listener->window_listener = SPI_createAccessibleEventListener (control_spi_listener_window_listener_cb, listener);
    listener->showing_listener = SPI_createAccessibleEventListener (control_spi_listener_showing_listener_cb, listener);
    listener->keys_listener = SPI_createAccessibleEventListener (control_spi_listener_keys_listener_cb, listener);
}
Exemplo n.º 2
0
static void *doAtSpiScreenOpen(void *arg) {
  AccessibleEventListener *evListener;
  sem_t *SPI_init_sem = (sem_t *)arg;
  int res;
  static const char *events[] = {
    "object:text-changed",
    "object:text-caret-moved",
    "object:state-changed:focused",
    "focus:",
  };
  const char **event;
  if ((res=SPI_init())) {
    logMessage(LOG_ERR,"SPI_init returned %d",res);
    return 0;
  }
  if (!(evListener = SPI_createAccessibleEventListener(evListenerCB,NULL)))
    logMessage(LOG_ERR,"SPI_createAccessibleEventListener failed");
  else for (event=events; event<&events[sizeof(events)/sizeof(*events)]; event++)
    if (!(SPI_registerGlobalEventListener(evListener,*event)))
      logMessage(LOG_ERR,"SPI_registerGlobalEventListener(%s) failed",*event);
  sem_post(SPI_init_sem);
  SPI_event_main();
  if (!(SPI_deregisterGlobalEventListenerAll(evListener)))
    logMessage(LOG_ERR,"SPI_deregisterGlobalEventListenerAll failed");
  AccessibleEventListener_unref(evListener);
  if (curFocus)
    finiTerm();
  if ((res=SPI_exit()))
    logMessage(LOG_ERR,"SPI_exit returned %d",res);
  return NULL;
}
Exemplo n.º 3
0
static void listen_for_application_activation( Driver* dp ) {
    dp->window_listener = SPI_createAccessibleEventListener(
        check_for_application,
        dp
    );
    int success = SPI_registerGlobalEventListener(
        dp->window_listener,
        "window:activate"
    );
    if ( ! success )
        report_error( "Failed to register a GlobalEventListener" );
}
Exemplo n.º 4
0
EventLog *
event_log_create (GtkWindow *parent)
{
	EventLog  *log = g_new0 (EventLog, 1);
	
	log->xml = get_glade_xml();
	log->window = glade_xml_get_widget (log->xml, "event_window");

	gtk_window_set_transient_for (GTK_WINDOW (log->window), parent);
	glade_xml_signal_connect_data (log->xml, "events_clear_clicked",
				       G_CALLBACK (events_clear_clicked), log);
	glade_xml_signal_connect_data (log->xml, "events_select_all_clicked",
				       G_CALLBACK (events_select_all_clicked), log);
	glade_xml_signal_connect_data (log->xml, "events_save_as_clicked",
				       G_CALLBACK (events_save_as_clicked), log);

	log->text_view = GTK_TEXT_VIEW (glade_xml_get_widget (log->xml, "event_text_view"));
	log->filters_view = GTK_TREE_VIEW (glade_xml_get_widget (log->xml, "event_filters"));

	g_signal_connect (log->text_view, "button_press_event",
			  G_CALLBACK (link_clicked), log);

	log->log_text = gtk_text_buffer_new (NULL);
	gtk_text_view_set_buffer (log->text_view, log->log_text);
	gtk_text_view_set_wrap_mode (log->text_view, /* GTK_WRAP_NONE */ GTK_WRAP_CHAR);

	setup_filters (log);
	log->global_listener = SPI_createAccessibleEventListener (global_event_callback, log);
	log->idle_tail = 0;
#ifdef IDLE_LOGGING
	log->idle_log = 0;
	log->event_list = NULL;
#endif

	gtk_widget_show (log->window);

	return log;
}
int
main (int argc, char **argv)
{
	int leaked, i;
	TestWindow *win;
	const char *modules;
	AccessibleEventListener *global_listener;

	modules = g_getenv ("GTK_MODULES");
	if (!modules || modules [0] == '\0')
		putenv ("GTK_MODULES=gail:atk-bridge");
	modules = NULL;

	for (i = 1; i < argc; i++) {
		if (!g_strcasecmp (argv [i], "--poke"))
			do_poke = TRUE;
	}

	gtk_init (&argc, &argv);

	g_assert (!SPI_init ());
	g_assert (SPI_init ());
	g_assert (SPI_getDesktopCount () == 1);

	test_roles ();
	test_misc ();
	test_desktop ();
	test_keylisteners (); 

	win = create_test_window ();

	global_listener = SPI_createAccessibleEventListener (global_listener_cb, win);

	g_assert (SPI_registerGlobalEventListener (global_listener, "focus:"));

	fprintf (stderr, "Waiting for focus event ...\n");
	gtk_main ();

	g_assert (SPI_deregisterGlobalEventListenerAll (global_listener));
	AccessibleEventListener_unref (global_listener);

	test_window_destroy (win);

	/* Wait for any pending events from the registry */
	g_usleep (500*1000);
	for (i = 0; i < 100; i++)
		dbus_connection_read_write_dispatch (SPI_bus(), 5);

	if ((leaked = SPI_exit ()))
		g_error ("Leaked %d SPI handles", leaked);

	g_assert (!SPI_exit ());

	fprintf (stderr, "All tests passed\n");

	if (g_getenv ("_MEMPROF_SOCKET")) {
		fprintf (stderr, "Waiting for memprof\n");
		gtk_main ();
	}

	putenv ("AT_BRIDGE_SHUTDOWN=1");

	return 0;
}