feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
|
|
@ -35,10 +35,7 @@
|
|||
#include "core/os/keyboard.h"
|
||||
#include "editor/editor_settings.h"
|
||||
#include "editor/themes/editor_scale.h"
|
||||
|
||||
bool EditorSpinSlider::is_text_field() const {
|
||||
return true;
|
||||
}
|
||||
#include "scene/theme/theme_db.h"
|
||||
|
||||
String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
|
||||
if (!read_only && grabber->is_visible()) {
|
||||
|
|
@ -70,6 +67,7 @@ void EditorSpinSlider::gui_input(const Ref<InputEvent> &p_event) {
|
|||
} else {
|
||||
set_value(get_value() - get_step());
|
||||
}
|
||||
emit_signal("updown_pressed");
|
||||
return;
|
||||
}
|
||||
_grab_start();
|
||||
|
|
@ -184,10 +182,6 @@ void EditorSpinSlider::_grabber_gui_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (is_read_only()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (grabbing_grabber) {
|
||||
if (mb.is_valid()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP) {
|
||||
|
|
@ -240,7 +234,7 @@ void EditorSpinSlider::_grabber_gui_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
void EditorSpinSlider::_value_input_gui_input(const Ref<InputEvent> &p_event) {
|
||||
Ref<InputEventKey> k = p_event;
|
||||
if (k.is_valid() && k->is_pressed() && !is_read_only()) {
|
||||
if (k.is_valid() && k->is_pressed() && !read_only) {
|
||||
Key code = k->get_keycode();
|
||||
|
||||
switch (code) {
|
||||
|
|
@ -314,7 +308,7 @@ void EditorSpinSlider::_draw_spin_slider() {
|
|||
bool rtl = is_layout_rtl();
|
||||
Vector2 size = get_size();
|
||||
|
||||
Ref<StyleBox> sb = get_theme_stylebox(is_read_only() ? SNAME("read_only") : CoreStringName(normal), SNAME("LineEdit"));
|
||||
Ref<StyleBox> sb = get_theme_stylebox(read_only ? SNAME("read_only") : CoreStringName(normal), SNAME("LineEdit"));
|
||||
if (!flat) {
|
||||
draw_style_box(sb, Rect2(Vector2(), size));
|
||||
}
|
||||
|
|
@ -326,14 +320,14 @@ void EditorSpinSlider::_draw_spin_slider() {
|
|||
int label_width = font->get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, font_size).width;
|
||||
int number_width = size.width - sb->get_minimum_size().width - label_width - sep;
|
||||
|
||||
Ref<Texture2D> updown = get_theme_icon(is_read_only() ? SNAME("updown_disabled") : SNAME("updown"), SNAME("SpinBox"));
|
||||
Ref<Texture2D> updown = get_theme_icon(read_only ? SNAME("updown_disabled") : SNAME("updown"), SNAME("SpinBox"));
|
||||
|
||||
String numstr = get_text_value();
|
||||
|
||||
int vofs = (size.height - font->get_height(font_size)) / 2 + font->get_ascent(font_size);
|
||||
|
||||
Color fc = get_theme_color(is_read_only() ? SNAME("font_uneditable_color") : SceneStringName(font_color), SNAME("LineEdit"));
|
||||
Color lc = get_theme_color(is_read_only() ? SNAME("read_only_label_color") : SNAME("label_color"));
|
||||
Color fc = get_theme_color(read_only ? SNAME("font_uneditable_color") : SceneStringName(font_color), SNAME("LineEdit"));
|
||||
Color lc = get_theme_color(read_only ? SNAME("read_only_label_color") : SNAME("label_color"));
|
||||
|
||||
if (flat && !label.is_empty()) {
|
||||
Ref<StyleBox> label_bg = get_theme_stylebox(SNAME("label_bg"), SNAME("EditorSpinSlider"));
|
||||
|
|
@ -372,7 +366,7 @@ void EditorSpinSlider::_draw_spin_slider() {
|
|||
}
|
||||
if (glyphs[i].font_rid != RID()) {
|
||||
TS->font_draw_glyph(glyphs[i].font_rid, ci, glyphs[i].font_size, text_ofs + Vector2(glyphs[i].x_off, glyphs[i].y_off), glyphs[i].index, color);
|
||||
} else if ((glyphs[i].flags & TextServer::GRAPHEME_IS_VIRTUAL) != TextServer::GRAPHEME_IS_VIRTUAL) {
|
||||
} else if (((glyphs[i].flags & TextServer::GRAPHEME_IS_VIRTUAL) != TextServer::GRAPHEME_IS_VIRTUAL) && ((glyphs[i].flags & TextServer::GRAPHEME_IS_EMBEDDED_OBJECT) != TextServer::GRAPHEME_IS_EMBEDDED_OBJECT)) {
|
||||
TS->draw_hex_code_box(ci, glyphs[i].font_size, text_ofs + Vector2(glyphs[i].x_off, glyphs[i].y_off), glyphs[i].index, color);
|
||||
}
|
||||
}
|
||||
|
|
@ -382,8 +376,8 @@ void EditorSpinSlider::_draw_spin_slider() {
|
|||
TS->free_rid(num_rid);
|
||||
|
||||
if (!hide_slider) {
|
||||
if (get_step() == 1) {
|
||||
Ref<Texture2D> updown2 = get_theme_icon(is_read_only() ? SNAME("updown_disabled") : SNAME("updown"), SNAME("SpinBox"));
|
||||
if (editing_integer) {
|
||||
Ref<Texture2D> updown2 = read_only ? theme_cache.updown_disabled_icon : theme_cache.updown_icon;
|
||||
int updown_vofs = (size.height - updown2->get_height()) / 2;
|
||||
if (rtl) {
|
||||
updown_offset = sb->get_margin(SIDE_LEFT);
|
||||
|
|
@ -444,7 +438,7 @@ void EditorSpinSlider::_draw_spin_slider() {
|
|||
Vector2 scale = get_global_transform_with_canvas().get_scale();
|
||||
grabber->set_scale(scale);
|
||||
grabber->reset_size();
|
||||
grabber->set_position(get_global_position() + (grabber_rect.get_center() - grabber->get_size() * 0.5) * scale);
|
||||
grabber->set_position((grabber_rect.get_center() - grabber->get_size() * 0.5) * scale);
|
||||
|
||||
if (mousewheel_over_grabber) {
|
||||
Input::get_singleton()->warp_mouse(grabber->get_position() + grabber_rect.size);
|
||||
|
|
@ -536,6 +530,19 @@ bool EditorSpinSlider::is_hiding_slider() const {
|
|||
return hide_slider;
|
||||
}
|
||||
|
||||
void EditorSpinSlider::set_editing_integer(bool p_editing_integer) {
|
||||
if (p_editing_integer == editing_integer) {
|
||||
return;
|
||||
}
|
||||
|
||||
editing_integer = p_editing_integer;
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
bool EditorSpinSlider::is_editing_integer() const {
|
||||
return editing_integer;
|
||||
}
|
||||
|
||||
void EditorSpinSlider::set_label(const String &p_label) {
|
||||
label = p_label;
|
||||
queue_redraw();
|
||||
|
|
@ -603,7 +610,7 @@ void EditorSpinSlider::_value_focus_exited() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (is_read_only()) {
|
||||
if (read_only) {
|
||||
// Spin slider has become read only while it was being edited.
|
||||
return;
|
||||
}
|
||||
|
|
@ -614,13 +621,13 @@ void EditorSpinSlider::_value_focus_exited() {
|
|||
// -> TAB was pressed
|
||||
// -> modal_close was not called
|
||||
// -> need to close/hide manually
|
||||
if (value_input_closed_frame != Engine::get_singleton()->get_frames_drawn()) {
|
||||
if (!is_visible_in_tree() || value_input_closed_frame != Engine::get_singleton()->get_frames_drawn()) {
|
||||
// Hidden or something else took focus.
|
||||
if (value_input_popup) {
|
||||
value_input_popup->hide();
|
||||
}
|
||||
//tab was pressed
|
||||
} else {
|
||||
//enter, click, esc
|
||||
// Enter or Esc was pressed.
|
||||
grab_focus();
|
||||
}
|
||||
|
||||
|
|
@ -639,7 +646,7 @@ void EditorSpinSlider::_grabber_mouse_exited() {
|
|||
|
||||
void EditorSpinSlider::set_read_only(bool p_enable) {
|
||||
read_only = p_enable;
|
||||
if (read_only && value_input) {
|
||||
if (read_only && value_input && value_input->is_inside_tree()) {
|
||||
value_input->release_focus();
|
||||
}
|
||||
|
||||
|
|
@ -664,6 +671,10 @@ bool EditorSpinSlider::is_grabbing() const {
|
|||
}
|
||||
|
||||
void EditorSpinSlider::_focus_entered() {
|
||||
if (read_only) {
|
||||
return;
|
||||
}
|
||||
|
||||
_ensure_input_popup();
|
||||
value_input->set_text(get_text_value());
|
||||
value_input_popup->set_size(get_size());
|
||||
|
|
@ -691,16 +702,24 @@ void EditorSpinSlider::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_hide_slider", "hide_slider"), &EditorSpinSlider::set_hide_slider);
|
||||
ClassDB::bind_method(D_METHOD("is_hiding_slider"), &EditorSpinSlider::is_hiding_slider);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_editing_integer", "editing_integer"), &EditorSpinSlider::set_editing_integer);
|
||||
ClassDB::bind_method(D_METHOD("is_editing_integer"), &EditorSpinSlider::is_editing_integer);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "label"), "set_label", "get_label");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "suffix"), "set_suffix", "get_suffix");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "read_only"), "set_read_only", "is_read_only");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flat"), "set_flat", "is_flat");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_slider"), "set_hide_slider", "is_hiding_slider");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editing_integer"), "set_editing_integer", "is_editing_integer");
|
||||
|
||||
ADD_SIGNAL(MethodInfo("grabbed"));
|
||||
ADD_SIGNAL(MethodInfo("ungrabbed"));
|
||||
ADD_SIGNAL(MethodInfo("updown_pressed"));
|
||||
ADD_SIGNAL(MethodInfo("value_focus_entered"));
|
||||
ADD_SIGNAL(MethodInfo("value_focus_exited"));
|
||||
|
||||
BIND_THEME_ITEM_CUSTOM(Theme::DATA_TYPE_ICON, EditorSpinSlider, updown_icon, "updown");
|
||||
BIND_THEME_ITEM_CUSTOM(Theme::DATA_TYPE_ICON, EditorSpinSlider, updown_disabled_icon, "updown_disabled");
|
||||
}
|
||||
|
||||
void EditorSpinSlider::_ensure_input_popup() {
|
||||
|
|
@ -713,11 +732,12 @@ void EditorSpinSlider::_ensure_input_popup() {
|
|||
add_child(value_input_popup);
|
||||
|
||||
value_input = memnew(LineEdit);
|
||||
value_input->set_emoji_menu_enabled(false);
|
||||
value_input->set_focus_mode(FOCUS_CLICK);
|
||||
value_input_popup->add_child(value_input);
|
||||
value_input->set_anchors_and_offsets_preset(PRESET_FULL_RECT);
|
||||
value_input_popup->connect(SceneStringName(hidden), callable_mp(this, &EditorSpinSlider::_value_input_closed));
|
||||
value_input->connect("text_submitted", callable_mp(this, &EditorSpinSlider::_value_input_submitted));
|
||||
value_input->connect(SceneStringName(text_submitted), callable_mp(this, &EditorSpinSlider::_value_input_submitted));
|
||||
value_input->connect(SceneStringName(focus_exited), callable_mp(this, &EditorSpinSlider::_value_focus_exited));
|
||||
value_input->connect(SceneStringName(gui_input), callable_mp(this, &EditorSpinSlider::_value_input_gui_input));
|
||||
|
||||
|
|
@ -731,7 +751,7 @@ EditorSpinSlider::EditorSpinSlider() {
|
|||
grabber = memnew(TextureRect);
|
||||
add_child(grabber);
|
||||
grabber->hide();
|
||||
grabber->set_as_top_level(true);
|
||||
grabber->set_z_index(1);
|
||||
grabber->set_mouse_filter(MOUSE_FILTER_STOP);
|
||||
grabber->connect(SceneStringName(mouse_entered), callable_mp(this, &EditorSpinSlider::_grabber_mouse_entered));
|
||||
grabber->connect(SceneStringName(mouse_exited), callable_mp(this, &EditorSpinSlider::_grabber_mouse_exited));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue