1 /*
2 * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package sun.awt.X11;
26
27 import java.awt.peer.TaskbarPeer;
28 import java.awt.*;
29 import java.awt.event.InputEvent;
30 import java.awt.event.MouseEvent;
31 import java.awt.event.KeyEvent;
32 import java.awt.datatransfer.Clipboard;
33 import java.awt.dnd.DragSource;
34 import java.awt.dnd.DragGestureListener;
35 import java.awt.dnd.DragGestureEvent;
36 import java.awt.dnd.DragGestureRecognizer;
37 import java.awt.dnd.MouseDragGestureRecognizer;
38 import java.awt.dnd.InvalidDnDOperationException;
39 import java.awt.dnd.peer.DragSourceContextPeer;
40 import java.awt.font.TextAttribute;
41 import java.awt.im.InputMethodHighlight;
42 import java.awt.im.spi.InputMethodDescriptor;
43 import java.awt.peer.*;
44 import java.beans.PropertyChangeListener;
45 import java.security.AccessController;
46 import java.security.PrivilegedAction;
47 import java.util.*;
48 import javax.swing.LookAndFeel;
49 import javax.swing.UIDefaults;
50 import sun.awt.*;
51 import sun.awt.datatransfer.DataTransferer;
52 import sun.font.FontConfigManager;
53 import sun.java2d.SunGraphicsEnvironment;
54 import sun.awt.util.PerformanceLogger;
55 import sun.awt.util.ThreadGroupUtils;
56 import sun.print.PrintJob2D;
57 import sun.security.action.GetPropertyAction;
58 import sun.security.action.GetBooleanAction;
59 import sun.util.logging.PlatformLogger;
60 import static sun.awt.X11.XlibUtil.scaleDown;
61
62 public final class XToolkit extends UNIXToolkit implements Runnable {
63 private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XToolkit");
64 private static final PlatformLogger eventLog = PlatformLogger.getLogger("sun.awt.X11.event.XToolkit");
65 private static final PlatformLogger timeoutTaskLog = PlatformLogger.getLogger("sun.awt.X11.timeoutTask.XToolkit");
66 private static final PlatformLogger keyEventLog = PlatformLogger.getLogger("sun.awt.X11.kye.XToolkit");
67 private static final PlatformLogger backingStoreLog = PlatformLogger.getLogger("sun.awt.X11.backingStore.XToolkit");
68
69 //There is 400 ms is set by default on Windows and 500 by default on KDE and GNOME.
70 //We use the same hardcoded constant.
71 private static final int AWT_MULTICLICK_DEFAULT_TIME = 500;
72
73 static final boolean PRIMARY_LOOP = false;
74 static final boolean SECONDARY_LOOP = true;
75
76 private static String awtAppClassName = null;
77
78 // the system clipboard - CLIPBOARD selection
79 XClipboard clipboard;
2581
2582 @Override
2583 public boolean isWindowOpacitySupported() {
2584 XNETProtocol net_protocol = XWM.getWM().getNETProtocol();
2585
2586 if (net_protocol == null) {
2587 return false;
2588 }
2589
2590 return net_protocol.doOpacityProtocol();
2591 }
2592
2593 @Override
2594 public boolean isWindowShapingSupported() {
2595 return XlibUtil.isShapingSupported();
2596 }
2597
2598 @Override
2599 public boolean isWindowTranslucencySupported() {
2600 //NOTE: it may not be supported. The actual check is being performed
2601 // at com.sun.awt.AWTUtilities(). In X11 we need to check
2602 // whether there's any translucency-capable GC available.
2603 return true;
2604 }
2605
2606 @Override
2607 public boolean isTranslucencyCapable(GraphicsConfiguration gc) {
2608 if (!(gc instanceof X11GraphicsConfig)) {
2609 return false;
2610 }
2611 return ((X11GraphicsConfig)gc).isTranslucencyCapable();
2612 }
2613
2614 /**
2615 * Returns the value of "sun.awt.disablegrab" property. Default
2616 * value is {@code false}.
2617 */
2618 public static boolean getSunAwtDisableGrab() {
2619 return AccessController.doPrivileged(new GetBooleanAction("sun.awt.disablegrab"));
2620 }
2621 }
|
1 /*
2 * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package sun.awt.X11;
27
28 import java.awt.AWTError;
29 import java.awt.AWTException;
30 import java.awt.Button;
31 import java.awt.Canvas;
32 import java.awt.Checkbox;
33 import java.awt.CheckboxMenuItem;
34 import java.awt.Choice;
35 import java.awt.Color;
36 import java.awt.Component;
37 import java.awt.Cursor;
38 import java.awt.Desktop;
39 import java.awt.Dialog;
40 import java.awt.Dimension;
41 import java.awt.EventQueue;
42 import java.awt.FileDialog;
43 import java.awt.Frame;
44 import java.awt.GraphicsConfiguration;
45 import java.awt.GraphicsDevice;
46 import java.awt.GraphicsEnvironment;
47 import java.awt.HeadlessException;
48 import java.awt.Image;
49 import java.awt.Insets;
50 import java.awt.JobAttributes;
51 import java.awt.Label;
52 import java.awt.Menu;
53 import java.awt.MenuBar;
54 import java.awt.MenuItem;
55 import java.awt.PageAttributes;
56 import java.awt.Panel;
57 import java.awt.Point;
58 import java.awt.PopupMenu;
59 import java.awt.PrintJob;
60 import java.awt.Rectangle;
61 import java.awt.Robot;
62 import java.awt.ScrollPane;
63 import java.awt.Scrollbar;
64 import java.awt.SystemColor;
65 import java.awt.SystemTray;
66 import java.awt.Taskbar;
67 import java.awt.TextArea;
68 import java.awt.TextField;
69 import java.awt.Toolkit;
70 import java.awt.TrayIcon;
71 import java.awt.Window;
72 import java.awt.datatransfer.Clipboard;
73 import java.awt.dnd.DragGestureEvent;
74 import java.awt.dnd.DragGestureListener;
75 import java.awt.dnd.DragGestureRecognizer;
76 import java.awt.dnd.DragSource;
77 import java.awt.dnd.InvalidDnDOperationException;
78 import java.awt.dnd.MouseDragGestureRecognizer;
79 import java.awt.dnd.peer.DragSourceContextPeer;
80 import java.awt.event.InputEvent;
81 import java.awt.event.KeyEvent;
82 import java.awt.event.MouseEvent;
83 import java.awt.font.TextAttribute;
84 import java.awt.im.InputMethodHighlight;
85 import java.awt.im.spi.InputMethodDescriptor;
86 import java.awt.peer.ButtonPeer;
87 import java.awt.peer.CanvasPeer;
88 import java.awt.peer.CheckboxMenuItemPeer;
89 import java.awt.peer.CheckboxPeer;
90 import java.awt.peer.ChoicePeer;
91 import java.awt.peer.DesktopPeer;
92 import java.awt.peer.DialogPeer;
93 import java.awt.peer.FileDialogPeer;
94 import java.awt.peer.FontPeer;
95 import java.awt.peer.FramePeer;
96 import java.awt.peer.KeyboardFocusManagerPeer;
97 import java.awt.peer.LabelPeer;
98 import java.awt.peer.ListPeer;
99 import java.awt.peer.MenuBarPeer;
100 import java.awt.peer.MenuItemPeer;
101 import java.awt.peer.MenuPeer;
102 import java.awt.peer.MouseInfoPeer;
103 import java.awt.peer.PanelPeer;
104 import java.awt.peer.PopupMenuPeer;
105 import java.awt.peer.RobotPeer;
106 import java.awt.peer.ScrollPanePeer;
107 import java.awt.peer.ScrollbarPeer;
108 import java.awt.peer.SystemTrayPeer;
109 import java.awt.peer.TaskbarPeer;
110 import java.awt.peer.TextAreaPeer;
111 import java.awt.peer.TextFieldPeer;
112 import java.awt.peer.TrayIconPeer;
113 import java.awt.peer.WindowPeer;
114 import java.beans.PropertyChangeListener;
115 import java.security.AccessController;
116 import java.security.PrivilegedAction;
117 import java.util.ArrayList;
118 import java.util.Collection;
119 import java.util.HashMap;
120 import java.util.Iterator;
121 import java.util.LinkedList;
122 import java.util.Map;
123 import java.util.NoSuchElementException;
124 import java.util.Properties;
125 import java.util.Set;
126 import java.util.SortedMap;
127 import java.util.TreeMap;
128 import java.util.Vector;
129
130 import javax.swing.LookAndFeel;
131 import javax.swing.UIDefaults;
132
133 import sun.awt.AWTAccessor;
134 import sun.awt.AWTPermissions;
135 import sun.awt.AppContext;
136 import sun.awt.DisplayChangedListener;
137 import sun.awt.LightweightFrame;
138 import sun.awt.SunToolkit;
139 import sun.awt.UNIXToolkit;
140 import sun.awt.X11GraphicsConfig;
141 import sun.awt.X11GraphicsDevice;
142 import sun.awt.X11GraphicsEnvironment;
143 import sun.awt.XSettings;
144 import sun.awt.datatransfer.DataTransferer;
145 import sun.awt.util.PerformanceLogger;
146 import sun.awt.util.ThreadGroupUtils;
147 import sun.font.FontConfigManager;
148 import sun.java2d.SunGraphicsEnvironment;
149 import sun.print.PrintJob2D;
150 import sun.security.action.GetBooleanAction;
151 import sun.security.action.GetPropertyAction;
152 import sun.util.logging.PlatformLogger;
153
154 import static sun.awt.X11.XlibUtil.scaleDown;
155
156 public final class XToolkit extends UNIXToolkit implements Runnable {
157 private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XToolkit");
158 private static final PlatformLogger eventLog = PlatformLogger.getLogger("sun.awt.X11.event.XToolkit");
159 private static final PlatformLogger timeoutTaskLog = PlatformLogger.getLogger("sun.awt.X11.timeoutTask.XToolkit");
160 private static final PlatformLogger keyEventLog = PlatformLogger.getLogger("sun.awt.X11.kye.XToolkit");
161 private static final PlatformLogger backingStoreLog = PlatformLogger.getLogger("sun.awt.X11.backingStore.XToolkit");
162
163 //There is 400 ms is set by default on Windows and 500 by default on KDE and GNOME.
164 //We use the same hardcoded constant.
165 private static final int AWT_MULTICLICK_DEFAULT_TIME = 500;
166
167 static final boolean PRIMARY_LOOP = false;
168 static final boolean SECONDARY_LOOP = true;
169
170 private static String awtAppClassName = null;
171
172 // the system clipboard - CLIPBOARD selection
173 XClipboard clipboard;
2675
2676 @Override
2677 public boolean isWindowOpacitySupported() {
2678 XNETProtocol net_protocol = XWM.getWM().getNETProtocol();
2679
2680 if (net_protocol == null) {
2681 return false;
2682 }
2683
2684 return net_protocol.doOpacityProtocol();
2685 }
2686
2687 @Override
2688 public boolean isWindowShapingSupported() {
2689 return XlibUtil.isShapingSupported();
2690 }
2691
2692 @Override
2693 public boolean isWindowTranslucencySupported() {
2694 //NOTE: it may not be supported. The actual check is being performed
2695 // at java.awt.GraphicsDevice. In X11 we need to check
2696 // whether there's any translucency-capable GC available.
2697 return true;
2698 }
2699
2700 @Override
2701 public boolean isTranslucencyCapable(GraphicsConfiguration gc) {
2702 if (!(gc instanceof X11GraphicsConfig)) {
2703 return false;
2704 }
2705 return ((X11GraphicsConfig)gc).isTranslucencyCapable();
2706 }
2707
2708 /**
2709 * Returns the value of "sun.awt.disablegrab" property. Default
2710 * value is {@code false}.
2711 */
2712 public static boolean getSunAwtDisableGrab() {
2713 return AccessController.doPrivileged(new GetBooleanAction("sun.awt.disablegrab"));
2714 }
2715 }
|