|
@@ -193,8 +193,8 @@ void LineEdit::_input_event(InputEvent p_event) {
|
|
|
}
|
|
|
|
|
|
set_cursor_pos(0);
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -215,8 +215,7 @@ void LineEdit::_input_event(InputEvent p_event) {
|
|
|
selection_clear();
|
|
|
undo_text = text;
|
|
|
text = text.substr(0,cursor_pos);
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
} break;
|
|
@@ -475,9 +474,7 @@ void LineEdit::_input_event(InputEvent p_event) {
|
|
|
selection_delete();
|
|
|
CharType ucodestr[2]={(CharType)k.unicode,0};
|
|
|
append_at_cursor(ucodestr);
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
-
|
|
|
+ _text_changed();
|
|
|
accept_event();
|
|
|
}
|
|
|
|
|
@@ -725,8 +722,7 @@ void LineEdit::paste_text() {
|
|
|
if(selection.enabled) selection_delete();
|
|
|
append_at_cursor(paste_buffer);
|
|
|
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -750,9 +746,7 @@ void LineEdit::undo() {
|
|
|
set_cursor_pos(old_cursor_pos);
|
|
|
}
|
|
|
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
-
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
void LineEdit::shift_selection_check_pre(bool p_shift) {
|
|
@@ -881,8 +875,7 @@ void LineEdit::delete_char() {
|
|
|
// set_window_pos(cursor_pos-get_window_length());
|
|
|
}
|
|
|
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
void LineEdit::delete_text(int p_from_column, int p_to_column) {
|
|
@@ -914,8 +907,7 @@ void LineEdit::delete_text(int p_from_column, int p_to_column) {
|
|
|
window_pos=cursor_pos;
|
|
|
}
|
|
|
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
void LineEdit::set_text(String p_text) {
|
|
@@ -930,8 +922,7 @@ void LineEdit::set_text(String p_text) {
|
|
|
void LineEdit::clear() {
|
|
|
|
|
|
clear_internal();
|
|
|
- emit_signal("text_changed",text);
|
|
|
- _change_notify("text");
|
|
|
+ _text_changed();
|
|
|
}
|
|
|
|
|
|
String LineEdit::get_text() const {
|
|
@@ -1070,7 +1061,17 @@ Size2 LineEdit::get_minimum_size() const {
|
|
|
|
|
|
Size2 min=style->get_minimum_size();
|
|
|
min.height+=font->get_height();
|
|
|
- min.width+=get_constant("minimum_spaces")*font->get_char_size(' ').x;
|
|
|
+
|
|
|
+ //minimum size of text
|
|
|
+ int space_size = font->get_char_size(' ').x;
|
|
|
+ int mstext = get_constant("minimum_spaces")*space_size;
|
|
|
+
|
|
|
+ if (expand_to_text_length) {
|
|
|
+ mstext=MAX(mstext,font->get_string_size(text).x+space_size); //add a spce because some fonts are too exact
|
|
|
+ }
|
|
|
+
|
|
|
+ min.width+=mstext;
|
|
|
+
|
|
|
return min;
|
|
|
}
|
|
|
|
|
@@ -1226,6 +1227,29 @@ PopupMenu *LineEdit::get_menu() const {
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+
|
|
|
+void LineEdit::set_expand_to_text_length(bool p_len) {
|
|
|
+
|
|
|
+ expand_to_text_length=p_len;
|
|
|
+ minimum_size_changed();
|
|
|
+}
|
|
|
+
|
|
|
+bool LineEdit::get_expand_to_text_length() const{
|
|
|
+
|
|
|
+ return expand_to_text_length;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void LineEdit::_text_changed() {
|
|
|
+
|
|
|
+ if (expand_to_text_length)
|
|
|
+ minimum_size_changed();
|
|
|
+
|
|
|
+ emit_signal("text_changed",text);
|
|
|
+ _change_notify("text");
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
void LineEdit::_bind_methods() {
|
|
|
|
|
|
ObjectTypeDB::bind_method(_MD("_toggle_draw_caret"),&LineEdit::_toggle_draw_caret);
|
|
@@ -1248,6 +1272,8 @@ void LineEdit::_bind_methods() {
|
|
|
ObjectTypeDB::bind_method(_MD("get_placeholder_alpha"),&LineEdit::get_placeholder_alpha);
|
|
|
ObjectTypeDB::bind_method(_MD("set_cursor_pos","pos"),&LineEdit::set_cursor_pos);
|
|
|
ObjectTypeDB::bind_method(_MD("get_cursor_pos"),&LineEdit::get_cursor_pos);
|
|
|
+ ObjectTypeDB::bind_method(_MD("set_expand_to_text_length","pos"),&LineEdit::set_expand_to_text_length);
|
|
|
+ ObjectTypeDB::bind_method(_MD("get_expand_to_text_length"),&LineEdit::get_expand_to_text_length);
|
|
|
ObjectTypeDB::bind_method(_MD("cursor_set_blink_enabled", "enable"),&LineEdit::cursor_set_blink_enabled);
|
|
|
ObjectTypeDB::bind_method(_MD("cursor_get_blink_enabled"),&LineEdit::cursor_get_blink_enabled);
|
|
|
ObjectTypeDB::bind_method(_MD("cursor_set_blink_speed", "blink_speed"),&LineEdit::cursor_set_blink_speed);
|
|
@@ -1286,6 +1312,7 @@ void LineEdit::_bind_methods() {
|
|
|
ADD_PROPERTYNZ( PropertyInfo( Variant::INT, "max_length" ), _SCS("set_max_length"),_SCS("get_max_length") );
|
|
|
ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "editable" ), _SCS("set_editable"),_SCS("is_editable") );
|
|
|
ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "secret" ), _SCS("set_secret"),_SCS("is_secret") );
|
|
|
+ ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "expand_to_len" ), _SCS("set_expand_to_text_length"),_SCS("get_expand_to_text_length") );
|
|
|
ADD_PROPERTY( PropertyInfo( Variant::INT,"focus_mode", PROPERTY_HINT_ENUM, "None,Click,All" ), _SCS("set_focus_mode"), _SCS("get_focus_mode") );
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret/caret_blink"), _SCS("cursor_set_blink_enabled"), _SCS("cursor_get_blink_enabled"));;
|
|
|
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "caret/caret_blink_speed",PROPERTY_HINT_RANGE,"0.1,10,0.1"), _SCS("cursor_set_blink_speed"),_SCS("cursor_get_blink_speed") );
|
|
@@ -1327,7 +1354,7 @@ LineEdit::LineEdit() {
|
|
|
menu->add_separator();
|
|
|
menu->add_item(TTR("Undo"),MENU_UNDO,KEY_MASK_CMD|KEY_Z);
|
|
|
menu->connect("item_pressed",this,"menu_option");
|
|
|
-
|
|
|
+ expand_to_text_length=false;
|
|
|
|
|
|
|
|
|
}
|