99 boolean processed = processClientMessageImpl(xclient); 100 101 postProcessClientMessage(xclient, processed, type); 102 103 return processed; 104 } 105 106 /* The caller must hold AWT_LOCK. */ 107 protected abstract boolean processClientMessageImpl(XClientMessageEvent xclient); 108 109 /* 110 * Forwards a drag notification to the embedding toplevel modifying the event 111 * to match the protocol version supported by the toplevel. 112 * The caller must hold AWT_LOCK. 113 * Returns True if the event is sent, False otherwise. 114 */ 115 protected final boolean forwardClientMessageToToplevel(long toplevel, 116 XClientMessageEvent xclient) { 117 EmbedderRegistryEntry entry = getEmbedderRegistryEntry(toplevel); 118 119 if (logger.isLoggable(PlatformLogger.FINEST)) { 120 logger.finest(" entry={0}", entry); 121 } 122 // Window not registered as an embedder for this protocol. 123 if (entry == null) { 124 return false; 125 } 126 127 if (logger.isLoggable(PlatformLogger.FINEST)) { 128 logger.finest(" entry.isOverriden()={0}", entry.isOverriden()); 129 } 130 // Window didn't have an associated drop site, so there is no need 131 // to forward the message. 132 if (!entry.isOverriden()) { 133 return false; 134 } 135 136 adjustEventForForwarding(xclient, entry); 137 138 long proxy = entry.getProxy(); 139 140 if (logger.isLoggable(PlatformLogger.FINEST)) { 141 logger.finest(" proxy={0} toplevel={1}", proxy, toplevel); 142 } 143 if (proxy == 0) { 144 proxy = toplevel; 145 } 146 147 xclient.set_window(toplevel); 148 149 XToolkit.awtLock(); 150 try { 151 XlibWrapper.XSendEvent(XToolkit.getDisplay(), proxy, false, 152 XConstants.NoEventMask, xclient.pData); 153 } finally { 154 XToolkit.awtUnlock(); 155 } 156 157 return true; 158 } 159 160 | 99 boolean processed = processClientMessageImpl(xclient); 100 101 postProcessClientMessage(xclient, processed, type); 102 103 return processed; 104 } 105 106 /* The caller must hold AWT_LOCK. */ 107 protected abstract boolean processClientMessageImpl(XClientMessageEvent xclient); 108 109 /* 110 * Forwards a drag notification to the embedding toplevel modifying the event 111 * to match the protocol version supported by the toplevel. 112 * The caller must hold AWT_LOCK. 113 * Returns True if the event is sent, False otherwise. 114 */ 115 protected final boolean forwardClientMessageToToplevel(long toplevel, 116 XClientMessageEvent xclient) { 117 EmbedderRegistryEntry entry = getEmbedderRegistryEntry(toplevel); 118 119 if (logger.isLoggable(PlatformLogger.Level.FINEST)) { 120 logger.finest(" entry={0}", entry); 121 } 122 // Window not registered as an embedder for this protocol. 123 if (entry == null) { 124 return false; 125 } 126 127 if (logger.isLoggable(PlatformLogger.Level.FINEST)) { 128 logger.finest(" entry.isOverriden()={0}", entry.isOverriden()); 129 } 130 // Window didn't have an associated drop site, so there is no need 131 // to forward the message. 132 if (!entry.isOverriden()) { 133 return false; 134 } 135 136 adjustEventForForwarding(xclient, entry); 137 138 long proxy = entry.getProxy(); 139 140 if (logger.isLoggable(PlatformLogger.Level.FINEST)) { 141 logger.finest(" proxy={0} toplevel={1}", proxy, toplevel); 142 } 143 if (proxy == 0) { 144 proxy = toplevel; 145 } 146 147 xclient.set_window(toplevel); 148 149 XToolkit.awtLock(); 150 try { 151 XlibWrapper.XSendEvent(XToolkit.getDisplay(), proxy, false, 152 XConstants.NoEventMask, xclient.pData); 153 } finally { 154 XToolkit.awtUnlock(); 155 } 156 157 return true; 158 } 159 160 |