diff --git a/src/main/java/com/chrisrm/idea/MTTabsPainterPatcher.java b/src/main/java/com/chrisrm/idea/MTTabsPainterPatcher.java index f9d45dd54..27bc35aff 100644 --- a/src/main/java/com/chrisrm/idea/MTTabsPainterPatcher.java +++ b/src/main/java/com/chrisrm/idea/MTTabsPainterPatcher.java @@ -14,13 +14,11 @@ import com.intellij.util.messages.MessageBus; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; -import net.sf.cglib.proxy.MethodProxy; import org.jetbrains.annotations.NotNull; import java.awt.*; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Method; import java.util.Properties; /** @@ -71,23 +69,23 @@ private void patchPainter(JBEditorTabs component) { if (painter instanceof MTTabsPainter) return; final MTTabsPainter tabsPainter = new MTTabsPainter(component); - final JBEditorTabsPainter proxy = (MTTabsPainter) Enhancer.create(MTTabsPainter.class, new MethodInterceptor() { - @Override - public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { - final Object result = method.invoke(tabsPainter, objects); - - if ("paintSelectionAndBorder".equals(method.getName())) { - final Graphics2D g2d = (Graphics2D) objects[0]; - final Rectangle rect = (Rectangle) objects[1]; + Enhancer e = new Enhancer(); + e.setSuperclass(MTTabsPainter.class); + e.setCallback((MethodInterceptor) (o, method, objects, methodProxy) -> { + final Object result = method.invoke(tabsPainter, objects); - g2d.setColor(ColorUtil.fromHex("#" + properties.getProperty("material.tab.borderColor"))); - g2d.fillRect(rect.x, rect.y + rect.height - 2, rect.width, 2); - } + if ("paintSelectionAndBorder".equals(method.getName())) { + final Graphics2D g2d = (Graphics2D) objects[0]; + final Rectangle rect = (Rectangle) objects[1]; - return result; + g2d.setColor(ColorUtil.fromHex("#" + properties.getProperty("material.tab.borderColor"))); + g2d.fillRect(rect.x, rect.y + rect.height - 2, rect.width, 2); } + + return result; }); + final JBEditorTabsPainter proxy = (MTTabsPainter) e.create(new Class[] {JBEditorTabs.class}, new Object[] {component}); ReflectionUtil.setField(JBEditorTabs.class, component, JBEditorTabsPainter.class, "myDarkPainter", proxy); }