Hide overlayed messages when mouse is moved on top of them to allow

clicks.
dev
sigonasr2 8 years ago
parent 992be31560
commit 91c0d907ae
  1. BIN
      sigIRCv2.jar
  2. 22
      src/sig/MyPanel.java
  3. 20
      src/sig/ScrollingText.java
  4. 4
      src/sig/TwitchEmote.java
  5. 1
      src/sig/sigIRC.java

Binary file not shown.

@ -13,6 +13,7 @@ import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
@ -26,6 +27,8 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
final public static Font programFont = new Font(sigIRC.messageFont,0,24);
final public static Font userFont = new Font(sigIRC.usernameFont,0,16);
final public static Font smallFont = new Font(sigIRC.touhoumotherConsoleFont,0,12);
int lastMouseX = 0;
int lastMouseY = 0;
public MyPanel() {
//setBorder(BorderFactory.createLineBorder(Color.black));
@ -41,19 +44,30 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
super.paintComponent(g);
// Draw Text
//int counter=18;
for (int i=0;i<sigIRC.twitchemoticons.size();i++) {
if (sigIRC.twitchemoticons.get(i).isActive()) {
if (sigIRC.twitchemoticons.get(i).isActive() &&
sigIRC.twitchemoticons.get(i).textRefIsVisible()) {
sigIRC.twitchemoticons.get(i).draw(g);
} else {
break;
}
}
if (sigIRC.window!=null && sigIRC.window.getMousePosition(true)!=null && sigIRC.overlayMode) {
lastMouseX = (int)sigIRC.window.getMousePosition(true).getX();
lastMouseY = (int)sigIRC.window.getMousePosition(true).getY();
}
//System.out.println("("+lastMouseX+","+lastMouseY+")");
for (int i=0;i<sigIRC.textobj.size();i++) {
if (sigIRC.textobj.get(i).isActive()) {
sigIRC.textobj.get(i).draw(g);
if (sigIRC.textobj.get(i).isActive() && sigIRC.overlayMode) {
if (!sigIRC.textobj.get(i).intersects(lastMouseX,lastMouseY)) {
sigIRC.textobj.get(i).setVisible(true);
sigIRC.textobj.get(i).draw(g);
} else {
sigIRC.textobj.get(i).setVisible(false);
}
} else {
break;
}

@ -30,6 +30,9 @@ public class ScrollingText {
private boolean isAlive=true;
private Color userColor;
private TextRow myRow;
private int textMaxWidth;
private int textMaxHeight;
private boolean visible=true;
public void setX(double x) {
this.x = x;
@ -62,6 +65,10 @@ public class ScrollingText {
public int getStringHeight() {
return stringHeight;
}
public boolean isVisible() {
return visible;
}
private int userstringWidth;
private int shadowSize;
@ -149,6 +156,10 @@ public class ScrollingText {
return isAlive;
}
public void setVisible(boolean isVisible) {
this.visible=visible;
}
public void draw(Graphics g) {
if (isAlive && WithinBounds(x,y,Math.max(TextUtils.calculateStringBoundsFont(username, MyPanel.userFont).getWidth(), TextUtils.calculateStringBoundsFont(message, MyPanel.programFont).getWidth()),Math.max(TextUtils.calculateStringBoundsFont(username, MyPanel.userFont).getHeight(), TextUtils.calculateStringBoundsFont(message, MyPanel.programFont).getHeight()))) {
//DrawUtils.drawTextFont(g, MyPanel.userFont, x+8, y+stringHeight-20, Color.GREEN, username);
@ -232,6 +243,8 @@ public class ScrollingText {
break;
}
}
textMaxWidth = (int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getWidth();
textMaxHeight = Math.max(textMaxHeight,(int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getHeight());
return basemsg;
}
@ -248,9 +261,16 @@ public class ScrollingText {
double width = TextUtils.calculateStringBoundsFont(cutstring, sigIRC.panel.programFont).getWidth();
//System.out.println("Width of '"+cutstring+"' is "+width);
sigIRC.createEmoticon(e, this, (int)(width), 0);
textMaxHeight = Math.max(textMaxHeight, e.getImage().getHeight());
//textMaxWidth = (int)(width + e.getImage().getWidth()+1);
}
private String GetUsername(String msg) {
return msg.substring(0,msg.indexOf(":"));
}
public boolean intersects(int x, int y) {
return (x>=this.x && x<=this.x+this.textMaxWidth &&
y>=this.y && y<=this.y+this.textMaxHeight);
}
}

@ -52,4 +52,8 @@ public class TwitchEmote {
}
return false;
}
public boolean textRefIsVisible() {
return text.isVisible();
}
}

@ -315,6 +315,7 @@ public class sigIRC{
f.setVisible(true);
f.setLocation(windowX, windowY);
f.setSize(windowWidth, windowHeight);
button = new BackgroundColorButton(new File(sigIRC.BASEDIR+"backcolor.png"),panel.getX()+panel.getWidth()-96,64+rowobj.size()*rowSpacing);
if (sigIRC.overlayMode) {
f.setBackground(new Color(0,0,0,0));

Loading…
Cancel
Save