< prev index next >

src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java

Print this page




  49 import java.awt.peer.WindowPeer;
  50 import java.io.UnsupportedEncodingException;
  51 import java.security.AccessController;
  52 import java.security.PrivilegedAction;
  53 import java.util.ArrayList;
  54 import java.util.HashSet;
  55 import java.util.Iterator;
  56 import java.util.Set;
  57 import java.util.Vector;
  58 import java.util.concurrent.atomic.AtomicBoolean;
  59 
  60 import sun.awt.AWTAccessor;
  61 import sun.awt.AWTAccessor.ComponentAccessor;
  62 import sun.awt.DisplayChangedListener;
  63 import sun.awt.IconInfo;
  64 import sun.awt.SunToolkit;
  65 import sun.awt.X11GraphicsDevice;
  66 import sun.awt.X11GraphicsEnvironment;
  67 import sun.java2d.pipe.Region;
  68 import sun.util.logging.PlatformLogger;

  69 
  70 class XWindowPeer extends XPanelPeer implements WindowPeer,
  71                                                 DisplayChangedListener {
  72 
  73     private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XWindowPeer");
  74     private static final PlatformLogger focusLog = PlatformLogger.getLogger("sun.awt.X11.focus.XWindowPeer");
  75     private static final PlatformLogger insLog = PlatformLogger.getLogger("sun.awt.X11.insets.XWindowPeer");
  76     private static final PlatformLogger grabLog = PlatformLogger.getLogger("sun.awt.X11.grab.XWindowPeer");
  77     private static final PlatformLogger iconLog = PlatformLogger.getLogger("sun.awt.X11.icon.XWindowPeer");
  78 
  79     // should be synchronized on awtLock
  80     private static Set<XWindowPeer> windows = new HashSet<XWindowPeer>();
  81 
  82 
  83     private boolean cachedFocusableWindow;
  84     XWarningWindow warningWindow;
  85 
  86     private boolean alwaysOnTop;
  87     private boolean locationByPlatform;
  88 


2013         if (typeAtom != null) {
2014             XAtomList wtype = new XAtomList();
2015             wtype.add(typeAtom);
2016             protocol.XA_NET_WM_WINDOW_TYPE.
2017                 setAtomListProperty(getWindow(), wtype);
2018         } else {
2019             protocol.XA_NET_WM_WINDOW_TYPE.
2020                 DeleteProperty(getWindow());
2021         }
2022     }
2023 
2024     @Override
2025     public void xSetVisible(boolean visible) {
2026         if (log.isLoggable(PlatformLogger.Level.FINE)) {
2027             log.fine("Setting visible on " + this + " to " + visible);
2028         }
2029         XToolkit.awtLock();
2030         try {
2031             this.visible = visible;
2032             if (visible) {

















2033                 applyWindowType();
2034                 XlibWrapper.XMapRaised(XToolkit.getDisplay(), getWindow());
2035             } else {
2036                 XlibWrapper.XUnmapWindow(XToolkit.getDisplay(), getWindow());
2037             }
2038             XlibWrapper.XFlush(XToolkit.getDisplay());
2039         }
2040         finally {
2041             XToolkit.awtUnlock();
2042         }
2043     }
2044 
2045     // should be synchronized on awtLock
2046     private int dropTargetCount = 0;
2047 
2048     public void addDropTarget() {
2049         XToolkit.awtLock();
2050         try {
2051             if (dropTargetCount == 0) {
2052                 long window = getWindow();




  49 import java.awt.peer.WindowPeer;
  50 import java.io.UnsupportedEncodingException;
  51 import java.security.AccessController;
  52 import java.security.PrivilegedAction;
  53 import java.util.ArrayList;
  54 import java.util.HashSet;
  55 import java.util.Iterator;
  56 import java.util.Set;
  57 import java.util.Vector;
  58 import java.util.concurrent.atomic.AtomicBoolean;
  59 
  60 import sun.awt.AWTAccessor;
  61 import sun.awt.AWTAccessor.ComponentAccessor;
  62 import sun.awt.DisplayChangedListener;
  63 import sun.awt.IconInfo;
  64 import sun.awt.SunToolkit;
  65 import sun.awt.X11GraphicsDevice;
  66 import sun.awt.X11GraphicsEnvironment;
  67 import sun.java2d.pipe.Region;
  68 import sun.util.logging.PlatformLogger;
  69 import sun.font.FontUtilities;
  70 
  71 class XWindowPeer extends XPanelPeer implements WindowPeer,
  72                                                 DisplayChangedListener {
  73 
  74     private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XWindowPeer");
  75     private static final PlatformLogger focusLog = PlatformLogger.getLogger("sun.awt.X11.focus.XWindowPeer");
  76     private static final PlatformLogger insLog = PlatformLogger.getLogger("sun.awt.X11.insets.XWindowPeer");
  77     private static final PlatformLogger grabLog = PlatformLogger.getLogger("sun.awt.X11.grab.XWindowPeer");
  78     private static final PlatformLogger iconLog = PlatformLogger.getLogger("sun.awt.X11.icon.XWindowPeer");
  79 
  80     // should be synchronized on awtLock
  81     private static Set<XWindowPeer> windows = new HashSet<XWindowPeer>();
  82 
  83 
  84     private boolean cachedFocusableWindow;
  85     XWarningWindow warningWindow;
  86 
  87     private boolean alwaysOnTop;
  88     private boolean locationByPlatform;
  89 


2014         if (typeAtom != null) {
2015             XAtomList wtype = new XAtomList();
2016             wtype.add(typeAtom);
2017             protocol.XA_NET_WM_WINDOW_TYPE.
2018                 setAtomListProperty(getWindow(), wtype);
2019         } else {
2020             protocol.XA_NET_WM_WINDOW_TYPE.
2021                 DeleteProperty(getWindow());
2022         }
2023     }
2024 
2025     @Override
2026     public void xSetVisible(boolean visible) {
2027         if (log.isLoggable(PlatformLogger.Level.FINE)) {
2028             log.fine("Setting visible on " + this + " to " + visible);
2029         }
2030         XToolkit.awtLock();
2031         try {
2032             this.visible = visible;
2033             if (visible) {
2034                 if (FontUtilities.isAIX) {
2035                     /* On Motif Window Manager, non-focusable window should not set WM_TAKE_FOCUS */
2036                     XAtomList currentWMProtocols = wm_protocols.getAtomListPropertyList(this);
2037                     if (isFocusableWindow()) {
2038                         if (!currentWMProtocols.contains(wm_take_focus)) {
2039                             currentWMProtocols.add(wm_take_focus);
2040                             wm_protocols.setAtomListProperty(this, currentWMProtocols);
2041                         }
2042                     } else {
2043                         if (XWM.isMotif()) {
2044                             if (currentWMProtocols.contains(wm_take_focus)) {
2045                                 currentWMProtocols.remove(wm_take_focus);
2046                                 wm_protocols.setAtomListProperty(this, currentWMProtocols);
2047                             }
2048                         }
2049                     }
2050                 }
2051                 applyWindowType();
2052                 XlibWrapper.XMapRaised(XToolkit.getDisplay(), getWindow());
2053             } else {
2054                 XlibWrapper.XUnmapWindow(XToolkit.getDisplay(), getWindow());
2055             }
2056             XlibWrapper.XFlush(XToolkit.getDisplay());
2057         }
2058         finally {
2059             XToolkit.awtUnlock();
2060         }
2061     }
2062 
2063     // should be synchronized on awtLock
2064     private int dropTargetCount = 0;
2065 
2066     public void addDropTarget() {
2067         XToolkit.awtLock();
2068         try {
2069             if (dropTargetCount == 0) {
2070                 long window = getWindow();


< prev index next >