Merge pull request #8686 from deathbeam/cursor-proxy
Use proxy methods for setting cursor via ClientUI
This commit is contained in:
@@ -25,11 +25,7 @@
|
|||||||
package net.runelite.client.plugins.customcursor;
|
package net.runelite.client.plugins.customcursor;
|
||||||
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.awt.Cursor;
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Toolkit;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.swing.JPanel;
|
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
@@ -65,7 +61,7 @@ public class CustomCursorPlugin extends Plugin
|
|||||||
@Override
|
@Override
|
||||||
protected void shutDown()
|
protected void shutDown()
|
||||||
{
|
{
|
||||||
clientUI.getContainer().setCursor(Cursor.getDefaultCursor());
|
clientUI.resetCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -79,11 +75,7 @@ public class CustomCursorPlugin extends Plugin
|
|||||||
|
|
||||||
private void updateCursor()
|
private void updateCursor()
|
||||||
{
|
{
|
||||||
JPanel container = clientUI.getContainer();
|
|
||||||
CustomCursor selectedCursor = config.selectedCursor();
|
CustomCursor selectedCursor = config.selectedCursor();
|
||||||
|
clientUI.setCursor(selectedCursor.getCursorImage(), selectedCursor.toString());
|
||||||
Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(selectedCursor.getCursorImage(),
|
|
||||||
new Point(container.getX(), container.getY()), selectedCursor.toString());
|
|
||||||
container.setCursor(cursor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,6 +37,7 @@ import java.awt.Graphics2D;
|
|||||||
import java.awt.GraphicsConfiguration;
|
import java.awt.GraphicsConfiguration;
|
||||||
import java.awt.LayoutManager;
|
import java.awt.LayoutManager;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.Toolkit;
|
||||||
import java.awt.TrayIcon;
|
import java.awt.TrayIcon;
|
||||||
import java.awt.event.InputEvent;
|
import java.awt.event.InputEvent;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
@@ -110,9 +111,6 @@ public class ClientUI
|
|||||||
@Getter
|
@Getter
|
||||||
private TrayIcon trayIcon;
|
private TrayIcon trayIcon;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private JPanel container;
|
|
||||||
|
|
||||||
private final RuneLiteProperties properties;
|
private final RuneLiteProperties properties;
|
||||||
private final RuneLiteConfig config;
|
private final RuneLiteConfig config;
|
||||||
private final KeyManager keyManager;
|
private final KeyManager keyManager;
|
||||||
@@ -133,6 +131,7 @@ public class ClientUI
|
|||||||
private JButton currentButton;
|
private JButton currentButton;
|
||||||
private NavigationButton currentNavButton;
|
private NavigationButton currentNavButton;
|
||||||
private boolean sidebarOpen;
|
private boolean sidebarOpen;
|
||||||
|
private JPanel container;
|
||||||
private NavigationButton sidebarNavigationButton;
|
private NavigationButton sidebarNavigationButton;
|
||||||
private JButton sidebarNavigationJButton;
|
private JButton sidebarNavigationJButton;
|
||||||
private Dimension lastClientSize;
|
private Dimension lastClientSize;
|
||||||
@@ -603,6 +602,38 @@ public class ClientUI
|
|||||||
giveClientFocus();
|
giveClientFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes cursor for client window. Requires ${@link ClientUI#open(RuneLite)} to be called first.
|
||||||
|
* FIXME: This is working properly only on Windows, Linux and Mac are displaying cursor incorrectly
|
||||||
|
* @param image cursor image
|
||||||
|
* @param name cursor name
|
||||||
|
*/
|
||||||
|
public void setCursor(final BufferedImage image, final String name)
|
||||||
|
{
|
||||||
|
if (container == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final java.awt.Point hotspot = new java.awt.Point(container.getX(), container.getY());
|
||||||
|
final Cursor cursorAwt = Toolkit.getDefaultToolkit().createCustomCursor(image, hotspot, name);
|
||||||
|
container.setCursor(cursorAwt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets client window cursor to default one.
|
||||||
|
* @see ClientUI#setCursor(BufferedImage, String)
|
||||||
|
*/
|
||||||
|
public void resetCursor()
|
||||||
|
{
|
||||||
|
if (container == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
container.setCursor(Cursor.getDefaultCursor());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get offset of game canvas in game window
|
* Get offset of game canvas in game window
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user