|
@@ -235,6 +235,25 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (is_middle_mouse_paste_enabled() && b->is_pressed() && b->get_button_index() == MOUSE_BUTTON_MIDDLE && is_editable()) {
|
|
|
|
+ String paste_buffer = DisplayServer::get_singleton()->clipboard_get_primary().strip_escapes();
|
|
|
|
+
|
|
|
|
+ deselect();
|
|
|
|
+ set_caret_at_pixel_pos(b->get_position().x);
|
|
|
|
+ if (!paste_buffer.is_empty()) {
|
|
|
|
+ insert_text_at_caret(paste_buffer);
|
|
|
|
+
|
|
|
|
+ if (!text_changed_dirty) {
|
|
|
|
+ if (is_inside_tree()) {
|
|
|
|
+ MessageQueue::get_singleton()->push_call(this, "_text_changed");
|
|
|
|
+ }
|
|
|
|
+ text_changed_dirty = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ grab_focus();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (b->get_button_index() != MOUSE_BUTTON_LEFT) {
|
|
if (b->get_button_index() != MOUSE_BUTTON_LEFT) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -271,6 +290,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|
selection.double_click = true;
|
|
selection.double_click = true;
|
|
last_dblclk = 0;
|
|
last_dblclk = 0;
|
|
caret_column = selection.begin;
|
|
caret_column = selection.begin;
|
|
|
|
+ if (!pass) {
|
|
|
|
+ DisplayServer::get_singleton()->clipboard_set_primary(text);
|
|
|
|
+ }
|
|
} else if (b->is_double_click()) {
|
|
} else if (b->is_double_click()) {
|
|
// Double-click select word.
|
|
// Double-click select word.
|
|
last_dblclk = OS::get_singleton()->get_ticks_msec();
|
|
last_dblclk = OS::get_singleton()->get_ticks_msec();
|
|
@@ -286,6 +308,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if (!pass) {
|
|
|
|
+ DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -303,6 +328,9 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|
update();
|
|
update();
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
|
+ if (selection.enabled && !pass && b->get_button_index() == MOUSE_BUTTON_LEFT) {
|
|
|
|
+ DisplayServer::get_singleton()->clipboard_set_primary(text.substr(selection.begin, selection.end - selection.begin));
|
|
|
|
+ }
|
|
if (!text.is_empty() && is_editable() && clear_button_enabled) {
|
|
if (!text.is_empty() && is_editable() && clear_button_enabled) {
|
|
bool press_attempt = clear_button_status.press_attempt;
|
|
bool press_attempt = clear_button_status.press_attempt;
|
|
clear_button_status.press_attempt = false;
|
|
clear_button_status.press_attempt = false;
|
|
@@ -1890,6 +1918,14 @@ bool LineEdit::is_virtual_keyboard_enabled() const {
|
|
return virtual_keyboard_enabled;
|
|
return virtual_keyboard_enabled;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void LineEdit::set_middle_mouse_paste_enabled(bool p_enabled) {
|
|
|
|
+ middle_mouse_paste_enabled = p_enabled;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+bool LineEdit::is_middle_mouse_paste_enabled() const {
|
|
|
|
+ return middle_mouse_paste_enabled;
|
|
|
|
+}
|
|
|
|
+
|
|
void LineEdit::set_selecting_enabled(bool p_enabled) {
|
|
void LineEdit::set_selecting_enabled(bool p_enabled) {
|
|
selecting_enabled = p_enabled;
|
|
selecting_enabled = p_enabled;
|
|
|
|
|
|
@@ -2156,6 +2192,8 @@ void LineEdit::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("is_clear_button_enabled"), &LineEdit::is_clear_button_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_clear_button_enabled"), &LineEdit::is_clear_button_enabled);
|
|
ClassDB::bind_method(D_METHOD("set_shortcut_keys_enabled", "enable"), &LineEdit::set_shortcut_keys_enabled);
|
|
ClassDB::bind_method(D_METHOD("set_shortcut_keys_enabled", "enable"), &LineEdit::set_shortcut_keys_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_shortcut_keys_enabled"), &LineEdit::is_shortcut_keys_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_shortcut_keys_enabled"), &LineEdit::is_shortcut_keys_enabled);
|
|
|
|
+ ClassDB::bind_method(D_METHOD("set_middle_mouse_paste_enabled", "enable"), &LineEdit::set_middle_mouse_paste_enabled);
|
|
|
|
+ ClassDB::bind_method(D_METHOD("is_middle_mouse_paste_enabled"), &LineEdit::is_middle_mouse_paste_enabled);
|
|
ClassDB::bind_method(D_METHOD("set_selecting_enabled", "enable"), &LineEdit::set_selecting_enabled);
|
|
ClassDB::bind_method(D_METHOD("set_selecting_enabled", "enable"), &LineEdit::set_selecting_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_selecting_enabled"), &LineEdit::is_selecting_enabled);
|
|
ClassDB::bind_method(D_METHOD("is_selecting_enabled"), &LineEdit::is_selecting_enabled);
|
|
ClassDB::bind_method(D_METHOD("set_right_icon", "icon"), &LineEdit::set_right_icon);
|
|
ClassDB::bind_method(D_METHOD("set_right_icon", "icon"), &LineEdit::set_right_icon);
|
|
@@ -2211,6 +2249,7 @@ void LineEdit::_bind_methods() {
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clear_button_enabled"), "set_clear_button_enabled", "is_clear_button_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clear_button_enabled"), "set_clear_button_enabled", "is_clear_button_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled");
|
|
|
|
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "middle_mouse_paste_enabled"), "set_middle_mouse_paste_enabled", "is_middle_mouse_paste_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selecting_enabled"), "set_selecting_enabled", "is_selecting_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selecting_enabled"), "set_selecting_enabled", "is_selecting_enabled");
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "right_icon", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_right_icon", "get_right_icon");
|
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "right_icon", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_right_icon", "get_right_icon");
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left,Inherited"), "set_text_direction", "get_text_direction");
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left,Inherited"), "set_text_direction", "get_text_direction");
|