Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [mylar-dev] [enhancement] remove duplicated redrawing when uninstalling InterestFilter from StructuredViewer.


This is all great, but, seriously, why don't you create bug reports for those issues and attach correspond patches to those reports? It will keep this mail list clear and more importantly will save some time to Mik if he accept those patches. See http://www.eclipse.org/mylar/dev.php

By the way, Mik, it seems that link to "Reference" page from "Patches" section is broken.

  regards,
  Eugene


bin Wang wrote:
AbstractApplyMylarAction#uninstallInterestFilter(StructuredViewer) will reDraw StructuredViewer more than one if there are more than one
InterestFilter to be removed.

Below is the original method

 protected void uninstallInterestFilter(StructuredViewer viewer) {
  if (viewer != null) {
   for (int i = 0; i < viewer.getFilters().length; i++) {
    ViewerFilter filter = viewer.getFilters()[i];
    if (filter instanceof InterestFilter) {
     viewer.getControl().setRedraw(false);
     viewer.removeFilter(filter);
     viewer.getControl().setRedraw(true);
    }
   }
  } else {
   MylarStatusHandler.log("Could not uninstall interest filter", this);
  }
 }

We can see if there aremore than one InterestFilter to be removed, below code is excuted more than one.

     viewer.getControl().setRedraw(false);
     viewer.removeFilter(filter);
     viewer.getControl().setRedraw(true);

So I suggest cache alled the filters to be removed as below code does.

 protected void uninstallInterestFilter(StructuredViewer viewer) {
  if (viewer == null) {
   MylarStatusHandler.log("Could not uninstall interest filter", this);
   return;
  }
List<ViewerFilter> filtersToRemove = new ArrayList<ViewerFilter>(); for (ViewerFilter filter : viewer.getFilters()) {
   if (filter instanceof InterestFilter) {
    filtersToRemove.add(filter);
   }
  }
if (! filtersToRemove.isEmpty()) {
   viewer.getControl ().setRedraw(false);
for (ViewerFilter filter : filtersToRemove) {
    viewer.removeFilter(filter);
   }
viewer.getControl().setRedraw(true);
  }
 }


------------------------------------------------------------------------

_______________________________________________
mylar-dev mailing list
mylar-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/mylar-dev



Back to the top