void Tree_ItemsChanged(object sender, CssItemsChangedEventArgs e)
        {
            CssTree tree = (CssTree)sender;

            foreach (ParseItem item in e.InsertedItems)
            {
                var visitor = new CssItemCollector<Declaration>(true);
                item.Accept(visitor);

                foreach (Declaration dec in visitor.Items)
                {
                    if (dec.PropertyName != null && dec.PropertyName.Text == "display" && dec.Values.Any(v => v.Text == "inline"))
                    {
                        _cache.Add(dec);
                                                
                        ParseItem rule = dec.Parent;
                        Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => Update(rule, tree)), DispatcherPriority.Normal);
                    }
                }
            }

            foreach (ParseItem item in e.DeletedItems)
            {
                var visitor = new CssItemCollector<Declaration>(true);
                item.Accept(visitor);

                foreach (Declaration deleted in visitor.Items)
                {
                    if (_cache.Contains(deleted))
                    {
                        _cache.Remove(deleted);

                        ParseItem rule = deleted.Parent;
                        Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => Update(rule, tree)), DispatcherPriority.Normal);
                    }
                }
            }
        }
Пример #2
0
        private void TreeItemsChanged(object sender, CssItemsChangedEventArgs e)
        {
            foreach (ParseItem item in e.DeletedItems)
            {
                var matches = _cache.Where(s => s.Start >= item.Start && s.AfterEnd <= item.AfterEnd);
                foreach (var match in matches.Reverse())
                {
                    _cache.Remove(match);
                }
            }

            foreach (ParseItem item in e.InsertedItems)
            {
                UpdateCache(item);
            }
        }
        private void TreeItemsChanged(object sender, CssItemsChangedEventArgs e)
        {
            foreach (ParseItem item in e.DeletedItems)
            {
                if (Cache.Contains(item))
                    Cache.Remove((Declaration)item);
            }

            foreach (ParseItem item in e.InsertedItems)
            {
                UpdateDeclarationCache(item);
                UpdateVendorValues(item);
            }
        }
Пример #4
0
 private void Tree_ItemsChanged(object sender, CssItemsChangedEventArgs e) { if (ItemsChanged != null) ItemsChanged(sender, e); }