mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Make IME code early return instead
This commit is contained in:
		
							parent
							
								
									87318a2fb7
								
							
						
					
					
						commit
						75bf6df49a
					
				
					 1 changed files with 41 additions and 36 deletions
				
			
		|  | @ -44,35 +44,38 @@ const GodotIME = { | |||
| 		}, | ||||
| 
 | ||||
| 		ime_active: function (active) { | ||||
| 			if (GodotIME.ime == null) { | ||||
| 				return; | ||||
| 			} | ||||
| 
 | ||||
| 			function focus_timer() { | ||||
| 				GodotIME.active = true; | ||||
| 				GodotIME.ime.focus(); | ||||
| 			} | ||||
| 
 | ||||
| 			if (GodotIME.ime) { | ||||
| 				if (active) { | ||||
| 					GodotIME.ime.style.display = 'block'; | ||||
| 					setInterval(focus_timer, 100); | ||||
| 				} else { | ||||
| 					GodotIME.ime.style.display = 'none'; | ||||
| 					GodotConfig.canvas.focus(); | ||||
| 					GodotIME.active = false; | ||||
| 				} | ||||
| 			if (active) { | ||||
| 				GodotIME.ime.style.display = 'block'; | ||||
| 				setInterval(focus_timer, 100); | ||||
| 			} else { | ||||
| 				GodotIME.ime.style.display = 'none'; | ||||
| 				GodotConfig.canvas.focus(); | ||||
| 				GodotIME.active = false; | ||||
| 			} | ||||
| 		}, | ||||
| 
 | ||||
| 		ime_position: function (x, y) { | ||||
| 			if (GodotIME.ime) { | ||||
| 				const canvas = GodotConfig.canvas; | ||||
| 				const rect = canvas.getBoundingClientRect(); | ||||
| 				const rw = canvas.width / rect.width; | ||||
| 				const rh = canvas.height / rect.height; | ||||
| 				const clx = (x / rw) + rect.x; | ||||
| 				const cly = (y / rh) + rect.y; | ||||
| 
 | ||||
| 				GodotIME.ime.style.left = `${clx}px`; | ||||
| 				GodotIME.ime.style.top = `${cly}px`; | ||||
| 			if (GodotIME.ime == null) { | ||||
| 				return; | ||||
| 			} | ||||
| 			const canvas = GodotConfig.canvas; | ||||
| 			const rect = canvas.getBoundingClientRect(); | ||||
| 			const rw = canvas.width / rect.width; | ||||
| 			const rh = canvas.height / rect.height; | ||||
| 			const clx = (x / rw) + rect.x; | ||||
| 			const cly = (y / rh) + rect.y; | ||||
| 
 | ||||
| 			GodotIME.ime.style.left = `${clx}px`; | ||||
| 			GodotIME.ime.style.top = `${cly}px`; | ||||
| 		}, | ||||
| 
 | ||||
| 		init: function (ime_cb, key_cb, code, key) { | ||||
|  | @ -84,20 +87,21 @@ const GodotIME = { | |||
| 				evt.preventDefault(); | ||||
| 			} | ||||
| 			function ime_event_cb(event) { | ||||
| 				if (GodotIME.ime) { | ||||
| 					if (event.type === 'compositionstart') { | ||||
| 						ime_cb(0, null); | ||||
| 						GodotIME.ime.innerHTML = ''; | ||||
| 					} else if (event.type === 'compositionupdate') { | ||||
| 						const ptr = GodotRuntime.allocString(event.data); | ||||
| 						ime_cb(1, ptr); | ||||
| 						GodotRuntime.free(ptr); | ||||
| 					} else if (event.type === 'compositionend') { | ||||
| 						const ptr = GodotRuntime.allocString(event.data); | ||||
| 						ime_cb(2, ptr); | ||||
| 						GodotRuntime.free(ptr); | ||||
| 						GodotIME.ime.innerHTML = ''; | ||||
| 					} | ||||
| 				if (GodotIME.ime == null) { | ||||
| 					return; | ||||
| 				} | ||||
| 				if (event.type === 'compositionstart') { | ||||
| 					ime_cb(0, null); | ||||
| 					GodotIME.ime.innerHTML = ''; | ||||
| 				} else if (event.type === 'compositionupdate') { | ||||
| 					const ptr = GodotRuntime.allocString(event.data); | ||||
| 					ime_cb(1, ptr); | ||||
| 					GodotRuntime.free(ptr); | ||||
| 				} else if (event.type === 'compositionend') { | ||||
| 					const ptr = GodotRuntime.allocString(event.data); | ||||
| 					ime_cb(2, ptr); | ||||
| 					GodotRuntime.free(ptr); | ||||
| 					GodotIME.ime.innerHTML = ''; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
|  | @ -133,10 +137,11 @@ const GodotIME = { | |||
| 		}, | ||||
| 
 | ||||
| 		clear: function () { | ||||
| 			if (GodotIME.ime) { | ||||
| 				GodotIME.ime.remove(); | ||||
| 				GodotIME.ime = null; | ||||
| 			if (GodotIME.ime == null) { | ||||
| 				return; | ||||
| 			} | ||||
| 			GodotIME.ime.remove(); | ||||
| 			GodotIME.ime = null; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Adam Scott
						Adam Scott