Skip to content

Commit

Permalink
Make 'Line/TextEdit's context menus hide their editing options when i…
Browse files Browse the repository at this point in the history
…n readonly mode

Fixes #28243.
  • Loading branch information
YeldhamDev committed Apr 29, 2019
1 parent f5cc29f commit f7a45eb
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 20 deletions.
31 changes: 21 additions & 10 deletions scene/gui/line_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1327,7 +1327,27 @@ void LineEdit::select_all() {

void LineEdit::set_editable(bool p_editable) {

if (editable == p_editable)
return;

editable = p_editable;

// Reorganize context menu.
menu->clear();
if (editable)
menu->add_item(RTR("Cut"), MENU_CUT, KEY_MASK_CMD | KEY_X);
menu->add_item(RTR("Copy"), MENU_COPY, KEY_MASK_CMD | KEY_C);
if (editable)
menu->add_item(RTR("Paste"), MENU_PASTE, KEY_MASK_CMD | KEY_V);
menu->add_separator();
menu->add_item(RTR("Select All"), MENU_SELECT_ALL, KEY_MASK_CMD | KEY_A);
if (editable) {
menu->add_item(RTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
}

update();
}

Expand Down Expand Up @@ -1623,7 +1643,6 @@ LineEdit::LineEdit() {

deselect();
set_focus_mode(FOCUS_ALL);
editable = true;
set_default_cursor_shape(CURSOR_IBEAM);
set_mouse_filter(MOUSE_FILTER_STOP);

Expand All @@ -1638,15 +1657,7 @@ LineEdit::LineEdit() {
context_menu_enabled = true;
menu = memnew(PopupMenu);
add_child(menu);
menu->add_item(RTR("Cut"), MENU_CUT, KEY_MASK_CMD | KEY_X);
menu->add_item(RTR("Copy"), MENU_COPY, KEY_MASK_CMD | KEY_C);
menu->add_item(RTR("Paste"), MENU_PASTE, KEY_MASK_CMD | KEY_V);
menu->add_separator();
menu->add_item(RTR("Select All"), MENU_SELECT_ALL, KEY_MASK_CMD | KEY_A);
menu->add_item(RTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
set_editable(true);
menu->connect("id_pressed", this, "menu_option");
expand_to_text_length = false;
}
Expand Down
31 changes: 21 additions & 10 deletions scene/gui/text_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4344,7 +4344,27 @@ void TextEdit::clear() {

void TextEdit::set_readonly(bool p_readonly) {

if (readonly == p_readonly)
return;

readonly = p_readonly;

// Reorganize context menu.
menu->clear();
if (!readonly)
menu->add_item(RTR("Cut"), MENU_CUT, KEY_MASK_CMD | KEY_X);
menu->add_item(RTR("Copy"), MENU_COPY, KEY_MASK_CMD | KEY_C);
if (!readonly)
menu->add_item(RTR("Paste"), MENU_PASTE, KEY_MASK_CMD | KEY_V);
menu->add_separator();
menu->add_item(RTR("Select All"), MENU_SELECT_ALL, KEY_MASK_CMD | KEY_A);
if (!readonly) {
menu->add_item(RTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
}

update();
}

Expand Down Expand Up @@ -6355,7 +6375,6 @@ void TextEdit::_bind_methods() {

TextEdit::TextEdit() {

readonly = false;
setting_row = false;
draw_tabs = false;
override_selected_font_color = false;
Expand Down Expand Up @@ -6470,15 +6489,7 @@ TextEdit::TextEdit() {
context_menu_enabled = true;
menu = memnew(PopupMenu);
add_child(menu);
menu->add_item(RTR("Cut"), MENU_CUT, KEY_MASK_CMD | KEY_X);
menu->add_item(RTR("Copy"), MENU_COPY, KEY_MASK_CMD | KEY_C);
menu->add_item(RTR("Paste"), MENU_PASTE, KEY_MASK_CMD | KEY_V);
menu->add_separator();
menu->add_item(RTR("Select All"), MENU_SELECT_ALL, KEY_MASK_CMD | KEY_A);
menu->add_item(RTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
set_readonly(false);
menu->connect("id_pressed", this, "menu_option");
first_draw = true;
}
Expand Down

0 comments on commit f7a45eb

Please sign in to comment.