summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scene/gui/line_edit.cpp19
-rw-r--r--tools/editor/plugins/theme_editor_plugin.cpp1
2 files changed, 14 insertions, 6 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 2a4e82a8e7..ab556ede0c 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -731,14 +731,21 @@ void LineEdit::set_cursor_pos(int p_pos) {
int width_to_cursor=0;
int wp=window_pos;
- if (font != NULL) {
- for (int i=window_pos;i<cursor_pos;i++)
- width_to_cursor+=font->get_char_size( text[i] ).width;
+ if (font.is_valid()) {
+
+ int accum_width=0;
+
+ for(int i=cursor_pos;i>=window_pos;i--) {
- while (width_to_cursor >= window_width && wp < text.length()) {
+ if (i>=text.length()) {
+ accum_width=font->get_char_size(' ').width; //anything should do
+ } else {
+ accum_width+=font->get_char_size(text[i],i+1<text.length()?text[i+1]:0).width; //anything should do
+ }
+ if (accum_width>=window_width)
+ break;
- width_to_cursor -= font->get_char_size(text[wp]).width;
- wp++;
+ wp=i;
}
}
diff --git a/tools/editor/plugins/theme_editor_plugin.cpp b/tools/editor/plugins/theme_editor_plugin.cpp
index 37cb0398e7..2673948365 100644
--- a/tools/editor/plugins/theme_editor_plugin.cpp
+++ b/tools/editor/plugins/theme_editor_plugin.cpp
@@ -583,6 +583,7 @@ ThemeEditor::ThemeEditor() {
add_child(panel);
panel->set_area_as_parent_rect(0);
panel->set_margin(MARGIN_TOP,25);
+ panel->set_theme(Theme::get_default());
main_vb= memnew( VBoxContainer );
panel->add_child(main_vb);