Bug 433858 - [CSS] Trees sometimes don't redraw and leave cheese in Navigator
Summary: [CSS] Trees sometimes don't redraw and leave cheese in Navigator
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.4   Edit
Hardware: PC Windows 7
: P3 major with 1 vote (vote)
Target Milestone: 4.4 RC1   Edit
Assignee: Daniel Rolka CLA
QA Contact: Daniel Rolka CLA
URL:
Whiteboard:
Keywords:
: 431048 (view as bug list)
Depends on: 376936
Blocks: 435024 435061
  Show dependency tree
 
Reported: 2014-04-30 10:36 EDT by Markus Keller CLA
Modified: 2021-06-13 08:02 EDT (History)
8 users (show)

See Also:
pwebster: review+


Attachments
Screenshot (27.42 KB, image/png)
2014-04-30 10:36 EDT, Markus Keller CLA
no flags Details
CheeseIssueSimulator (3.58 KB, text/plain)
2014-05-12 04:02 EDT, Daniel Rolka CLA
no flags Details
Fix (753 bytes, application/octet-stream)
2014-05-15 11:19 EDT, Dani Megert CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2014-04-30 10:36:25 EDT
Created attachment 242548 [details]
Screenshot

OK up to I20140218-0800
Broken in N20140218-2000, I20140225-0800, and later

Trees sometimes don't redraw and leave cheese in Navigator and Git Staging views.

Steps:
- new workspace, close Welcome
- paste this snippet into Package Explorer:

package p;
public class C {
	public static void main(String[] args) {
		int i= 2;
		System.out.println(i);
	}
}

- Show In > Navigator
- click the Problems view tab
- click "C.java" in the Navigator view
=> Only "C.java" is rendered, the rest of the Navigator view shows cheese (white background colors; in some recent I-builds even the blue "view background" color)

When I revert the fix for bug 422894 (e58f1c7d25caff77c8f2028da69e2df87a9685c0), then the cheese is replaced by a flash of the whole Navigator view.
Comment 1 Markus Keller CLA 2014-04-30 10:39:17 EDT
The same effect sometimes also shows up in the Git Staging view when I select a file. It doesn't always show up when giving focus to an affected view. I've never seen it in views that use custom draw (Package Explorer, Project Explorer, Outline, ...).
Comment 2 Brian de Alwis CLA 2014-04-30 11:24:27 EDT
Weird.  I suspect this is a problem in SWT where setting a background isn't triggering a redraw on the children.

I've seen problems like this when running an inner instance from within Eclipse on OSX, but I have never in the outer instance.  (There are a few oddities like this in the inner instance e.g. bug 378202.)
Comment 3 Markus Keller CLA 2014-04-30 14:11:51 EDT
Really weird. Now, I can still reproduce the original problem after reverting the commit I cited in comment 0.

However, the problem really appears somewhere between I20140218-0800 and N20140218-2000.
Comment 4 Daniel Rolka CLA 2014-04-30 14:37:04 EDT
It can be affected by the changes introduced with the Bug 430829

Daniel
Comment 5 Brian de Alwis CLA 2014-04-30 16:07:54 EDT
I've reverted the changes for bug 422894 and bug 430829 and I can still reproduce.  Not as frequently, but it's still reproducible.  This problem seems to have something to do with event timing/ordering.

(And I can reproduce in the IDE itself with just the Resource Navigator and the Problems view.)

If I disable CSS properties (modify AbstactCSSEngine#applyStyles() to return immediately), the problem never occurs.  One of the properties is causing some kind of change, somehow.
Comment 6 Brian de Alwis CLA 2014-04-30 16:20:22 EDT
(In reply to Brian de Alwis from comment #5)
> I've reverted the changes for bug 422894 and bug 430829 and I can still
> reproduce.  Not as frequently, but it's still reproducible.  This problem
> seems to have something to do with event timing/ordering.

But restarting my debug image again, I now can't reproduce the problem.
Comment 7 Brian de Alwis CLA 2014-04-30 17:08:31 EDT
(In reply to Brian de Alwis from comment #6)
> (In reply to Brian de Alwis from comment #5)
> > I've reverted the changes for bug 422894 and bug 430829 and I can still
> > reproduce.  Not as frequently, but it's still reproducible.  This problem
> > seems to have something to do with event timing/ordering.
> 
> But restarting my debug image again, I now can't reproduce the problem.

I had just finished preparing a commit to revert the changes, and restarted my debugger and now see the problem again.  So this is not caused by the recent CSS performance changes.  Unfortunately I haven't yet figured out the cause.

I've pushed these reverts as a change to:

   https://git.eclipse.org/r/25825
Comment 8 Brian de Alwis CLA 2014-04-30 17:46:40 EDT
I've started hacking AbstractCSSEngine#applyCSSProperty() to filter out the different CSS rules being applied, and the key seems to be the "swt-unselected-tabs-color" property, applied by the CSSPropertyUnselectedTabsSWTHandler handler.  When provided a gradient, it continuously changes the CTabFolder's background.
Comment 9 Brian de Alwis CLA 2014-05-02 16:58:22 EDT
I have an easily reproducible scenario on Windows:

1. Open the Navigator view, find a Java file (the C.java in Markus' workflow above).
2. Double click the Java file to activate the editor.
3. Single click the Java file to bring focus back to the Navigator

What seems to be the problem is that there are two particular CSS properties that applied to the CTabFolder and the hosting Composite that change the background color, the CTabFolder's background gradient, and the background image.  One of these somehow messes up the Tree widget

If I cause the following properties to be skipped, then I don't see these cheese issues:

swt-unselected-tabs-color: #org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START #org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END 100.0% 100.0%

background-color: #org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START #org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END 100.0% 100.0%


What I see in my tracing is that these properties lead to the following changes:

swt-unselected-tabs-color: 

1399063807027[CTabFolder@28136669] setBackground(Color[],int[],bool)
1399063807027[CTabFolder@28136669] setBackground(Color)
1399063807027[CTabFolder@28136669] setBackground(Color)
1399063807027[Composite@26920745] setBackgroundImage()
1399063807027[Composite@26920745] setBackground(Color)
1399063807027[CTabFolder@28136669] CTabFolder#redraw(false)
1399063807027[CTabFolder@28136669] CTabFolder#redraw(false)

background-color:

1399063807027[Composite@26920745] setBackgroundImage()


I'm now seeing if I can recreate a similar sequence of events in a standalone SWT app.
Comment 10 Daniel Rolka CLA 2014-05-05 07:00:27 EDT
It is also broken in the 'classic' theme so it shouldn't be connected to the 'swt-unselected-tabs-color' property

Daniel
Comment 11 Daniel Rolka CLA 2014-05-05 08:07:02 EDT
It can be caused by the same issue as reported in the Bug 433723

Daniel
Comment 12 Eric Moffatt CLA 2014-05-07 14:09:01 EDT
Daniel, take a look at bug 401633 comment #2. Could this be part of this issue ?
Comment 13 Daniel Rolka CLA 2014-05-08 05:09:04 EDT
(In reply to Eric Moffatt from comment #12)
> Daniel, take a look at bug 401633 comment #2. Could this be part of this
> issue ?

Unfortunately it doesn't fix the issue

Anyway thanks for the clue, 
Daniel
Comment 14 Daniel Rolka CLA 2014-05-08 05:47:10 EDT
The issue seems to be caused by the patch for the Bug 408849, the line:

				if (pStack != null)
					styleElement(pStack, true);

Skipping the 'styleElement' method invocation solves the issue

I will continue my investigation,
Daniel
Comment 15 Daniel Rolka CLA 2014-05-08 05:53:58 EDT
(In reply to Daniel Rolka from comment #14)
> The issue seems to be caused by the patch for the Bug 408849, the line:
> 
> 				if (pStack != null)
> 					styleElement(pStack, true);
> 
> Skipping the 'styleElement' method invocation solves the issue

Skipping the mentioned line corrupts the styling of the MPartStack with the 'active' state so it is not the solution

Daniel
Comment 16 Wojciech Sudol CLA 2014-05-08 10:24:46 EDT
I am not able to reproduce the problem after reverting commit http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/?id=e58f1c7d25caff77c8f2028da69e2df87a9685c0 .
Tested with M7 + the latest sources and with build N20140212-2000 + commits up to 2014.02.18.
Comment 17 Daniel Rolka CLA 2014-05-08 10:57:12 EDT
(In reply to Wojciech Sudol from comment #16)
> I am not able to reproduce the problem after reverting commit
> http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> ?id=e58f1c7d25caff77c8f2028da69e2df87a9685c0 .
> Tested with M7 + the latest sources and with build N20140212-2000 + commits
> up to 2014.02.18.

(In reply to Daniel Rolka from comment #14)
> The issue seems to be caused by the patch for the Bug 408849, the line:
> 
> 				if (pStack != null)
> 					styleElement(pStack, true);
> 
> Skipping the 'styleElement' method invocation solves the issue
> 
> I will continue my investigation,
> Daniel

The issue is directly caused by the optimization used by the Navigator/TreeViewer related to the redrawing of the Tree when the selected child doesn't change. In such case only the selected item gets repainted. Without the commit 'e58f1c7d25caff77c8f2028da69e2df87a9685c0', pointed by Wojtek, we always reset the fonts of the Tree/TreeItems and invalidate the entire tree. So after this step the entire tree gets repainted (without producing the cheese)

We can expect similar issues modifying the CSS style sheets for the plugins that use similar improvements during handling the OnPaint events

I will prepare the patch for it,
Daniel
Comment 18 Daniel Rolka CLA 2014-05-09 05:05:36 EDT
(In reply to Daniel Rolka from comment #17)
> The issue is directly caused by the optimization used by the
> Navigator/TreeViewer related to the redrawing of the Tree when the selected
> child doesn't change. In such case only the selected item gets repainted.
> Without the commit 'e58f1c7d25caff77c8f2028da69e2df87a9685c0', pointed by
> Wojtek, we always reset the fonts of the Tree/TreeItems and invalidate the
> entire tree. So after this step the entire tree gets repainted (without
> producing the cheese)
> 
> We can expect similar issues modifying the CSS style sheets for the plugins
> that use similar improvements during handling the OnPaint events
> 
> I will prepare the patch for it,
> Daniel

I've prepared the first version of the patch the solves the issue - https://git.eclipse.org/r/#/c/26257/

However I will try to prepare another version of the patch that solves the issue in better manner.

Anyway, as I've mentioned in my previous comment, we have to be aware of the similar issues when we add/remove any rules from the CSS files that refresh the Widget's parent, but the Widget itself gets partially refreshed only (and we get the cheese).

Daniel
Comment 19 Markus Keller CLA 2014-05-09 08:29:18 EDT
Thanks Daniel and Brian for taking this forward.

I don't understand all of your problem analysis, but it sounds like there's also a bug in SWT. If you find a good workaround in Platform UI, then that's fine for Luna. But if you can nail it down to a problem in SWT, then please don't forget to file a bug so that the underlying problem can be fixed in Mars.
Comment 20 Brian de Alwis CLA 2014-05-09 12:38:38 EDT
(In reply to Wojciech Sudol from comment #16)
> I am not able to reproduce the problem after reverting commit
> http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> ?id=e58f1c7d25caff77c8f2028da69e2df87a9685c0 .
> Tested with M7 + the latest sources and with build N20140212-2000 + commits
> up to 2014.02.18.

As I mentioned in comment #7 I was able to reproduce these issues even after backing out the fixes.  It may occur more rarely, but it's still possible.

That particular commit prevents a significant UI regression seen on Linux GTK.  We don't see that behaviour in the IDE on Linux, but I have experienced it first hand with an RCP app with custom CSS.

I commented on Daniel's patch that a better approach IMHO is to put a Windows-specific fix in the CSS property implementations that sets the background to re-set the font so as to trigger a refresh.  It's only a workaround: SWT generally is pretty careful to avoid unnecessary work, so that setting the foreground/background to the same colour is a null-op, and the fact that setFont() doesn't perform such a check is an oversight.
Comment 21 Daniel Rolka CLA 2014-05-12 03:43:35 EDT
(In reply to Brian de Alwis from comment #20)
> (In reply to Wojciech Sudol from comment #16)
> > I am not able to reproduce the problem after reverting commit
> > http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> > ?id=e58f1c7d25caff77c8f2028da69e2df87a9685c0 .
> > Tested with M7 + the latest sources and with build N20140212-2000 + commits
> > up to 2014.02.18.
> 
> As I mentioned in comment #7 I was able to reproduce these issues even after
> backing out the fixes.  It may occur more rarely, but it's still possible.
> 

You have to be updated to the M7 or use the M7 build when you revert the fixes.
Without the M7 and the 'e58f1c7d25caff77c8f2028da69e2df87a9685c' commit the issue still occurs.

> That particular commit prevents a significant UI regression seen on Linux
> GTK.  We don't see that behaviour in the IDE on Linux, but I have
> experienced it first hand with an RCP app with custom CSS.
> 
> I commented on Daniel's patch that a better approach IMHO is to put a
> Windows-specific fix in the CSS property implementations that sets the
> background to re-set the font so as to trigger a refresh.  It's only a
> workaround: SWT generally is pretty careful to avoid unnecessary work, so
> that setting the foreground/background to the same colour is a null-op, and
> the fact that setFont() doesn't perform such a check is an oversight.

It is the more general issue and we shouldn't limit it to the Tree widget and the Windows platform only. I'm working on the better fix for it

Daniel
Comment 22 Daniel Rolka CLA 2014-05-12 04:02:45 EDT
Created attachment 242954 [details]
CheeseIssueSimulator

(In reply to Markus Keller from comment #19)
> I don't understand all of your problem analysis, but it sounds like there's
> also a bug in SWT

It is quite important to understand the root cause of the issue so let me try to explain it using the 'cheese simulator' example that replicates it and the description below.


How to generate the cheese with the CSS:

1) We have some plugin (i.e. Navigator) that improves the rendering operations. It is mainly done in order to improve the performance of displaying the GUI items or eliminate the flicking during redrawing it

2) We have some CSS rule that refreshes (repaints with the background color) the parent Widget (the 'TreePaintListener.redrawTree' method in our example)

3) During redrawing of the parent's children (the 'TreePaintListener.redrawTreeItems' method in our case) the optimization is used in order to improve the process (the 'TreePaintListener.getChildrenToDraw/if selected != null)' line in our case)

4) However we don't have another CSS rule/some place in the source code that skips the optimization from the previous step (bypasses the 'TreePaintListener.getChildrenToDraw/if (selected != previousSelected)' line in our example) and we get the gaps (cheese)


I don't know maybe it is caused by some SWT bug that works in this way,
Daniel
Comment 23 Daniel Rolka CLA 2014-05-12 09:15:33 EDT
OK, I've pushed the final version of the patch for the issue to Gerrit. Currently we support the Tree widgets only (I don't want to add other Widgets since they seem to be not affected with it. We can add it later, if needed)

It is the general solution that, I believe, allows us to forget about the issue during editing the CSS files (that I've mentioned in the #Comment 22/4)

When we confirm that it is the SWT issue I will file the proper SWT bug

thanks for review,
Daniel
Comment 24 Brian de Alwis CLA 2014-05-13 10:49:47 EDT
Great diagnosis.  There's some flicker from the redraw, but that's preferable to the alternative.
Comment 26 Dani Megert CLA 2014-05-14 06:21:28 EDT
(In reply to Brian de Alwis from comment #24)
> Great diagnosis.  There's some flicker from the redraw, but that's
> preferable to the alternative.

Yes, the current fix is an improvement (or better: workaround for the real issue) but the flickering still needs to be addressed because it affects every tree which does not use custom draw (e.g. 'Navigator' or 'Git Staging' view). And if a user has disabled 'Use mixed fonts and colors for labels', then he sees the flickering in all our tree-based views, like Package Explorer', 'Project Explorer' and 'Outline'.

Test Case:
1. select an item in the 'Navigator'
2. activate any other part
3. click on the previously selected item
==> whole view flashes
Comment 27 Daniel Rolka CLA 2014-05-14 06:33:36 EDT
(In reply to Dani Megert from comment #26)
> (In reply to Brian de Alwis from comment #24)
> > Great diagnosis.  There's some flicker from the redraw, but that's
> > preferable to the alternative.
> 
> Yes, the current fix is an improvement (or better: workaround for the real
> issue) but the flickering still needs to be addressed because it affects
> every tree which does not use custom draw (e.g. 'Navigator' or 'Git Staging'
> view). And if a user has disabled 'Use mixed fonts and colors for labels',
> then he sees the flickering in all our tree-based views, like Package
> Explorer', 'Project Explorer' and 'Outline'.
> 
> Test Case:
> 1. select an item in the 'Navigator'
> 2. activate any other part
> 3. click on the previously selected item
> ==> whole view flashes

Probably the optimization during rendering of the Tree, that I've mentioned in one of my comments (avoiding of redrawing the entire Tree when the selection didn't change), has been introduced to eliminate/reduce the flicking. The current patch produces one additional flick - during gaining the focus by the Tree

Daniel
Comment 28 Daniel Rolka CLA 2014-05-14 06:34:51 EDT
I think we should assign the flicking issue to the proper plugin i.e. Navigator

Daniel
Comment 29 Dani Megert CLA 2014-05-14 06:36:16 EDT
(In reply to Daniel Rolka from comment #28)
> I think we should assign the flicking issue to the proper plugin i.e.
> Navigator
> 
> Daniel

No! The flickering happens with every view that has no owner draw, or when it is disabled via preference.

Also note that the flickering only happens when one selects the previously selected item. Clicking another item or giving focus by clicking the view tab does not cause the flickering.
Comment 30 Daniel Rolka CLA 2014-05-14 11:36:56 EDT
(In reply to Dani Megert from comment #29)
> (In reply to Daniel Rolka from comment #28)
> > I think we should assign the flicking issue to the proper plugin i.e.
> > Navigator
> > 
> > Daniel
> 
> No! The flickering happens with every view that has no owner draw, or when
> it is disabled via preference.
> 
> Also note that the flickering only happens when one selects the previously
> selected item. Clicking another item or giving focus by clicking the view
> tab does not cause the flickering.

All what I can do in terms of flicking is another workaround - https://git.eclipse.org/r/#/c/26530/

Unfortunately flicking during redrawing seems to be the OS specific issue. I think we should consider some double buffering solution on the SWT site what would be good for all SWT users.

I was not able to eliminate it with any 'redraw' related SWT method. Basically we need the redraw in order to fix the refreshing issues connected to the overriding of the Widget's properties via CSS. Adding some artificial CSS rules just to refresh the Widget is not an option according to me

Daniel
Comment 31 Dani Megert CLA 2014-05-15 09:56:08 EDT
(In reply to Daniel Rolka from comment #30)
> (In reply to Dani Megert from comment #29)
> > (In reply to Daniel Rolka from comment #28)
> > > I think we should assign the flicking issue to the proper plugin i.e.
> > > Navigator
> > > 
> > > Daniel
> > 
> > No! The flickering happens with every view that has no owner draw, or when
> > it is disabled via preference.
> > 
> > Also note that the flickering only happens when one selects the previously
> > selected item. Clicking another item or giving focus by clicking the view
> > tab does not cause the flickering.
> 
> All what I can do in terms of flicking is another workaround -
> https://git.eclipse.org/r/#/c/26530/

That doesn't work for me: still flickers.
Comment 32 Paul Webster CLA 2014-05-15 10:57:53 EDT
I don't see a problem on linux with master (no flickering).  I don't see a problem on linux even if I revert http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/?id=052d5d66f0a1b483abcc639dc36dfb9820a326dc

What's the next step here?  If https://git.eclipse.org/r/#/c/26530/ doesn't address the flickering for you Dani, does it make it better?

Or do we throw out 052d5d66f0a1b483abcc639dc36dfb9820a326dc and try and modify the original change to only target linux?

PW
Comment 33 Dani Megert CLA 2014-05-15 11:19:20 EDT
Created attachment 243132 [details]
Fix

(In reply to Paul Webster from comment #32)
> I don't see a problem on linux with master (no flickering).  I don't see a
> problem on linux even if I revert
> http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> ?id=052d5d66f0a1b483abcc639dc36dfb9820a326dc
> 
> What's the next step here?  If https://git.eclipse.org/r/#/c/26530/ doesn't
> address the flickering for you Dani, does it make it better?
> 
> Or do we throw out 052d5d66f0a1b483abcc639dc36dfb9820a326dc and try and
> modify the original change to only target linux?
> 
> PW

The fix is as follows:
1. revert 052d5d66f0a1b483abcc639dc36dfb9820a326dc
2. apply this patch
Comment 34 Dani Megert CLA 2014-05-15 11:20:53 EDT
(In reply to Dani Megert from comment #33)
> The fix is as follows:
> 1. revert 052d5d66f0a1b483abcc639dc36dfb9820a326dc
> 2. apply this patch

Paul, can you review it and verify that bug 422894 is still fixed on Linux?
Thanks.
Comment 35 Daniel Rolka CLA 2014-05-15 11:58:23 EDT
I've opened the SWT bug for the flicking issue - Bug 434980. I think the patch on the SWT site will allow us to simplify our implementation/improve performance (we will be able to get rid of any workarounds that we have now for it)

Daniel
Comment 36 Paul Webster CLA 2014-05-15 11:58:46 EDT
(In reply to Dani Megert from comment #34)
> (In reply to Dani Megert from comment #33)
> > The fix is as follows:
> > 1. revert 052d5d66f0a1b483abcc639dc36dfb9820a326dc
> > 2. apply this patch
> 
> Paul, can you review it and verify that bug 422894 is still fixed on Linux?
> Thanks.

OK, I've tested with this scenario.

1. I tested Bug 422894 comment #4 and the font mentioned there is definitely being applied, and there's no problem clicking on an item that both activates the part and selects that item

2. I can't reproduce the scenario in this bug

3. I can't see any flickering in the Project Explorer or Navigator in any of my test scenarios.

Dani, do you want me to push this fix up?

PW
Comment 37 Dani Megert CLA 2014-05-15 12:00:34 EDT
(In reply to Paul Webster from comment #36)
> Dani, do you want me to push this fix up?
> 
> PW

Yes, please go ahead.
Comment 39 Daniel Rolka CLA 2014-05-16 03:11:20 EDT
(In reply to Paul Webster from comment #38)
> Reverted old fix with
> http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> ?id=680b7c130ca69e04ead87965de22b4ec855cf0f0 and applied new fix with
> http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> ?id=0402ebd10a57f9c2ca5cd2da3479470f98f70973
> 
> PW

It is the workaround that only hides the cheese issue. I agree that it is the best option for now since we are late in the 4.4 release. However I would skip the bug opened and move it to the 4.5 release. When the Bug 434980 gets fixed we can fix the issue in the proper way (applying all reverted patches including the 052d5d66f0a1b483abcc639dc36dfb9820a326dc one and maybe add some additional code if needed)

In the Eclipse 3.x we were be able quite easy to control redrawing of the Widgets and eliminate refreshing/flicking issues by proper optimizations. Now when we added the new external layer - the CSS engine - and we modify plenty of SWT properties "externally", our control of refreshing/flicking issues is limited. The current workaround works fine for us, but someone can add some new CSS rule to their customized style sheet and the flicking will be back, So we have to have proper guards in the CSS engine in order to avoid it

Daniel
Comment 40 Dani Megert CLA 2014-05-16 03:13:40 EDT
(In reply to Daniel Rolka from comment #39)
> (In reply to Paul Webster from comment #38)
> > Reverted old fix with
> > http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> > ?id=680b7c130ca69e04ead87965de22b4ec855cf0f0 and applied new fix with
> > http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/
> > ?id=0402ebd10a57f9c2ca5cd2da3479470f98f70973
> > 
> > PW
> 
> However I
> would skip the bug opened and move it to the 4.5 release. When the Bug
> 434980 gets fixed we can fix the issue in the proper way

Please open a new bug report that describes the current state and make it depend on bug 434980. Thanks.
Comment 41 Dani Megert CLA 2014-05-16 07:54:05 EDT
Verified in I20140515-1230.

The fix is not optimal, but so far we haven't found a better one. We will have to fix this during Mars via bug 435024.
Comment 42 Dani Megert CLA 2014-05-16 09:01:05 EDT
(In reply to Dani Megert from comment #41)
> Verified in I20140515-1230.
> 
> The fix is not optimal, but so far we haven't found a better one.

Bug 435061 contains a significant improvement (less redraws).
Comment 43 Markus Keller CLA 2014-05-21 06:39:00 EDT
The cheese in the trees in the Git Staging view is still there and doesn't seem to be affected by these changes. Opened bug 435377 for that.
Comment 44 Daniel Rolka CLA 2014-05-22 11:26:57 EDT
OK, I think I've found the root cause of the cheese issues:

Since some bug in the Windows OS there is a workaround in the Tree class and during gaining the focus the current selection on the Tree has to be redrawn - line 7131 in the Tree class (if (redraw) redrawSelection ();). It seems the 'redrawSelection' call produces the cheese in Navigator

In order to verify it I've recreated the cheese issue by removing the 'Control.setRedraw' invocations from the CSSPropertyFontSWTHandler class (lines 63 and 69). Next I've skipped the 'Tree.redrawSelection' call by the following modification of the TreeViewer class (lines 124 till 126):

public TreeViewer(Composite parent, int style) {
  this(new Tree(parent, style & ~SWT.MULTI));
}

After applying the changes above the cheese is gone. I will open the proper SWT bug for it

With the Git staging view will be the same story

Daniel
Comment 45 Daniel Rolka CLA 2014-05-22 11:36:50 EDT
The flicking issue mentioned in the #Comment 29 is produced by removing the Control.setRedraw calls from the CSSPropertyFontSWTHandler class.

The Package explorer works fine since it uses the 'setRedraw' calls internally and some redraw operations get skipped. Hence the flicking as well as the cheese issue is fixed/hidden

Daniel
Comment 46 Daniel Rolka CLA 2014-05-22 11:50:38 EDT
(In reply to Daniel Rolka from comment #44) 
> After applying the changes above the cheese is gone. I will open the proper
> SWT bug for it

I've opened the Bug 435536 for it

Daniel
Comment 47 Dani Megert CLA 2014-05-26 08:48:42 EDT
*** Bug 431048 has been marked as a duplicate of this bug. ***
Comment 48 Wojciech Sudol CLA 2015-01-22 09:44:26 EST
This issue seems to still occur in Eclipse 4.4, see bug 458015.
Comment 49 chidveer chinthakuntla CLA 2018-04-13 18:53:14 EDT
This is not fixed.
please consider reopen.
Check the comments in 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=458015
https://bugs.eclipse.org/bugs/show_bug.cgi?id=533555

Even the editor tabs disappear.
Comment 50 Dani Megert CLA 2018-04-15 12:38:36 EDT
(In reply to chidveer chinthakuntla from comment #49)
> This is not fixed.
> please consider reopen.
> Check the comments in 
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=458015
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=533555
> 
> Even the editor tabs disappear.

Let's track that by the above bugs.