Bug 577472 - Dark Theme resets the Text Editor "foreground color", ignoring preference settings
Summary: Dark Theme resets the Text Editor "foreground color", ignoring preference set...
Status: CLOSED DUPLICATE of bug 558782
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.21   Edit
Hardware: All All
: P3 major with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Platform-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-11-25 14:44 EST by Mickael Istria CLA
Modified: 2021-12-16 12:28 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mickael Istria CLA 2021-11-25 14:44:24 EST
To reproduce
1. Open a file in the basic text editor (without any syntax highlighting)
2. Go to Preferences > General > Editor > Text Editors; change the "Foreground Color"; Apply and Close
  => See color changed in editor
3. move focus to another widget or window
  => EXPECTED: Text Color remains the same
  => GOT: Text Color modified.

a stacktrace to explain that change is
```
Thread [main] (Suspended (breakpoint at line 9279 in StyledText))	
	StyledText.setForeground(Color) line: 9279	
	CSSSWTColorHelper.setForeground(Control, Color) line: 366	
	CSSPropertyTextSWTHandler.applyCSSPropertyColor(Object, CSSValue, String, CSSEngine) line: 75	
	CSSPropertyTextSWTHandler(AbstractCSSPropertyTextHandler).applyCSSProperty(Object, String, CSSValue, String, CSSEngine) line: 34	
	CSSPropertyTextSWTHandler.applyCSSProperty(Object, String, CSSValue, String, CSSEngine) line: 41	
	CSSSWTEngineImpl(AbstractCSSEngine).applyCSSProperty(Object, String, CSSValue, String) line: 746	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyleDeclaration(Object, CSSStyleDeclaration, String) line: 552	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 426	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	AbstractCSSEngine.lambda$0(BiConsumer, boolean, Node) line: 258	
	0x00000001004337a0.accept(Object) line: not available	
	ForEachOps$ForEachOp$OfRef<T>.accept(T) line: 183	
	ReferencePipeline$3$1.accept(P_OUT) line: 197	
	Spliterators$ArraySpliterator<T>.forEachRemaining(Consumer<? super T>) line: 948	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).copyInto(Sink<P_IN>, Spliterator<P_IN>) line: 484	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).wrapAndCopyInto(S, Spliterator<P_IN>) line: 474	
	ForEachOps$ForEachOp$OfRef<T>(ForEachOps$ForEachOp<T>).evaluateSequential(PipelineHelper<T>, Spliterator<S>) line: 150	
	ForEachOps$ForEachOp$OfRef<T>.evaluateSequential(PipelineHelper, Spliterator) line: 173	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).evaluate(TerminalOp<E_OUT,R>) line: 234	
	ReferencePipeline$3(ReferencePipeline<P_IN,P_OUT>).forEach(Consumer<? super P_OUT>) line: 596	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 257	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	AbstractCSSEngine.lambda$0(BiConsumer, boolean, Node) line: 258	
	0x00000001004337a0.accept(Object) line: not available	
	ForEachOps$ForEachOp$OfRef<T>.accept(T) line: 183	
	ReferencePipeline$3$1.accept(P_OUT) line: 197	
	Spliterators$ArraySpliterator<T>.forEachRemaining(Consumer<? super T>) line: 948	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).copyInto(Sink<P_IN>, Spliterator<P_IN>) line: 484	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).wrapAndCopyInto(S, Spliterator<P_IN>) line: 474	
	ForEachOps$ForEachOp$OfRef<T>(ForEachOps$ForEachOp<T>).evaluateSequential(PipelineHelper<T>, Spliterator<S>) line: 150	
	ForEachOps$ForEachOp$OfRef<T>.evaluateSequential(PipelineHelper, Spliterator) line: 173	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).evaluate(TerminalOp<E_OUT,R>) line: 234	
	ReferencePipeline$3(ReferencePipeline<P_IN,P_OUT>).forEach(Consumer<? super P_OUT>) line: 596	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 257	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	AbstractCSSEngine.lambda$0(BiConsumer, boolean, Node) line: 258	
	0x00000001004337a0.accept(Object) line: not available	
	ForEachOps$ForEachOp$OfRef<T>.accept(T) line: 183	
	ReferencePipeline$3$1.accept(P_OUT) line: 197	
	Spliterators$ArraySpliterator<T>.forEachRemaining(Consumer<? super T>) line: 948	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).copyInto(Sink<P_IN>, Spliterator<P_IN>) line: 484	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).wrapAndCopyInto(S, Spliterator<P_IN>) line: 474	
	ForEachOps$ForEachOp$OfRef<T>(ForEachOps$ForEachOp<T>).evaluateSequential(PipelineHelper<T>, Spliterator<S>) line: 150	
	ForEachOps$ForEachOp$OfRef<T>.evaluateSequential(PipelineHelper, Spliterator) line: 173	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).evaluate(TerminalOp<E_OUT,R>) line: 234	
	ReferencePipeline$3(ReferencePipeline<P_IN,P_OUT>).forEach(Consumer<? super P_OUT>) line: 596	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 257	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	AbstractCSSEngine.lambda$0(BiConsumer, boolean, Node) line: 258	
	0x00000001004337a0.accept(Object) line: not available	
	ForEachOps$ForEachOp$OfRef<T>.accept(T) line: 183	
	ReferencePipeline$3$1.accept(P_OUT) line: 197	
	Spliterators$ArraySpliterator<T>.forEachRemaining(Consumer<? super T>) line: 948	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).copyInto(Sink<P_IN>, Spliterator<P_IN>) line: 484	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).wrapAndCopyInto(S, Spliterator<P_IN>) line: 474	
	ForEachOps$ForEachOp$OfRef<T>(ForEachOps$ForEachOp<T>).evaluateSequential(PipelineHelper<T>, Spliterator<S>) line: 150	
	ForEachOps$ForEachOp$OfRef<T>.evaluateSequential(PipelineHelper, Spliterator) line: 173	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).evaluate(TerminalOp<E_OUT,R>) line: 234	
	ReferencePipeline$3(ReferencePipeline<P_IN,P_OUT>).forEach(Consumer<? super P_OUT>) line: 596	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 257	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	AbstractCSSEngine.lambda$0(BiConsumer, boolean, Node) line: 258	
	0x00000001004337a0.accept(Object) line: not available	
	ForEachOps$ForEachOp$OfRef<T>.accept(T) line: 183	
	ReferencePipeline$3$1.accept(P_OUT) line: 197	
	Spliterators$ArraySpliterator<T>.forEachRemaining(Consumer<? super T>) line: 948	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).copyInto(Sink<P_IN>, Spliterator<P_IN>) line: 484	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).wrapAndCopyInto(S, Spliterator<P_IN>) line: 474	
	ForEachOps$ForEachOp$OfRef<T>(ForEachOps$ForEachOp<T>).evaluateSequential(PipelineHelper<T>, Spliterator<S>) line: 150	
	ForEachOps$ForEachOp$OfRef<T>.evaluateSequential(PipelineHelper, Spliterator) line: 173	
	ReferencePipeline$3(AbstractPipeline<E_IN,E_OUT,S>).evaluate(TerminalOp<E_OUT,R>) line: 234	
	ReferencePipeline$3(ReferencePipeline<P_IN,P_OUT>).forEach(Consumer<? super P_OUT>) line: 596	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 257	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	0x0000000100433568.accept(Object, Object) line: not available	
	CSSSWTEngineImpl(AbstractCSSEngine).processNodeList(NodeList, BiConsumer<Node,Boolean>, boolean) line: 263	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean, boolean) line: 443	
	CSSSWTEngineImpl(AbstractCSSEngine).applyStyles(Object, boolean) line: 374	
	ThemeEngine.applyStyles(Object, boolean) line: 553	
	PartRenderingEngine$7.setClassnameAndId(Object, String, String) line: 1319	
	WBWRenderer(SWTPartRenderer).setCSSInfo(MUIElement, Object) line: 114	
	WBWRenderer.updateNonFocusState(int, MWindow) line: 616	
...
```
Comment 1 Mickael Istria CLA 2021-11-25 14:59:02 EST
Forgot to mention that this is only happening with the Dark Theme.
The reason is that the e4-dark_globalstyle.css does hardcode a lot of colors instead of just changing the usual colors preferences and letting the platform honor those preferences, letting users tweak them.
Comment 2 Mickael Istria CLA 2021-12-16 12:28:29 EST

*** This bug has been marked as a duplicate of bug 558782 ***