Browse Source

Merge pull request #6778 from Hinsbart/completion_z

Fix Script Editor drawing over Dialogs.
Rémi Verschelde 9 years ago
parent
commit
0f587c460e
2 changed files with 14 additions and 2 deletions
  1. 12 2
      scene/gui/text_edit.cpp
  2. 2 0
      scene/gui/text_edit.h

+ 12 - 2
scene/gui/text_edit.cpp

@@ -1253,15 +1253,19 @@ void TextEdit::_notification(int p_what) {
 			}
 			if (OS::get_singleton()->has_virtual_keyboard())
 				OS::get_singleton()->show_virtual_keyboard(get_text(),get_global_rect());
+			if (raised_from_completion) {
+				VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+			}
 
 		} break;
 		case NOTIFICATION_FOCUS_EXIT: {
 
 			if (OS::get_singleton()->has_virtual_keyboard())
 				OS::get_singleton()->hide_virtual_keyboard();
-
+			if (raised_from_completion) {
+				VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+			}
 		} break;
-
 	}
 }
 
@@ -4207,6 +4211,7 @@ void TextEdit::_confirm_completion() {
 void TextEdit::_cancel_code_hint() {
 
 	VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+	raised_from_completion = false;
 	completion_hint="";
 	update();
 }
@@ -4214,6 +4219,7 @@ void TextEdit::_cancel_code_hint() {
 void TextEdit::_cancel_completion() {
 
 	VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+	raised_from_completion = false;
 	if (!completion_active)
 		return;
 
@@ -4394,6 +4400,7 @@ void TextEdit::query_code_comple() {
 void TextEdit::set_code_hint(const String& p_hint) {
 
 	VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+	raised_from_completion = true;
 	completion_hint=p_hint;
 	completion_hint_offset=-0xFFFF;
 	update();
@@ -4402,6 +4409,7 @@ void TextEdit::set_code_hint(const String& p_hint) {
 void TextEdit::code_complete(const Vector<String> &p_strings) {
 
 	VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+	raised_from_completion = true;
 	completion_strings=p_strings;
 	completion_active=true;
 	completion_current="";
@@ -4816,6 +4824,8 @@ TextEdit::TextEdit()  {
 	window_has_focus=true;
 	select_identifiers_enabled=false;
 
+	raised_from_completion = false;
+
 	context_menu_enabled=true;
 	menu = memnew( PopupMenu );
 	add_child(menu);

+ 2 - 0
scene/gui/text_edit.h

@@ -246,6 +246,8 @@ class TextEdit : public Control  {
 	bool insert_mode;
 	bool select_identifiers_enabled;
 
+	bool raised_from_completion;
+
 	String hilighted_word;
 
 	uint64_t last_dblclk;