Skip to content

Commit 1c057d1

Browse files
BananeweizenCalixte
authored andcommitted
avoid flickering during filter update
When updating the list of modules matching the given text filter, disable redrawing the underlying OS control. Otherwise there is a flickering effect, since the control is redrawn for every item being processed by the filter by default. With redrawing disabled, the control is only drawn once all items have been filtered, and there is no more flickering.
1 parent 945d9ef commit 1c057d1

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/config/CheckConfigurationConfigureDialog.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -546,19 +546,23 @@ public void keyReleased(KeyEvent e) {
546546
*/
547547
@Override
548548
public void modifyText(ModifyEvent e) {
549+
mTreeViewer.getControl().setRedraw(false);
550+
try {
551+
if (!mDefaultFilterText.equals(mTxtTreeFilter.getText())
552+
&& !Strings.isNullOrEmpty(mTxtTreeFilter.getText())) {
549553

550-
if (!mDefaultFilterText.equals(mTxtTreeFilter.getText())
551-
&& !Strings.isNullOrEmpty(mTxtTreeFilter.getText())) {
554+
if (!Arrays.asList(mTableViewer.getFilters()).contains(mTreeFilter)) {
555+
mTreeViewer.addFilter(mTreeFilter);
556+
}
552557

553-
if (!Arrays.asList(mTableViewer.getFilters()).contains(mTreeFilter)) {
554-
mTreeViewer.addFilter(mTreeFilter);
558+
mTreeViewer.refresh();
559+
mTreeViewer.expandAll();
560+
} else {
561+
mTreeViewer.removeFilter(mTreeFilter);
562+
mTreeViewer.refresh();
555563
}
556-
557-
mTreeViewer.refresh();
558-
mTreeViewer.expandAll();
559-
} else {
560-
mTreeViewer.removeFilter(mTreeFilter);
561-
mTreeViewer.refresh();
564+
} finally {
565+
mTreeViewer.getControl().setRedraw(true);
562566
}
563567
}
564568

0 commit comments

Comments
 (0)