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); } } } }
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); } }
private void Tree_ItemsChanged(object sender, CssItemsChangedEventArgs e) { if (ItemsChanged != null) ItemsChanged(sender, e); }