Window: add new setTextInputRect() method to optionally specify the location of the input when textInputEnabled is set to true

On native, this uses SDL_SetTextInputRect
This commit is contained in:
Josh Tynjala
2022-06-09 14:14:05 -07:00
parent 5f6f762ff8
commit 81d682d355
9 changed files with 75 additions and 0 deletions

View File

@@ -47,6 +47,7 @@ class FlashWindow
private var mouseLeft:Bool;
private var parent:Window;
private var textInputEnabled:Bool;
private var textInputRect:Rectangle;
private var unusedTouchesPool = new List<Touch>();
public function new(parent:Window)
@@ -622,6 +623,11 @@ class FlashWindow
return textInputEnabled = value;
}
public function setTextInputRect(value:Rectangle):Rectangle
{
return textInputRect = value;
}
public function setTitle(value:String):String
{
return value;

View File

@@ -73,6 +73,7 @@ class HTML5Window
private var setHeight:Int;
private var setWidth:Int;
private var textInputEnabled:Bool;
private var textInputRect:Rectangle;
private var unusedTouchesPool = new List<Touch>();
public function new(parent:Window)
@@ -1165,6 +1166,11 @@ class HTML5Window
return textInputEnabled = value;
}
public function setTextInputRect(value:Rectangle):Rectangle
{
return textInputRect = value;
}
private var inputing = false;
public function handleCompositionstartEvent(e):Void

View File

@@ -341,6 +341,8 @@ class NativeCFFI
@:cffi private static function lime_window_set_text_input_enabled(handle:Dynamic, enabled:Bool):Void;
@:cffi private static function lime_window_set_text_input_rect(handle:Dynamic, rect:Dynamic):Void;
@:cffi private static function lime_window_set_title(handle:Dynamic, title:String):Dynamic;
@:cffi private static function lime_window_warp_mouse(handle:Dynamic, x:Int, y:Int):Void;
@@ -593,6 +595,8 @@ class NativeCFFI
false));
private static var lime_window_set_text_input_enabled = new cpp.Callable<cpp.Object->Bool->cpp.Void>(cpp.Prime._loadPrime("lime",
"lime_window_set_text_input_enabled", "obv", false));
private static var lime_window_set_text_input_rect = new cpp.Callable<cpp.Object->cpp.Object->cpp.Void>(cpp.Prime._loadPrime("lime",
"lime_window_set_text_input_rect", "oov", false));
private static var lime_window_set_title = new cpp.Callable<cpp.Object->String->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_set_title", "oso",
false));
private static var lime_window_warp_mouse = new cpp.Callable<cpp.Object->Int->Int->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_warp_mouse",
@@ -747,6 +751,7 @@ class NativeCFFI
private static var lime_window_set_mouse_lock = CFFI.load("lime", "lime_window_set_mouse_lock", 2);
private static var lime_window_set_resizable = CFFI.load("lime", "lime_window_set_resizable", 2);
private static var lime_window_set_text_input_enabled = CFFI.load("lime", "lime_window_set_text_input_enabled", 2);
private static var lime_window_set_text_input_rect = CFFI.load("lime", "lime_window_set_text_input_rect", 2);
private static var lime_window_set_title = CFFI.load("lime", "lime_window_set_title", 2);
private static var lime_window_warp_mouse = CFFI.load("lime", "lime_window_warp_mouse", 3);
private static var lime_window_event_manager_register = CFFI.load("lime", "lime_window_event_manager_register", 2);
@@ -1342,6 +1347,9 @@ class NativeCFFI
@:hlNative("lime", "hl_window_set_text_input_enabled") private static function lime_window_set_text_input_enabled(handle:CFFIPointer,
enabled:Bool):Void {}
@:hlNative("lime", "hl_window_set_text_input_rect") private static function lime_window_set_text_input_rect(handle:CFFIPointer,
rect:Rectangle):Void {}
@:hlNative("lime", "hl_window_set_title") private static function lime_window_set_title(handle:CFFIPointer, title:String):String
{
return null;

View File

@@ -546,6 +546,18 @@ class NativeWindow
return value;
}
public function setTextInputRect(value:Rectangle):Rectangle
{
if (handle != null)
{
#if (!macro && lime_cffi)
NativeCFFI.lime_window_set_text_input_rect(handle, value);
#end
}
return value;
}
public function setFrameRate(value:Float):Float
{
// TODO: Support multiple independent frame rates per window

View File

@@ -544,6 +544,11 @@ class Window
return __backend.setTextInputEnabled(value);
}
public function setTextInputRect(value:Rectangle):Rectangle
{
return __backend.setTextInputRect(value);
}
@:noCompletion private inline function get_title():String
{
return __title;