jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java
changeset 3938 ef327bd847c0
parent 2802 d05a9dcc8296
child 5506 202f599c92aa
equal deleted inserted replaced
3934:487e1aa949c4 3938:ef327bd847c0
    33 package sun.awt.X11;
    33 package sun.awt.X11;
    34 
    34 
    35 import java.util.*;
    35 import java.util.*;
    36 import java.awt.*;
    36 import java.awt.*;
    37 import sun.awt.XSettings;
    37 import sun.awt.XSettings;
    38 import java.util.logging.*;
    38 import sun.util.logging.PlatformLogger;
    39 
       
    40 
    39 
    41 
    40 
    42 class XAWTXSettings extends XSettings implements XMSelectionListener {
    41 class XAWTXSettings extends XSettings implements XMSelectionListener {
    43 
    42 
    44     private final XAtom xSettingsPropertyAtom = XAtom.get("_XSETTINGS_SETTINGS");
    43     private final XAtom xSettingsPropertyAtom = XAtom.get("_XSETTINGS_SETTINGS");
    45 
    44 
    46     private static Logger log = Logger.getLogger("sun.awt.X11.XAWTXSettings");
    45     private static PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XAWTXSettings");
    47 
    46 
    48     /* The maximal length of the property data. */
    47     /* The maximal length of the property data. */
    49     public static final long MAX_LENGTH = 1000000;
    48     public static final long MAX_LENGTH = 1000000;
    50 
    49 
    51     XMSelection settings;
    50     XMSelection settings;
    54         initXSettings();
    53         initXSettings();
    55 
    54 
    56     }
    55     }
    57 
    56 
    58     void initXSettings() {
    57     void initXSettings() {
    59         if (log.isLoggable(Level.FINE)) log.fine("Initializing XAWT XSettings");
    58         if (log.isLoggable(PlatformLogger.FINE)) log.fine("Initializing XAWT XSettings");
    60         settings = new XMSelection("_XSETTINGS");
    59         settings = new XMSelection("_XSETTINGS");
    61         settings.addSelectionListener(this);
    60         settings.addSelectionListener(this);
    62         initPerScreenXSettings();
    61         initPerScreenXSettings();
    63     }
    62     }
    64 
    63 
    65     void dispose() {
    64     void dispose() {
    66         settings.removeSelectionListener(this);
    65         settings.removeSelectionListener(this);
    67     }
    66     }
    68 
    67 
    69     public void ownerDeath(int screen, XMSelection sel, long deadOwner) {
    68     public void ownerDeath(int screen, XMSelection sel, long deadOwner) {
    70         if (log.isLoggable(Level.FINE)) log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);
    69         if (log.isLoggable(PlatformLogger.FINE)) log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);
    71     }
    70     }
    72 
    71 
    73 
    72 
    74     public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
    73     public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
    75         if (log.isLoggable(Level.FINE)) log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );
    74         if (log.isLoggable(PlatformLogger.FINE)) log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );
    76     }
    75     }
    77 
    76 
    78     public void selectionChanged(int screen, XMSelection sel, long owner , XPropertyEvent event) {
    77     public void selectionChanged(int screen, XMSelection sel, long owner , XPropertyEvent event) {
    79         log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);
    78         log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);
    80         updateXSettings(screen,owner);
    79         updateXSettings(screen,owner);
    81     }
    80     }
    82 
    81 
    83     void initPerScreenXSettings() {
    82     void initPerScreenXSettings() {
    84         if (log.isLoggable(Level.FINE)) log.fine("Updating Per XSettings changes");
    83         if (log.isLoggable(PlatformLogger.FINE)) log.fine("Updating Per XSettings changes");
    85 
    84 
    86         /*
    85         /*
    87          * As toolkit cannot yet cope with per-screen desktop properties,
    86          * As toolkit cannot yet cope with per-screen desktop properties,
    88          * only report XSETTINGS changes on the default screen.  This
    87          * only report XSETTINGS changes on the default screen.  This
    89          * should be "good enough" for most cases.
    88          * should be "good enough" for most cases.
   113             }
   112             }
   114         });
   113         });
   115     }
   114     }
   116 
   115 
   117     private Map getUpdatedSettings(final long owner) {
   116     private Map getUpdatedSettings(final long owner) {
   118         if (log.isLoggable(Level.FINE)) log.fine("owner =" + owner);
   117         if (log.isLoggable(PlatformLogger.FINE)) log.fine("owner =" + owner);
   119         if (0 == owner) {
   118         if (0 == owner) {
   120             return null;
   119             return null;
   121         }
   120         }
   122 
   121 
   123         Map settings = null;
   122         Map settings = null;
   127                         false, xSettingsPropertyAtom.getAtom() );
   126                         false, xSettingsPropertyAtom.getAtom() );
   128             try {
   127             try {
   129                 int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
   128                 int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
   130 
   129 
   131                 if (status != XConstants.Success || getter.getData() == 0) {
   130                 if (status != XConstants.Success || getter.getData() == 0) {
   132                     if (log.isLoggable(Level.FINE)) log.fine("OH OH : getter failed  status = " + status );
   131                     if (log.isLoggable(PlatformLogger.FINE)) log.fine("OH OH : getter failed  status = " + status );
   133                     settings = null;
   132                     settings = null;
   134                 }
   133                 }
   135 
   134 
   136                 long ptr = getter.getData();
   135                 long ptr = getter.getData();
   137 
   136 
   138                 if (log.isLoggable(Level.FINE)) log.fine("noItems = " + getter.getNumberOfItems());
   137                 if (log.isLoggable(PlatformLogger.FINE)) log.fine("noItems = " + getter.getNumberOfItems());
   139                 byte array[] = Native.toBytes(ptr,getter.getNumberOfItems());
   138                 byte array[] = Native.toBytes(ptr,getter.getNumberOfItems());
   140                 if (array != null) {
   139                 if (array != null) {
   141                     settings = update(array);
   140                     settings = update(array);
   142                 }
   141                 }
   143             } finally {
   142             } finally {