diff --git a/core/math/math_2d.h b/core/math/math_2d.h index 1f450364091..2c8749f79d9 100644 --- a/core/math/math_2d.h +++ b/core/math/math_2d.h @@ -272,7 +272,7 @@ struct Rect2 { return new_rect; }; - bool has_point(const Point2& p_point) const { + inline bool has_point(const Point2& p_point) const { if (p_point.x < pos.x) return false; if (p_point.y < pos.y) @@ -286,12 +286,12 @@ struct Rect2 { return true; } - bool no_area() const { return (size.width<=0 || size.height<=0 ); } + inline bool no_area() const { return (size.width<=0 || size.height<=0 ); } bool operator==(const Rect2& p_rect) const { return pos==p_rect.pos && size==p_rect.size; } bool operator!=(const Rect2& p_rect) const { return pos!=p_rect.pos || size!=p_rect.size; } - Rect2 grow(real_t p_by) const { + inline Rect2 grow(real_t p_by) const { Rect2 g=*this; g.pos.x-=p_by; @@ -463,7 +463,7 @@ struct Rect2i { return new_rect; }; - bool has_point(const Point2& p_point) { + bool has_point(const Point2& p_point) const { if (p_point.x < pos.x) return false; if (p_point.y < pos.y) diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 3e4c04873ac..d84e9956ba2 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -47,7 +47,6 @@ #define TAB_PIXELS - static bool _is_text_char(CharType c) { return (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_'; @@ -2038,6 +2037,14 @@ void TextEdit::insert_text_at_cursor(const String& p_text) { } +Control::CursorShape TextEdit::get_cursor_shape(const Point2& p_pos) const { + if(completion_active && completion_rect.has_point(p_pos)) { + return CURSOR_ARROW; + } + return CURSOR_IBEAM; +} + + void TextEdit::set_text(String p_text){ setting_text=true; diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 5826c84c805..c3bb5823e77 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -280,6 +280,8 @@ public: SEARCH_WHOLE_WORDS=2, SEARCH_BACKWARDS=4 }; + + virtual CursorShape get_cursor_shape(const Point2& p_pos=Point2i()) const; //void delete_char(); //void delete_line();