Przeglądaj źródła

bug in regards to Jdialog & focusing fixxed
no more flickering on regaining focus

LH 10 lat temu
rodzic
commit
6b2276f2ba

+ 17 - 28
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/IZplGUISkinnable.java

@@ -24,6 +24,7 @@ import java.awt.Graphics2D;
 import java.awt.Image;
 import java.awt.Point;
 import java.awt.Polygon;
+import java.awt.Window;
 import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
 import java.awt.event.KeyAdapter;
@@ -31,6 +32,9 @@ import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -96,7 +100,6 @@ public class IZplGUISkinnable extends JFrame implements SkinnableUIPlugin, Mouse
     private PlayListManagingSkinnable playlistEditUI;
     private boolean connected=false;
     private PlaybackPlugin selectedPlaybackPlugin;
-    
     @SuppressWarnings("empty-statement")
     public IZplGUISkinnable()
     {
@@ -372,7 +375,6 @@ public class IZplGUISkinnable extends JFrame implements SkinnableUIPlugin, Mouse
     public void loadPlayListEditScreen()
     {
         playlistEditUI.setVisibleAux(true);
-
     }
     
     
@@ -466,7 +468,7 @@ public class IZplGUISkinnable extends JFrame implements SkinnableUIPlugin, Mouse
         }
         
         dockingMode=Boolean.valueOf(sf.getElementData().get("dockplaylistwindow"));
-        playlistEditUI=new PlayListManagingSkinnable(IZPLApi.isNEwGUIMode()?new JDialog((JFrame)null, "iZPlaylist"):new JFrame("iZPlaylist"),bdir,sf);
+        playlistEditUI=new PlayListManagingSkinnable(IZPLApi.isNEwGUIMode()?new JDialog(this, "iZPlaylist"):new JFrame("iZPlaylist"),bdir,sf);
         if (dockingMode&&IZPLApi.isNEwGUIMode())
         {
             playlistEditUI.disableDraggability();
@@ -693,37 +695,24 @@ public class IZplGUISkinnable extends JFrame implements SkinnableUIPlugin, Mouse
         trackTime.setBounds(ixb.get(0), ixb.get(1), tracktimewidth, lineheight);
         ixb = (ArrayList<Integer>) ep.get("playlist_opening_point");
         dockingBasePoint=new Point(ixb.get(0), ixb.get(1));
-        addFocusListener(new FocusAdapter()
+        addWindowListener(new WindowAdapter()
         {
-            private boolean nullrouteEvent=false;//HACKPART
+            private boolean state=false;
             @Override
-            public void focusGained(FocusEvent e)
+            public void windowIconified(WindowEvent e)
             {
-                if(!nullrouteEvent)//HACKPART to keep mainwindow responsive to spacebar
-                {
-                    nullrouteEvent=true;
-                    if (playlistEditUI.getWrapper().isVisible())
-                    {
-                        playlistEditUI.setVisibleAux(true);
-                        setVisible(true);//HACKPART
-                    }
-                    //HACKPART\/
-                    new Thread(()->
-                    {
-                        try
-                        {
-                            Thread.sleep(10);
-                        }
-                        catch (InterruptedException ex)
-                        {
-                        }
-                        nullrouteEvent=false;
-                    }).start();
-                }
+                state=playlistEditUI.getWrapper().isVisible();
+                playlistEditUI.setVisibleAux(false);
+                
+            }
+
+            @Override
+            public void windowDeiconified(WindowEvent e)
+            {
+                playlistEditUI.setVisibleAux(state);
             }
             
         });
-        
         ////////////////////////////////////////////////////////////////
         PA.add(seekBar);
         PA.add(trackTitle);