Cygwin/X: Internal WM workaround for Java AWT bug
Java applications using AWT on JRE 1.6.0 break with non-reparenting WMs AWT doesn't explicitly know about (See sun bug #6434227) XDecoratedPeer.handleConfigureNotifyEvent() only processes non-synthetic ConfigureNotify events to update window location if it's identified the WM as a non-reparenting WM it knows about (compiz or lookingglass) Rather than tell all sorts of lies to get XWM to recognize us as one of those, simply send a synthetic ConfigureNotify for every non-synthetic one Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Colin Harrison <colin.harrison@virgin.net> Tested-by: Colin Harrison <colin.harrison@virgin.net>
This commit is contained in:
		
							parent
							
								
									918a9c99cf
								
							
						
					
					
						commit
						19e764eee0
					
				|  | @ -1114,6 +1114,30 @@ winMultiWindowXMsgProc (void *pArg) | |||
|                 } | ||||
|             } | ||||
|         } | ||||
|       else if (event.type == ConfigureNotify) | ||||
|         { | ||||
|           if (!event.xconfigure.send_event) | ||||
|             { | ||||
|               /*
 | ||||
|                 Java applications using AWT on JRE 1.6.0 break with non-reparenting WMs AWT | ||||
|                 doesn't explicitly know about (See sun bug #6434227) | ||||
| 
 | ||||
|                 XDecoratedPeer.handleConfigureNotifyEvent() only processes non-synthetic | ||||
|                 ConfigureNotify events to update window location if it's identified the | ||||
|                 WM as a non-reparenting WM it knows about (compiz or lookingglass) | ||||
| 
 | ||||
|                 Rather than tell all sorts of lies to get XWM to recognize us as one of | ||||
|                 those, simply send a synthetic ConfigureNotify for every non-synthetic one | ||||
|                */ | ||||
|               XEvent event_send = event; | ||||
|               event_send.xconfigure.send_event = TRUE; | ||||
|               event_send.xconfigure.event = event.xconfigure.window; | ||||
|               XSendEvent(event.xconfigure.display, | ||||
|                          event.xconfigure.window, | ||||
|                          True, StructureNotifyMask, | ||||
|                          &event_send); | ||||
|             } | ||||
|         } | ||||
|       else if (event.type == PropertyNotify | ||||
| 	       && event.xproperty.atom == atmWmName) | ||||
| 	{ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue