summaryrefslogtreecommitdiff
path: root/scene/gui
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui')
-rw-r--r--scene/gui/line_edit.cpp3
-rw-r--r--scene/gui/text_edit.cpp48
-rw-r--r--scene/gui/tree.cpp9
3 files changed, 51 insertions, 9 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index e822cfef13..a77a40327f 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -212,7 +212,7 @@ void LineEdit::_input_event(InputEvent p_event) {
emit_signal( "text_entered",text );
// notify to hide soft keyboard
- notification(NOTIFICATION_FOCUS_EXIT);
+ notification(NOTIFICATION_FOCUS_EXIT);
return;
} break;
@@ -677,6 +677,7 @@ void LineEdit::selection_delete() {
undo_text = text;
text.erase(selection.begin,selection.end-selection.begin);
+ cursor_pos-=CLAMP( cursor_pos-selection.begin, 0, selection.end-selection.begin);
if (cursor_pos>=text.length()) {
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 4095ddeb37..5934aaf126 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -2611,20 +2611,53 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li
int line=-1;
int pos=-1;
+ line=p_from_line;
+
for(int i=0;i<text.size()+1;i++) {
//backwards is broken...
- int idx=(p_search_flags&SEARCH_BACKWARDS)?(text.size()-i):i; //do backwards seearch
- line = (idx+p_from_line)%text.size();
+ //int idx=(p_search_flags&SEARCH_BACKWARDS)?(text.size()-i):i; //do backwards seearch
+
+
+ if (line<0) {
+ line=text.size()-1;
+ }
+ if (line==text.size()) {
+ line=0;
+ }
String text_line = text[line];
- int from_column=(idx==0)?p_from_column:0;
- if (idx==text.size()) {
- text_line=text_line.substr(0,p_from_column); //wrap around for missing begining.
+ int from_column=0;
+ if (line==p_from_line) {
+
+ if (i==text.size()) {
+ //wrapped
+
+ if (p_search_flags&SEARCH_BACKWARDS) {
+ text_line=text_line.substr(from_column,text_line.length());
+ from_column=text_line.length();
+ } else {
+ text_line=text_line.substr(0,from_column);
+ from_column=0;
+ }
+
+ } else {
+
+ from_column=p_from_column;
+ }
+
+
+ } else {
+ //text_line=text_line.substr(0,p_from_column); //wrap around for missing begining.
+ if (p_search_flags&SEARCH_BACKWARDS)
+ from_column=text_line.length()-1;
+ else
+ from_column=0;
}
pos=-1;
if (!(p_search_flags&SEARCH_BACKWARDS)) {
+
pos = (p_search_flags&SEARCH_MATCH_CASE)?text_line.find(p_key,from_column):text_line.findn(p_key,from_column);
} else {
@@ -2642,6 +2675,11 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li
if (pos!=-1)
break;
+ if (p_search_flags&SEARCH_BACKWARDS)
+ line--;
+ else
+ line++;
+
}
if (pos==-1) {
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 25f04379ef..9084983a4c 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -3009,20 +3009,23 @@ TreeItem* Tree::_find_item_at_pos(TreeItem*p_item, const Point2& p_pos,int& r_co
String Tree::get_tooltip(const Point2& p_pos) const {
if (root) {
+
Point2 pos=p_pos;
pos -= cache.bg->get_offset();
pos.y-=_get_title_button_height();
if (pos.y<0)
return Control::get_tooltip(p_pos);
- pos.x+=h_scroll->get_val();
- pos.y+=v_scroll->get_val();
+ if (h_scroll->is_visible())
+ pos.x+=h_scroll->get_val();
+ if (v_scroll->is_visible())
+ pos.y+=v_scroll->get_val();
int col,h;
TreeItem *it = _find_item_at_pos(root,pos,col,h);
- if (it) {
+ if (it) {
String ret;
if (it->get_tooltip(col)=="")