Community
Participate
Working Groups
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 ... ```
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.
*** This bug has been marked as a duplicate of bug 558782 ***