diff --git a/sigIRCv2.jar b/sigIRCv2.jar index c8668de..a57947a 100644 Binary files a/sigIRCv2.jar and b/sigIRCv2.jar differ diff --git a/src/sig/MyPanel.java b/src/sig/MyPanel.java index f29ab3f..077e54b 100644 --- a/src/sig/MyPanel.java +++ b/src/sig/MyPanel.java @@ -1,9 +1,11 @@ package sig; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; +import java.awt.GraphicsEnvironment; import java.awt.MouseInfo; import java.awt.PointerInfo; import java.awt.Toolkit; @@ -166,23 +168,17 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo @Override public void componentResized(ComponentEvent ev) { - sigIRC.windowX = sigIRC.window.getX(); - sigIRC.windowY = sigIRC.window.getY(); - sigIRC.windowWidth = sigIRC.window.getWidth(); - sigIRC.windowHeight = sigIRC.window.getHeight(); - sigIRC.config.setInteger("windowX", sigIRC.windowX); - sigIRC.config.setInteger("windowY", sigIRC.windowY); - sigIRC.config.setInteger("windowWidth", sigIRC.windowWidth); - sigIRC.config.setInteger("windowHeight", sigIRC.windowHeight); - sigIRC.button.x = sigIRC.panel.getX()+sigIRC.panel.getWidth()-96; - sigIRC.button.y = 64+sigIRC.rowobj.size()*sigIRC.rowSpacing; - sigIRC.config.saveProperties(); + UpdateComponent(ev.getComponent()); } @Override public void componentMoved(ComponentEvent ev) { - sigIRC.windowX = sigIRC.window.getX(); - sigIRC.windowY = sigIRC.window.getY(); + UpdateComponent(ev.getComponent()); + } + + public static void UpdateComponent(Component com) { + sigIRC.windowX = (int)sigIRC.window.getLocationOnScreen().getX(); + sigIRC.windowY = (int)sigIRC.window.getLocationOnScreen().getY(); sigIRC.windowWidth = sigIRC.window.getWidth(); sigIRC.windowHeight = sigIRC.window.getHeight(); sigIRC.config.setInteger("windowX", sigIRC.windowX); @@ -191,6 +187,8 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo sigIRC.config.setInteger("windowHeight", sigIRC.windowHeight); sigIRC.button.x = sigIRC.panel.getX()+sigIRC.panel.getWidth()-96; sigIRC.button.y = 64+sigIRC.rowobj.size()*sigIRC.rowSpacing; + com.repaint(); + sigIRC.panel.repaint(); sigIRC.config.saveProperties(); } diff --git a/src/sig/ScrollingText.java b/src/sig/ScrollingText.java index 082beeb..ee47e33 100644 --- a/src/sig/ScrollingText.java +++ b/src/sig/ScrollingText.java @@ -243,19 +243,23 @@ public class ScrollingText { sigIRC.emoticon_queue.clear(); for (Emoticon e : sigIRC.emoticons) { //System.out.println("Checking for emoticon "+e.getEmoteName()); - if (e.getEmoteName().equals(word)) { - if (e instanceof SubEmoticon) { - SubEmoticon se = (SubEmoticon)e; - if (!se.canUserUseEmoticon(username)) { - //System.out.println("User "+username+" is not subscribed to "+se.channelName+"'s channel!"); - break; + try { + if (e.getEmoteName().equals(word)) { + if (e instanceof SubEmoticon) { + SubEmoticon se = (SubEmoticon)e; + if (!se.canUserUseEmoticon(username)) { + //System.out.println("User "+username+" is not subscribed to "+se.channelName+"'s channel!"); + break; + } } + //System.out.println(" Found one!"); + basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSpaceFiller()); + GenerateEmoticon(marker+1, basemsg, e); + space = basemsg.indexOf(" ", marker+1); + break; } - //System.out.println(" Found one!"); - basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSpaceFiller()); - GenerateEmoticon(marker+1, basemsg, e); - space = basemsg.indexOf(" ", marker+1); - break; + } catch (NullPointerException ex) { + ex.printStackTrace(); } } marker=space; diff --git a/src/sig/UpdateEvent.java b/src/sig/UpdateEvent.java index 49a619a..99f8ef4 100644 --- a/src/sig/UpdateEvent.java +++ b/src/sig/UpdateEvent.java @@ -1,4 +1,5 @@ package sig; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -10,12 +11,29 @@ public class UpdateEvent implements ActionListener{ long lasttime = System.currentTimeMillis(); int avgfps = 30; int counter = 0; + int windowUpdateCounter=30; @Override public void actionPerformed(ActionEvent ev) { if (ev!=null) { UpdateScrollingText(); UpdateAuthenticationCountdownMessage(); + UpdateWindowPosition(); + } + } + + private void UpdateWindowPosition() { + if (windowUpdateCounter--<=0) { + if (sigIRC.lastWindowX!=(int)sigIRC.window.getLocationOnScreen().getX() || + sigIRC.lastWindowY!=(int)sigIRC.window.getLocationOnScreen().getY()) { + sigIRC.lastWindowX = (int)sigIRC.window.getLocationOnScreen().getX(); + sigIRC.lastWindowY = (int)sigIRC.window.getLocationOnScreen().getY(); + //Trigger Window Update. + for (Component c : sigIRC.window.getComponents()) { + MyPanel.UpdateComponent(c); + } + } + windowUpdateCounter=30; } } @@ -40,8 +58,8 @@ public class UpdateEvent implements ActionListener{ } else if (last_autosave>=AUTOSAVETIMER) { last_autosave=0; - sigIRC.windowX = sigIRC.window.getX(); - sigIRC.windowY = sigIRC.window.getY(); + sigIRC.windowX = (int)sigIRC.window.getLocationOnScreen().getX(); + sigIRC.windowY = (int)sigIRC.window.getLocationOnScreen().getY(); sigIRC.windowWidth = sigIRC.window.getWidth(); sigIRC.windowHeight = sigIRC.window.getHeight(); sigIRC.config.setInteger("windowX", sigIRC.windowX); diff --git a/src/sig/sigIRC.java b/src/sig/sigIRC.java index d5d58b0..ee61c8d 100644 --- a/src/sig/sigIRC.java +++ b/src/sig/sigIRC.java @@ -110,6 +110,9 @@ public class sigIRC{ public final static String SUBEMOTELISTFILE = "sigIRC/subemotes.json"; public static long channel_id = -1; public static int lastSubEmoteUpdate = -1; + + static int lastWindowX = 0; + static int lastWindowY = 0; public static Twitch manager = new Twitch();