Beispiel #1
0
        /// <summary>
        /// Handles load data notification
        /// </summary>
        unsafe static partial void Host_HandleLoadData(ISciterNotifications host, IntPtr pns)
        {
            var datantf = (SCN_LOAD_DATA *)pns;
            var e       = new LoadDataEventArgs(datantf->GetUri(), () => datantf->GetData())
            {
                IsCached = datantf->outData != IntPtr.Zero,
                //TODO: Htmlayout do not have such property
                //RequestId = datantf->request_id,
                ResourceType = (ResourceType)datantf->dataType
            };

            host.ProcessLoadData(e);

            byte[] bytes = null;
            if (e.IsDataAvailable)
            {
                bytes = e.GetData();
            }
            else
            {
                bytes = SciterFactory.ResolveBinResource(e.Uri, e.ResourceType);
            }

            SciterDataReady(datantf->hwnd, e.Uri, bytes);
        }
Beispiel #2
0
        /// <summary>
        /// Handles behavior attach
        /// </summary>
        unsafe static partial void Host_HandleAttachBehavior(ISciterNotifications host, IntPtr pns)
        {
            var datantf = (SCN_ATTACH_BEHAVIOR *)pns;
            var e       = new AttachBehaviorEventArgs(Element.Create(datantf->element), datantf->GetBehaviorName());

            host.ProcessAttachBehavior(e);

            e.Behavior = e.Behavior ?? SciterFactory.ResolveBehavior(e.BehaviorName);
            if (e.Behavior != null)
            {
                datantf->elementProc   = ElementEventProcEntryPoint;
                datantf->elementTag    = InstanceProtector.Protect(e.Behavior);
                datantf->elementEvents = (EVENT_GROUPS)e.EventGroups;
            }
        }