Exemplo n.º 1
0
        void SwizzleNSApplicationAccessibilitySetter()
        {
            // Swizzle accessibilitySetValue:forAttribute: so that we can detect when VoiceOver gets enabled
            var nsApplicationClassHandle = Class.GetHandle("NSApplication");

            // This happens if GtkMac is loaded before XamMac
            if (nsApplicationClassHandle == IntPtr.Zero)
            {
                return;
            }

            var accessibilitySetValueForAttributeSelector = Selector.GetHandle("accessibilitySetValue:forAttribute:");

            var accessibilitySetValueForAttributeMethod = class_getInstanceMethod(nsApplicationClassHandle, accessibilitySetValueForAttributeSelector);

            originalAccessibilitySetValueForAttributeMethod = method_getImplementation(accessibilitySetValueForAttributeMethod);

            var block = new BlockLiteral();

            SwizzledAccessibilitySetValueForAttributeDelegate d = accessibilitySetValueForAttribute;

            block.SetupBlock(d, null);
            var imp = imp_implementationWithBlock(ref block);

            method_setImplementation(accessibilitySetValueForAttributeMethod, imp);

            accessibilityInUse    = CFPreferences.GetAppBooleanValue("voiceOverOnOffKey", "com.apple.universalaccess");
            a11yHelperInitialized = true;
        }
Exemplo n.º 2
0
        void SwizzleNSApplication()
        {
            // Swizzle accessibilitySetValue:forAttribute: so that we can detect when VoiceOver gets enabled
            var nsApplicationClassHandle = Class.GetHandle("NSApplication");
            var accessibilitySetValueForAttributeSelector = Selector.GetHandle("accessibilitySetValue:forAttribute:");

            var accessibilitySetValueForAttributeMethod = class_getInstanceMethod(nsApplicationClassHandle, accessibilitySetValueForAttributeSelector);

            originalAccessibilitySetValueForAttributeMethod = method_getImplementation(accessibilitySetValueForAttributeMethod);

            var block = new BlockLiteral();

            SwizzledAccessibilitySetValueForAttributeDelegate d = accessibilitySetValueForAttribute;

            block.SetupBlock(d, null);
            var imp = imp_implementationWithBlock(ref block);

            method_setImplementation(accessibilitySetValueForAttributeMethod, imp);
        }