private static uint KeepListener( GLib.Signal.EmissionHook listener, string objType, string signalName) { GLib.GType type = GLib.GType.FromName(objType); if (type != GLib.GType.Invalid) { //FIXME: drop this workaround for bug#386950 if (signalName.Contains("property")) { return(0); } lock (listenerListSync) { ListenerInfo info = new ListenerInfo(); info.Id = (uint)ListenerList.Count + 1; info.SignalName = signalName; info.Type = type; info.HookId = GLib.Signal.AddEmissionHook(signalName, type, listener); ListenerList.Add(info.Id, info); return(info.Id); } } else { throw new NotSupportedException("Invalid object type " + objType); } }
public static uint AddGlobalEventListener(GLib.Signal.EmissionHook hook, string event_type) { IntPtr native_event_type = GLib.Marshaller.StringToPtrGStrdup(event_type); uint id = atk_add_global_event_listener(new GLib.Signal.EmissionHookMarshaler(hook).Callback, native_event_type); GLib.Marshaller.Free(native_event_type); return(id); }
internal static uint AddGlobalEventListener( GLib.Signal.EmissionHook listener, string eventType) { uint rc = 0; Log.Info("AutomationBridge: Add global event listener, eventType = {0}", eventType); //split_string[0]: toolkit // [1]: class/interface // [2]: event type // example: Gtk:AtkObject:children-changed string[] splitString = eventType.Split(':'); if ((splitString != null) && (splitString.Length > 2) && (!String.IsNullOrEmpty(splitString [1])) && (!String.IsNullOrEmpty(splitString [2]))) { rc = KeepListener(listener, splitString [1], splitString [2]); } return(rc); }
private static uint KeepListener( GLib.Signal.EmissionHook listener, string objType, string signalName, string hookData) { GLib.GType type = GLib.GType.FromName(objType); if (type != GLib.GType.Invalid) { lock (listenerListMutex) { ListenerInfo info = new ListenerInfo(); info.Id = (uint)ListenerList.Count + 1; info.SignalName = signalName; info.Type = type; info.HookId = GLib.Signal.AddEmissionHook(signalName, type, listener); ListenerList.Add(info.Id, info); return(info.Id); } } else { throw new NotSupportedException("Invalid object type " + objType); } }