/[packages]/cauldron/java-1.8.0-openjdk/current/SOURCES/set-active-window.patch
ViewVC logotype

Contents of /cauldron/java-1.8.0-openjdk/current/SOURCES/set-active-window.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 659708 - (show annotations) (download)
Mon Aug 4 21:58:20 2014 UTC (9 years, 7 months ago) by luigiwalser
File size: 3422 byte(s)
- resync with fedora for the latest security fixes
- build with java 8

1 # HG changeset patch
2 # User azvegint
3 # Date 1395070254 -14400
4 # Mon Mar 17 19:30:54 2014 +0400
5 # Node ID 6406059d2620c8241f6e04398ee0c4591e8820ac
6 # Parent 37099d54a1483fffb9e51552cfda8ac956bd97ee
7 8012224: AWT_TopLevels/TopLevelEvents/Automated/WindowIconifyDeiconifyEventsTest02 fails on Ubuntu 12.04 Unity shell
8 Reviewed-by: anthony, serb
9
10 diff --git jdk8/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java jdk8/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java
11 --- jdk8/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java
12 +++ jdk8/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java
13 @@ -284,6 +284,11 @@
14 if (stateLog.isLoggable(PlatformLogger.Level.FINER)) {
15 stateLog.finer("DeIconifying " + this);
16 }
17 +
18 + XNETProtocol net_protocol = XWM.getWM().getNETProtocol();
19 + if (net_protocol != null) {
20 + net_protocol.setActiveWindow(this);
21 + }
22 xSetVisible(true);
23 }
24 }
25 diff --git jdk8/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java jdk8/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java
26 --- jdk8/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java
27 +++ jdk8/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java
28 @@ -213,7 +213,7 @@
29 * If window is showing then it uses ClientMessage, otherwise adjusts NET_WM_STATE list
30 * @param window Window which NET_WM_STATE property is being modified
31 * @param state State atom to be set/reset
32 - * @param reset Indicates operation, 'set' if false, 'reset' if true
33 + * @param set Indicates operation, 'set' if false, 'reset' if true
34 */
35 private void setStateHelper(XWindowPeer window, XAtom state, boolean set) {
36 if (log.isLoggable(PlatformLogger.Level.FINER)) {
37 @@ -249,6 +249,7 @@
38 XAtom XA_UTF8_STRING = XAtom.get("UTF8_STRING"); /* like STRING but encoding is UTF-8 */
39 XAtom XA_NET_SUPPORTING_WM_CHECK = XAtom.get("_NET_SUPPORTING_WM_CHECK");
40 XAtom XA_NET_SUPPORTED = XAtom.get("_NET_SUPPORTED"); /* list of protocols (property of root) */
41 + XAtom XA_NET_ACTIVE_WINDOW = XAtom.get("_NET_ACTIVE_WINDOW");
42 XAtom XA_NET_WM_NAME = XAtom.get("_NET_WM_NAME"); /* window property */
43 XAtom XA_NET_WM_STATE = XAtom.get("_NET_WM_STATE");/* both window property and request */
44
45 @@ -325,6 +326,32 @@
46 return res;
47 }
48
49 + public void setActiveWindow(XWindow window) {
50 + if (!active() || !checkProtocol(XA_NET_SUPPORTED, XA_NET_ACTIVE_WINDOW)) {
51 + return;
52 + }
53 +
54 + XClientMessageEvent msg = new XClientMessageEvent();
55 + msg.zero();
56 + msg.set_type(XConstants.ClientMessage);
57 + msg.set_message_type(XA_NET_ACTIVE_WINDOW.getAtom());
58 + msg.set_display(XToolkit.getDisplay());
59 + msg.set_window(window.getWindow());
60 + msg.set_format(32);
61 + msg.set_data(0, 1);
62 + msg.set_data(1, XToolkit.getCurrentServerTime());
63 + msg.set_data(2, 0);
64 +
65 + XToolkit.awtLock();
66 + try {
67 + XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(), false,
68 + XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask, msg.getPData());
69 + } finally {
70 + XToolkit.awtUnlock();
71 + msg.dispose();
72 + }
73 + }
74 +
75 boolean isWMName(String name) {
76 if (!active()) {
77 return false;

  ViewVC Help
Powered by ViewVC 1.1.30