Updating LAF causes issues down the road
binarynoise opened this issue · comments
binarynoise commented
Occurs on every startup, but changing still works. Maybe too early?
java.lang.NullPointerException
at com.intellij.openapi.wm.impl.IdeRootPane.updateStatusBarVisibility(IdeRootPane.kt:387)
at com.intellij.openapi.wm.impl.IdeRootPane.uiSettingsChanged(IdeRootPane.kt:452)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
at jdk.proxy2/jdk.proxy2.$Proxy25.uiSettingsChanged(Unknown Source)
at com.intellij.ide.ui.UISettings.fireUISettingsChanged(UISettings.kt:672)
at com.intellij.ide.ui.laf.LafManagerImpl.setLookAndFeelImpl(LafManagerImpl.kt:539)
at com.intellij.ide.ui.laf.LafManagerImpl.setCurrentLookAndFeel(LafManagerImpl.kt:516)
at com.intellij.ide.ui.LafManager.setCurrentLookAndFeel(LafManager.java:40)
at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:102)
at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:93)
at com.github.weisj.darkmode.AutoDarkMode.updateLaf(AutoDarkMode.kt:108)
at com.github.weisj.darkmode.AutoDarkMode.access$updateLaf(AutoDarkMode.kt:43)
at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:87)
at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:83)
at com.github.weisj.darkmode.AutoDarkMode.scheduleRequest$lambda$1(AutoDarkMode.kt:120)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:249)
at com.intellij.util.Alarm$Request.runSafely(Alarm.java:365)
at com.intellij.util.Alarm$Request.run(Alarm.java:354)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:456)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:122)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:571)
at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571)
at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Jannis Weis commented
What version of IntelliJ are you using. What plugin version do you have?
I’m not sure there is a mechanism to reliably defer the LaF change to a point where I can be sure it is safe to do so. Notably the LaF change is already invoked in a deferred manner, for which IntelliJ itself should decide when it is safe to execute.