Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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);
     }
 }