Files
runelite/runelite-mixins/src/main/java/net/runelite/mixins/RSCanvasMixin.java
zeruth e4d6e9fe13 Port Injector to main layout
Adds deobfuscator
Adds injected-client
Adds injector-plugin
Adds runescape-client

Replaces RL's apis

Small bug with sprites atm, will be resolved soon. tired af.

Builds, probably
2019-06-08 05:43:03 -04:00

69 lines
1.5 KiB
Java

package net.runelite.mixins;
import java.awt.Canvas;
import java.awt.event.FocusListener;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSCanvas;
import net.runelite.rs.api.RSClient;
@Mixin(RSCanvas.class)
public abstract class RSCanvasMixin extends Canvas implements RSCanvas
{
@Shadow("client")
private static RSClient client;
// This is inverted because it is false initialized.
@Inject
private static boolean shouldNotHaveFocus;
@Inject
@Override
public void removeFocusListener(FocusListener l)
{
super.removeFocusListener(l);
shouldNotHaveFocus = !this.hasFocus();
}
@Inject
@Override
public void requestFocus()
{
// Runescape requests focus whenever the window is resized. Because of this, PluginPanels cannot have focus
// if they cause the sidebar to expand. This change prevents Runescape from requesting focus whenever it wants
if (!shouldNotHaveFocus)
{
this.requestFocusInWindow();
}
}
@Inject
@Override
public void setSize(int width, int height)
{
if (client.isStretchedEnabled())
{
super.setSize(client.getStretchedDimensions().width, client.getStretchedDimensions().height);
}
else
{
super.setSize(width, height);
}
}
@Inject
@Override
public void setLocation(int x, int y)
{
if (client.isStretchedEnabled())
{
super.setLocation((getParent().getWidth() - client.getStretchedDimensions().width) / 2, 0);
}
else
{
super.setLocation(x, y);
}
}
}