Explorar o código

Fix ability to cut/paste text in LineEdit/TextEdit in readonly mode.

Fixes #6466

(cherry picked from commit 9c71e5a9df7ae5e3a81acd3332d16d5bc4e04556)
Andreas Haas %!s(int64=9) %!d(string=hai) anos
pai
achega
d3b549f2a3
Modificáronse 2 ficheiros con 24 adicións e 12 borrados
  1. 9 5
      scene/gui/line_edit.cpp
  2. 15 7
      scene/gui/text_edit.cpp

+ 9 - 5
scene/gui/line_edit.cpp

@@ -1190,24 +1190,28 @@ void LineEdit::menu_option(int p_option) {
 
 	switch(p_option) {
 		case MENU_CUT: {
-			cut_text();
+			if (editable) {
+				cut_text();
+			}
 		} break;
 		case MENU_COPY: {
 
 			copy_text();
 		} break;
 		case MENU_PASTE: {
-
-			paste_text();
+			if (editable) {
+				paste_text();
+			}
 		} break;
 		case MENU_CLEAR: {
-			clear();
+			if (editable) {
+				clear();
+			}
 		} break;
 		case MENU_SELECT_ALL: {
 			select_all();
 		} break;
 		case MENU_UNDO: {
-
 			undo();
 		} break;
 

+ 15 - 7
scene/gui/text_edit.cpp

@@ -2481,7 +2481,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
 
 				} break;
 				case KEY_X: {
-
+					if (readonly) {
+						break;
+					}
 					if (!k.mod.command || k.mod.shift || k.mod.alt) {
 						scancode_handled=false;
 						break;
@@ -2513,7 +2515,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
 						undo();
 				} break;
 				case KEY_V: {
-
+					if (readonly) {
+						break;
+					}
 					if (!k.mod.command || k.mod.shift || k.mod.alt) {
 						scancode_handled=false;
 						break;
@@ -4401,18 +4405,22 @@ void TextEdit::menu_option(int p_option) {
 
 	switch( p_option ) {
 		case MENU_CUT: {
-
-			cut();
+			if (!readonly) {
+				cut();
+			}
 		} break;
 		case MENU_COPY: {
 			copy();
 		} break;
 		case MENU_PASTE: {
-
-			paste();
+			if (!readonly) {
+				paste();
+			}
 		} break;
 		case MENU_CLEAR: {
-			clear();
+			if (!readonly) {
+				clear();
+			}
 		} break;
 		case MENU_SELECT_ALL: {
 			select_all();