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

@@ -57,6 +57,7 @@ namespace lime {
virtual void SetMouseLock (bool mouseLock) = 0;
virtual bool SetResizable (bool resizable) = 0;
virtual void SetTextInputEnabled (bool enable) = 0;
virtual void SetTextInputRect (Rectangle *rect) = 0;
virtual const char* SetTitle (const char* title) = 0;
virtual void WarpMouse (int x, int y) = 0;

View File

@@ -3668,6 +3668,23 @@ namespace lime {
}
void lime_window_set_text_input_rect (value window, value rect) {
Window* targetWindow = (Window*)val_data (window);
Rectangle _rect = Rectangle (rect);
targetWindow->SetTextInputRect (&_rect);
}
HL_PRIM void HL_NAME(hl_window_set_text_input_rect) (HL_CFFIPointer* window, Rectangle* rect) {
Window* targetWindow = (Window*)window->ptr;
targetWindow->SetTextInputRect (rect);
}
value lime_window_set_title (value window, HxString title) {
Window* targetWindow = (Window*)val_data (window);
@@ -3931,6 +3948,7 @@ namespace lime {
DEFINE_PRIME2v (lime_window_set_mouse_lock);
DEFINE_PRIME2 (lime_window_set_resizable);
DEFINE_PRIME2v (lime_window_set_text_input_enabled);
DEFINE_PRIME2v (lime_window_set_text_input_rect);
DEFINE_PRIME2 (lime_window_set_title);
DEFINE_PRIME3v (lime_window_warp_mouse);
DEFINE_PRIME2 (lime_zlib_compress);
@@ -4114,6 +4132,7 @@ namespace lime {
DEFINE_HL_PRIM (_VOID, hl_window_set_mouse_lock, _TCFFIPOINTER _BOOL);
DEFINE_HL_PRIM (_BOOL, hl_window_set_resizable, _TCFFIPOINTER _BOOL);
DEFINE_HL_PRIM (_VOID, hl_window_set_text_input_enabled, _TCFFIPOINTER _BOOL);
DEFINE_HL_PRIM (_VOID, hl_window_set_text_input_rect, _TCFFIPOINTER _TRECTANGLE);
DEFINE_HL_PRIM (_STRING, hl_window_set_title, _TCFFIPOINTER _STRING);
DEFINE_HL_PRIM (_VOID, hl_window_warp_mouse, _TCFFIPOINTER _I32 _I32);
DEFINE_HL_PRIM (_TBYTES, hl_zlib_compress, _TBYTES _TBYTES);

View File

@@ -1050,6 +1050,23 @@ namespace lime {
}
void SDLWindow::SetTextInputRect (Rectangle * rect) {
SDL_Rect bounds = { 0, 0, 0, 0 };
if (rect) {
bounds.x = rect->x;
bounds.y = rect->y;
bounds.w = rect->width;
bounds.h = rect->height;
}
SDL_SetTextInputRect(&bounds);
}
const char* SDLWindow::SetTitle (const char* title) {
SDL_SetWindowTitle (sdlWindow, title);

View File

@@ -51,6 +51,7 @@ namespace lime {
virtual void SetMouseLock (bool mouseLock);
virtual bool SetResizable (bool resizable);
virtual void SetTextInputEnabled (bool enabled);
virtual void SetTextInputRect (Rectangle *rect);
virtual const char* SetTitle (const char* title);
virtual void WarpMouse (int x, int y);