65 66 // A detail code is required for XEMBED_FOCUS_IN. The following values are valid: 67 /* Details for XEMBED_FOCUS_IN: */ 68 final static int XEMBED_FOCUS_CURRENT = 0; 69 final static int XEMBED_FOCUS_FIRST = 1; 70 final static int XEMBED_FOCUS_LAST = 2; 71 72 // Modifiers bits 73 final static int XEMBED_MODIFIER_SHIFT = (1 << 0); 74 final static int XEMBED_MODIFIER_CONTROL = (1 << 1); 75 final static int XEMBED_MODIFIER_ALT = (1 << 2); 76 final static int XEMBED_MODIFIER_SUPER = (1 << 3); 77 final static int XEMBED_MODIFIER_HYPER = (1 << 4); 78 79 static XAtom XEmbedInfo; 80 static XAtom XEmbed; 81 82 XEmbedHelper() { 83 if (XEmbed == null) { 84 XEmbed = XAtom.get("_XEMBED"); 85 if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Created atom " + XEmbed.toString()); 86 } 87 if (XEmbedInfo == null) { 88 XEmbedInfo = XAtom.get("_XEMBED_INFO"); 89 if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Created atom " + XEmbedInfo.toString()); 90 } 91 } 92 93 void sendMessage(long window, int message) { 94 sendMessage(window, message, 0, 0, 0); 95 } 96 void sendMessage(long window, int message, long detail, long data1, long data2) { 97 XClientMessageEvent msg = new XClientMessageEvent(); 98 msg.set_type((int)XConstants.ClientMessage); 99 msg.set_window(window); 100 msg.set_message_type(XEmbed.getAtom()); 101 msg.set_format(32); 102 msg.set_data(0, XToolkit.getCurrentServerTime()); 103 msg.set_data(1, message); 104 msg.set_data(2, detail); 105 msg.set_data(3, data1); 106 msg.set_data(4, data2); 107 XToolkit.awtLock(); 108 try { 109 if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Sending " + XEmbedMessageToString(msg)); 110 XlibWrapper.XSendEvent(XToolkit.getDisplay(), window, false, XConstants.NoEventMask, msg.pData); 111 } 112 finally { 113 XToolkit.awtUnlock(); 114 } 115 msg.dispose(); 116 } 117 118 static String msgidToString(int msg_id) { 119 switch (msg_id) { 120 case XEMBED_EMBEDDED_NOTIFY: 121 return "XEMBED_EMBEDDED_NOTIFY"; 122 case XEMBED_WINDOW_ACTIVATE: 123 return "XEMBED_WINDOW_ACTIVATE"; 124 case XEMBED_WINDOW_DEACTIVATE: 125 return "XEMBED_WINDOW_DEACTIVATE"; 126 case XEMBED_FOCUS_IN: 127 return "XEMBED_FOCUS_IN"; 128 case XEMBED_FOCUS_OUT: 129 return "XEMBED_FOCUS_OUT"; | 65 66 // A detail code is required for XEMBED_FOCUS_IN. The following values are valid: 67 /* Details for XEMBED_FOCUS_IN: */ 68 final static int XEMBED_FOCUS_CURRENT = 0; 69 final static int XEMBED_FOCUS_FIRST = 1; 70 final static int XEMBED_FOCUS_LAST = 2; 71 72 // Modifiers bits 73 final static int XEMBED_MODIFIER_SHIFT = (1 << 0); 74 final static int XEMBED_MODIFIER_CONTROL = (1 << 1); 75 final static int XEMBED_MODIFIER_ALT = (1 << 2); 76 final static int XEMBED_MODIFIER_SUPER = (1 << 3); 77 final static int XEMBED_MODIFIER_HYPER = (1 << 4); 78 79 static XAtom XEmbedInfo; 80 static XAtom XEmbed; 81 82 XEmbedHelper() { 83 if (XEmbed == null) { 84 XEmbed = XAtom.get("_XEMBED"); 85 if (xembedLog.isLoggable(PlatformLogger.FINER)) { 86 xembedLog.finer("Created atom " + XEmbed.toString()); 87 } 88 } 89 if (XEmbedInfo == null) { 90 XEmbedInfo = XAtom.get("_XEMBED_INFO"); 91 if (xembedLog.isLoggable(PlatformLogger.FINER)) { 92 xembedLog.finer("Created atom " + XEmbedInfo.toString()); 93 } 94 } 95 } 96 97 void sendMessage(long window, int message) { 98 sendMessage(window, message, 0, 0, 0); 99 } 100 void sendMessage(long window, int message, long detail, long data1, long data2) { 101 XClientMessageEvent msg = new XClientMessageEvent(); 102 msg.set_type((int)XConstants.ClientMessage); 103 msg.set_window(window); 104 msg.set_message_type(XEmbed.getAtom()); 105 msg.set_format(32); 106 msg.set_data(0, XToolkit.getCurrentServerTime()); 107 msg.set_data(1, message); 108 msg.set_data(2, detail); 109 msg.set_data(3, data1); 110 msg.set_data(4, data2); 111 XToolkit.awtLock(); 112 try { 113 if (xembedLog.isLoggable(PlatformLogger.FINE)) { 114 xembedLog.fine("Sending " + XEmbedMessageToString(msg)); 115 } 116 XlibWrapper.XSendEvent(XToolkit.getDisplay(), window, false, XConstants.NoEventMask, msg.pData); 117 } 118 finally { 119 XToolkit.awtUnlock(); 120 } 121 msg.dispose(); 122 } 123 124 static String msgidToString(int msg_id) { 125 switch (msg_id) { 126 case XEMBED_EMBEDDED_NOTIFY: 127 return "XEMBED_EMBEDDED_NOTIFY"; 128 case XEMBED_WINDOW_ACTIVATE: 129 return "XEMBED_WINDOW_ACTIVATE"; 130 case XEMBED_WINDOW_DEACTIVATE: 131 return "XEMBED_WINDOW_DEACTIVATE"; 132 case XEMBED_FOCUS_IN: 133 return "XEMBED_FOCUS_IN"; 134 case XEMBED_FOCUS_OUT: 135 return "XEMBED_FOCUS_OUT"; |