diff options
Diffstat (limited to 'scene/gui/line_edit.cpp')
-rw-r--r-- | scene/gui/line_edit.cpp | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index bb177ae0e7..c1cfef0381 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -43,16 +43,13 @@ #endif #include "scene/main/window.h" static bool _is_text_char(CharType c) { - return !is_symbol(c); } void LineEdit::_gui_input(Ref<InputEvent> p_event) { - Ref<InputEventMouseButton> b = p_event; if (b.is_valid()) { - if (b->is_pressed() && b->get_button_index() == BUTTON_RIGHT && context_menu_enabled) { menu->set_position(get_global_transform().xform(get_local_mouse_position())); menu->set_size(Vector2(1, 1)); @@ -68,7 +65,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { _reset_caret_blink_timer(); if (b->is_pressed()) { - accept_event(); //don't pass event further when clicked on text field if (!text.empty() && is_editable() && _is_over_clear_button(b->get_position())) { clear_button_status.press_attempt = true; @@ -81,14 +77,11 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { set_cursor_at_pixel_pos(b->get_position().x); if (b->get_shift()) { - selection_fill_at_cursor(); selection.creating = true; } else { - if (b->is_doubleclick() && selecting_enabled) { - selection.enabled = true; selection.begin = 0; selection.end = text.length(); @@ -98,12 +91,10 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { selection.drag_attempt = false; if ((cursor_pos < selection.begin) || (cursor_pos > selection.end) || !selection.enabled) { - deselect(); selection.cursor_start = cursor_pos; selection.creating = true; } else if (selection.enabled) { - selection.drag_attempt = true; } } @@ -111,7 +102,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { update(); } else { - if (!text.empty() && is_editable() && clear_button_enabled) { bool press_attempt = clear_button_status.press_attempt; clear_button_status.press_attempt = false; @@ -137,7 +127,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { Ref<InputEventMouseMotion> m = p_event; if (m.is_valid()) { - if (!text.empty() && is_editable() && clear_button_enabled) { bool last_press_inside = clear_button_status.pressing_inside; clear_button_status.pressing_inside = clear_button_status.press_attempt && _is_over_clear_button(m->get_position()); @@ -147,7 +136,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { } if (m->get_button_mask() & BUTTON_LEFT) { - if (selection.creating) { set_cursor_at_pixel_pos(m->get_position().x); selection_fill_at_cursor(); @@ -158,7 +146,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { Ref<InputEventKey> k = p_event; if (k.is_valid()) { - if (!k->is_pressed()) return; @@ -202,11 +189,9 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { unsigned int code = k->get_keycode(); if (k->get_command() && is_shortcut_keys_enabled()) { - bool handled = true; switch (code) { - case (KEY_X): { // CUT. if (editable) { @@ -224,7 +209,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { case (KEY_V): { // PASTE. if (editable) { - paste_text(); } @@ -243,7 +227,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { case (KEY_U): { // Delete from start to cursor. if (editable) { - deselect(); text = text.substr(cursor_pos, text.length() - cursor_pos); update_cached_width(); @@ -256,7 +239,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { case (KEY_Y): { // PASTE (Yank for unix users). if (editable) { - paste_text(); } @@ -264,7 +246,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { case (KEY_K): { // Delete from cursor_pos to end. if (editable) { - deselect(); text = text.substr(0, cursor_pos); _text_changed(); @@ -300,13 +281,10 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { _reset_caret_blink_timer(); if (!k->get_metakey()) { - bool handled = true; switch (code) { - case KEY_KP_ENTER: case KEY_ENTER: { - emit_signal("text_entered", text); if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD)) DisplayServer::get_singleton()->virtual_keyboard_hide(); @@ -314,7 +292,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { } break; case KEY_BACKSPACE: { - if (!editable) break; @@ -380,7 +357,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { if (k->get_command()) { set_cursor_position(0); } else if (k->get_alt()) { - #else if (k->get_alt()) { handled = false; @@ -465,7 +441,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { } break; case KEY_UP: { - shift_selection_check_pre(k->get_shift()); if (get_cursor_position() == 0) handled = false; @@ -473,7 +448,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { shift_selection_check_post(k->get_shift()); } break; case KEY_DOWN: { - shift_selection_check_pre(k->get_shift()); if (get_cursor_position() == text.length()) handled = false; @@ -481,7 +455,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { shift_selection_check_post(k->get_shift()); } break; case KEY_DELETE: { - if (!editable) break; @@ -513,7 +486,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { bool prev_char = false; while (cc < text.length()) { - bool ischar = _is_text_char(text[cc]); if (prev_char && !ischar) @@ -538,7 +510,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { [[fallthrough]]; } case KEY_HOME: { - shift_selection_check_pre(k->get_shift()); set_cursor_position(0); shift_selection_check_post(k->get_shift()); @@ -551,7 +522,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { [[fallthrough]]; } case KEY_END: { - shift_selection_check_pre(k->get_shift()); set_cursor_position(text.length()); shift_selection_check_post(k->get_shift()); @@ -568,7 +538,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { } break; default: { - handled = false; } break; } @@ -577,7 +546,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { accept_event(); } else if (!k->get_command()) { if (k->get_unicode() >= 32 && k->get_keycode() != KEY_DELETE) { - if (editable) { selection_delete(); CharType ucodestr[2] = { (CharType)k->get_unicode(), 0 }; @@ -602,19 +570,16 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { } void LineEdit::set_align(Align p_align) { - ERR_FAIL_INDEX((int)p_align, 4); align = p_align; update(); } LineEdit::Align LineEdit::get_align() const { - return align; } Variant LineEdit::get_drag_data(const Point2 &p_point) { - if (selection.drag_attempt && selection.enabled) { String t = text.substr(selection.begin, selection.end - selection.begin); Label *l = memnew(Label); @@ -626,11 +591,9 @@ Variant LineEdit::get_drag_data(const Point2 &p_point) { return Variant(); } bool LineEdit::can_drop_data(const Point2 &p_point, const Variant &p_data) const { - return p_data.get_type() == Variant::STRING; } void LineEdit::drop_data(const Point2 &p_point, const Variant &p_data) { - if (p_data.get_type() == Variant::STRING) { set_cursor_at_pixel_pos(p_point.x); int selected = selection.end - selection.begin; @@ -666,7 +629,6 @@ bool LineEdit::_is_over_clear_button(const Point2 &p_pos) const { } void LineEdit::_notification(int p_what) { - switch (p_what) { #ifdef TOOLS_ENABLED case NOTIFICATION_ENTER_TREE: { @@ -681,7 +643,6 @@ void LineEdit::_notification(int p_what) { } break; #endif case NOTIFICATION_RESIZED: { - window_pos = 0; set_cursor_position(get_cursor_position()); @@ -702,7 +663,6 @@ void LineEdit::_notification(int p_what) { update(); } break; case NOTIFICATION_DRAW: { - if ((!has_focus() && !menu->has_focus()) || !window_has_focus) { draw_caret = false; } @@ -726,7 +686,6 @@ void LineEdit::_notification(int p_what) { style->draw(ci, Rect2(Point2(), size)); if (has_focus()) { - get_theme_stylebox("focus")->draw(ci, Rect2(Point2(), size)); } @@ -735,21 +694,17 @@ void LineEdit::_notification(int p_what) { int cached_text_width = using_placeholder ? cached_placeholder_width : cached_width; switch (align) { - case ALIGN_FILL: case ALIGN_LEFT: { - x_ofs = style->get_offset().x; } break; case ALIGN_CENTER: { - if (window_pos != 0) x_ofs = style->get_offset().x; else x_ofs = MAX(style->get_margin(MARGIN_LEFT), int(size.width - (cached_text_width)) / 2); } break; case ALIGN_RIGHT: { - x_ofs = MAX(style->get_margin(MARGIN_LEFT), int(size.width - style->get_margin(MARGIN_RIGHT) - (cached_text_width))); } break; } @@ -800,7 +755,6 @@ void LineEdit::_notification(int p_what) { int caret_height = font->get_height() > y_area ? y_area : font->get_height(); FontDrawer drawer(font, Color(1, 1, 1)); while (true) { - // End of string, break. if (char_ofs >= t.length()) break; @@ -926,7 +880,6 @@ void LineEdit::_notification(int p_what) { } } break; case NOTIFICATION_FOCUS_ENTER: { - if (caret_blink_enabled) { caret_blink_timer->start(); } else { @@ -944,7 +897,6 @@ void LineEdit::_notification(int p_what) { } break; case NOTIFICATION_FOCUS_EXIT: { - if (caret_blink_enabled) { caret_blink_timer->stop(); } @@ -961,7 +913,6 @@ void LineEdit::_notification(int p_what) { } break; case MainLoop::NOTIFICATION_OS_IME_UPDATE: { - if (has_focus()) { ime_text = DisplayServer::get_singleton()->ime_get_text(); ime_selection = DisplayServer::get_singleton()->ime_get_selection(); @@ -972,14 +923,12 @@ void LineEdit::_notification(int p_what) { } void LineEdit::copy_text() { - if (selection.enabled && !pass) { DisplayServer::get_singleton()->clipboard_set(text.substr(selection.begin, selection.end - selection.begin)); } } void LineEdit::cut_text() { - if (selection.enabled && !pass) { DisplayServer::get_singleton()->clipboard_set(text.substr(selection.begin, selection.end - selection.begin)); selection_delete(); @@ -987,12 +936,10 @@ void LineEdit::cut_text() { } void LineEdit::paste_text() { - // Strip escape characters like \n and \t as they can't be displayed on LineEdit. String paste_buffer = DisplayServer::get_singleton()->clipboard_get().strip_escapes(); if (paste_buffer != "") { - int prev_len = text.length(); if (selection.enabled) selection_delete(); @@ -1050,7 +997,6 @@ void LineEdit::redo() { } void LineEdit::shift_selection_check_pre(bool p_shift) { - if (!selection.enabled && p_shift) { selection.cursor_start = cursor_pos; } @@ -1059,13 +1005,11 @@ void LineEdit::shift_selection_check_pre(bool p_shift) { } void LineEdit::shift_selection_check_post(bool p_shift) { - if (p_shift) selection_fill_at_cursor(); } void LineEdit::set_cursor_at_pixel_pos(int p_x) { - Ref<Font> font = get_theme_font("font"); int ofs = window_pos; Ref<StyleBox> style = get_theme_stylebox("normal"); @@ -1075,14 +1019,11 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { int r_icon_width = Control::get_theme_icon("clear")->get_width(); switch (align) { - case ALIGN_FILL: case ALIGN_LEFT: { - pixel_ofs = int(style->get_offset().x); } break; case ALIGN_CENTER: { - if (window_pos != 0) pixel_ofs = int(style->get_offset().x); else @@ -1092,7 +1033,6 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { pixel_ofs -= int(r_icon_width / 2 + style->get_margin(MARGIN_RIGHT)); } break; case ALIGN_RIGHT: { - pixel_ofs = int(size.width - style->get_margin(MARGIN_RIGHT) - (cached_width)); if (display_clear_icon) @@ -1101,7 +1041,6 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { } while (ofs < text.length()) { - int char_w = 0; if (font != nullptr) { char_w = font->get_char_size(pass ? secret_character[0] : text[ofs]).width; @@ -1119,7 +1058,6 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { } int LineEdit::get_cursor_pixel_pos() { - Ref<Font> font = get_theme_font("font"); int ofs = window_pos; Ref<StyleBox> style = get_theme_stylebox("normal"); @@ -1129,14 +1067,11 @@ int LineEdit::get_cursor_pixel_pos() { int r_icon_width = Control::get_theme_icon("clear")->get_width(); switch (align) { - case ALIGN_FILL: case ALIGN_LEFT: { - pixel_ofs = int(style->get_offset().x); } break; case ALIGN_CENTER: { - if (window_pos != 0) pixel_ofs = int(style->get_offset().x); else @@ -1146,7 +1081,6 @@ int LineEdit::get_cursor_pixel_pos() { pixel_ofs -= int(r_icon_width / 2 + style->get_margin(MARGIN_RIGHT)); } break; case ALIGN_RIGHT: { - pixel_ofs = int(size.width - style->get_margin(MARGIN_RIGHT) - (cached_width)); if (display_clear_icon) @@ -1210,7 +1144,6 @@ void LineEdit::_toggle_draw_caret() { } void LineEdit::delete_char() { - if ((text.length() <= 0) || (cursor_pos == 0)) return; @@ -1231,7 +1164,6 @@ void LineEdit::delete_char() { } void LineEdit::delete_text(int p_from_column, int p_to_column) { - if (text.size() > 0) { Ref<Font> font = get_theme_font("font"); if (font != nullptr) { @@ -1246,11 +1178,9 @@ void LineEdit::delete_text(int p_from_column, int p_to_column) { cursor_pos -= CLAMP(cursor_pos - p_from_column, 0, p_to_column - p_from_column); if (cursor_pos >= text.length()) { - cursor_pos = text.length(); } if (window_pos > cursor_pos) { - window_pos = cursor_pos; } @@ -1267,7 +1197,6 @@ void LineEdit::delete_text(int p_from_column, int p_to_column) { } void LineEdit::set_text(String p_text) { - clear_internal(); append_at_cursor(p_text); @@ -1281,18 +1210,15 @@ void LineEdit::set_text(String p_text) { } void LineEdit::clear() { - clear_internal(); _text_changed(); } String LineEdit::get_text() const { - return text; } void LineEdit::set_placeholder(String p_text) { - placeholder = p_text; placeholder_translated = tr(placeholder); update_placeholder_width(); @@ -1300,23 +1226,19 @@ void LineEdit::set_placeholder(String p_text) { } String LineEdit::get_placeholder() const { - return placeholder; } void LineEdit::set_placeholder_alpha(float p_alpha) { - placeholder_alpha = p_alpha; update(); } float LineEdit::get_placeholder_alpha() const { - return placeholder_alpha; } void LineEdit::set_cursor_position(int p_pos) { - if (p_pos > (int)text.length()) p_pos = text.length(); @@ -1326,7 +1248,6 @@ void LineEdit::set_cursor_position(int p_pos) { cursor_pos = p_pos; if (!is_inside_tree()) { - window_pos = cursor_pos; return; } @@ -1351,11 +1272,9 @@ void LineEdit::set_cursor_position(int p_pos) { int wp = window_pos; if (font.is_valid()) { - int accum_width = 0; for (int i = cursor_pos; i >= window_pos; i--) { - if (i >= text.length()) { // Do not do this, because if the cursor is at the end, its just fine that it takes no space. // accum_width = font->get_char_size(' ').width; @@ -1380,19 +1299,16 @@ void LineEdit::set_cursor_position(int p_pos) { } int LineEdit::get_cursor_position() const { - return cursor_pos; } void LineEdit::set_window_pos(int p_pos) { - window_pos = p_pos; if (window_pos < 0) window_pos = 0; } void LineEdit::append_at_cursor(String p_text) { - if ((max_length <= 0) || (text.length() + p_text.length() <= max_length)) { String pre = text.substr(0, cursor_pos); String post = text.substr(cursor_pos, text.length() - cursor_pos); @@ -1405,7 +1321,6 @@ void LineEdit::append_at_cursor(String p_text) { } void LineEdit::clear_internal() { - deselect(); _clear_undo_stack(); cached_width = 0; @@ -1417,7 +1332,6 @@ void LineEdit::clear_internal() { } Size2 LineEdit::get_minimum_size() const { - Ref<StyleBox> style = get_theme_stylebox("normal"); Ref<Font> font = get_theme_font("font"); @@ -1448,7 +1362,6 @@ Size2 LineEdit::get_minimum_size() const { } void LineEdit::deselect() { - selection.begin = 0; selection.end = 0; selection.cursor_start = 0; @@ -1459,7 +1372,6 @@ void LineEdit::deselect() { } void LineEdit::selection_delete() { - if (selection.enabled) delete_text(selection.begin, selection.end); @@ -1467,14 +1379,12 @@ void LineEdit::selection_delete() { } void LineEdit::set_max_length(int p_max_length) { - ERR_FAIL_COND(p_max_length < 0); max_length = p_max_length; set_text(text); } int LineEdit::get_max_length() const { - return max_length; } @@ -1508,7 +1418,6 @@ void LineEdit::select_all() { } void LineEdit::set_editable(bool p_editable) { - if (editable == p_editable) return; @@ -1520,24 +1429,20 @@ void LineEdit::set_editable(bool p_editable) { } bool LineEdit::is_editable() const { - return editable; } void LineEdit::set_secret(bool p_secret) { - pass = p_secret; update_cached_width(); update(); } bool LineEdit::is_secret() const { - return pass; } void LineEdit::set_secret_character(const String &p_string) { - // An empty string as the secret character would crash the engine. // It also wouldn't make sense to use multiple characters as the secret character. ERR_FAIL_COND_MSG(p_string.length() != 1, "Secret character must be exactly one character long (" + itos(p_string.length()) + " characters given)."); @@ -1580,12 +1485,10 @@ void LineEdit::select(int p_from, int p_to) { } bool LineEdit::is_text_field() const { - return true; } void LineEdit::menu_option(int p_option) { - switch (p_option) { case MENU_CUT: { if (editable) { @@ -1593,7 +1496,6 @@ void LineEdit::menu_option(int p_option) { } } break; case MENU_COPY: { - copy_text(); } break; case MENU_PASTE: { @@ -1642,7 +1544,6 @@ void LineEdit::_editor_settings_changed() { } void LineEdit::set_expand_to_text_length(bool p_enabled) { - expand_to_text_length = p_enabled; minimum_size_changed(); set_window_pos(0); @@ -1786,7 +1687,6 @@ void LineEdit::_generate_context_menu() { } void LineEdit::_bind_methods() { - ClassDB::bind_method(D_METHOD("_text_changed"), &LineEdit::_text_changed); ClassDB::bind_method(D_METHOD("set_align", "align"), &LineEdit::set_align); @@ -1873,7 +1773,6 @@ void LineEdit::_bind_methods() { } LineEdit::LineEdit() { - undo_stack_pos = nullptr; _create_undo_state(); align = ALIGN_LEFT; |