Merge pull request #3000 from swazrgb/overlay-focusable

client: Make overlays aware of mouse focus
This commit is contained in:
ThatGamerBlue
2021-06-12 17:34:43 +01:00
committed by GitHub
2 changed files with 34 additions and 0 deletions

View File

@@ -97,6 +97,14 @@ public abstract class Overlay implements LayoutableRenderableEntity
{ {
} }
public void onMouseEnter()
{
}
public void onMouseExit()
{
}
/** /**
* Called when an overlay is dragged onto this, if dragTargetable is true. * Called when an overlay is dragged onto this, if dragTargetable is true.
* Return true to consume the mouse event and prevent the other * Return true to consume the mouse event and prevent the other

View File

@@ -107,6 +107,10 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
private boolean isResizeable; private boolean isResizeable;
private OverlayBounds emptySnapCorners, snapCorners; private OverlayBounds emptySnapCorners, snapCorners;
// focused overlay
private Overlay focusedOverlay;
private Overlay prevFocusedOverlay;
@Inject @Inject
private OverlayRenderer( private OverlayRenderer(
final Client client, final Client client,
@@ -174,6 +178,14 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
{ {
menuEntries = null; menuEntries = null;
if (focusedOverlay == null && prevFocusedOverlay != null)
{
prevFocusedOverlay.onMouseExit();
}
prevFocusedOverlay = focusedOverlay;
focusedOverlay = null;
if (client.getGameState() == GameState.LOGGED_IN) if (client.getGameState() == GameState.LOGGED_IN)
{ {
@@ -352,6 +364,20 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
menuEntries = createRightClickMenuEntries(overlay); menuEntries = createRightClickMenuEntries(overlay);
} }
if (focusedOverlay == null)
{
focusedOverlay = overlay;
if (focusedOverlay != prevFocusedOverlay)
{
if (prevFocusedOverlay != null)
{
prevFocusedOverlay.onMouseExit();
}
overlay.onMouseEnter();
}
}
overlay.onMouseOver(); overlay.onMouseOver();
} }
} }