summaryrefslogtreecommitdiff
path: root/scene/gui
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui')
-rw-r--r--scene/gui/base_button.cpp12
-rw-r--r--scene/gui/box_container.cpp4
-rw-r--r--scene/gui/color_picker.cpp108
-rw-r--r--scene/gui/graph_node.cpp159
-rw-r--r--scene/gui/grid_container.cpp4
-rw-r--r--scene/gui/item_list.cpp4
-rw-r--r--scene/gui/margin_container.cpp38
-rw-r--r--scene/gui/progress_bar.cpp1
-rw-r--r--scene/gui/split_container.cpp4
-rw-r--r--scene/gui/tab_container.cpp1
-rw-r--r--scene/gui/text_edit.cpp24
11 files changed, 200 insertions, 159 deletions
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index a6b4d475ba..806c8afa5b 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -82,16 +82,16 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce);
}
- emit_signal("pressed");
_unpress_group();
+ emit_signal("pressed");
} else {
status.pressed = !status.pressed;
pressed();
- emit_signal("pressed");
_unpress_group();
+ emit_signal("pressed");
toggled(status.pressed);
if (get_script_instance()) {
@@ -135,6 +135,7 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce);
}
+ _unpress_group();
emit_signal("pressed");
} else {
@@ -142,6 +143,7 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
status.pressed = !status.pressed;
pressed();
+ _unpress_group();
emit_signal("pressed");
toggled(status.pressed);
@@ -150,8 +152,6 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
}
emit_signal("toggled", status.pressed);
}
-
- _unpress_group();
}
status.press_attempt = false;
@@ -215,12 +215,14 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce);
}
+ _unpress_group();
emit_signal("pressed");
} else {
status.pressed = !status.pressed;
pressed();
+ _unpress_group();
emit_signal("pressed");
toggled(status.pressed);
@@ -229,8 +231,6 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
}
emit_signal("toggled", status.pressed);
}
-
- _unpress_group();
}
accept_event();
diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp
index 35e8e984cd..cc37d4cf7d 100644
--- a/scene/gui/box_container.cpp
+++ b/scene/gui/box_container.cpp
@@ -255,6 +255,10 @@ void BoxContainer::_notification(int p_what) {
_resort();
} break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ minimum_size_changed();
+ } break;
}
}
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index b99128e65f..4b1c7b3db7 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -35,6 +35,7 @@
#include "core/os/os.h"
#ifdef TOOLS_ENABLED
+#include "editor_scale.h"
#include "editor_settings.h"
#endif
@@ -81,11 +82,8 @@ void ColorPicker::_notification(int p_what) {
} break;
case MainLoop::NOTIFICATION_WM_QUIT_REQUEST: {
- if (screen != NULL) {
- if (screen->is_visible()) {
- screen->hide();
- }
- }
+ if (screen != NULL && screen->is_visible())
+ screen->hide();
} break;
}
}
@@ -156,7 +154,7 @@ void ColorPicker::_value_changed(double) {
void ColorPicker::_html_entered(const String &p_html) {
- if (updating)
+ if (updating || text_is_constructor || !c_text->is_visible())
return;
float last_alpha = color.a;
@@ -176,14 +174,15 @@ void ColorPicker::_update_color() {
updating = true;
for (int i = 0; i < 4; i++) {
- scroll[i]->set_step(0.01);
if (raw_mode_enabled) {
+ scroll[i]->set_step(0.01);
scroll[i]->set_max(100);
if (i == 3)
scroll[i]->set_max(1);
scroll[i]->set_value(color.components[i]);
} else {
- const int byte_value = color.components[i] * 255;
+ scroll[i]->set_step(1);
+ const float byte_value = color.components[i] * 255.0;
scroll[i]->set_max(next_power_of_2(MAX(255, byte_value)) - 1);
scroll[i]->set_value(byte_value);
}
@@ -210,15 +209,18 @@ void ColorPicker::_update_presets() {
}
void ColorPicker::_text_type_toggled() {
- if (!Engine::get_singleton()->is_editor_hint())
- return;
+
text_is_constructor = !text_is_constructor;
if (text_is_constructor) {
text_type->set_text("");
text_type->set_icon(get_icon("Script", "EditorIcons"));
+
+ c_text->set_editable(false);
} else {
text_type->set_text("#");
text_type->set_icon(NULL);
+
+ c_text->set_editable(true);
}
_update_color();
}
@@ -303,19 +305,21 @@ bool ColorPicker::is_deferred_mode() const {
void ColorPicker::_update_text_value() {
bool visible = true;
if (text_is_constructor) {
- String t = "Color(" + String::num(color.r) + "," + String::num(color.g) + "," + String::num(color.b);
+ String t = "Color(" + String::num(color.r) + ", " + String::num(color.g) + ", " + String::num(color.b);
if (edit_alpha && color.a < 1)
- t += ("," + String::num(color.a) + ")");
+ t += ", " + String::num(color.a) + ")";
else
t += ")";
c_text->set_text(t);
- } else {
- if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) {
- visible = false;
- } else {
- c_text->set_text(color.to_html(edit_alpha && color.a < 1));
- }
}
+
+ if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) {
+ visible = false;
+ } else if (!text_is_constructor) {
+ c_text->set_text(color.to_html(edit_alpha && color.a < 1));
+ }
+
+ text_type->set_visible(visible);
c_text->set_visible(visible);
}
@@ -493,21 +497,17 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) {
void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseButton> bev = p_event;
-
- if (bev.is_valid()) {
-
- if (bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) {
- emit_signal("color_changed", color);
- screen->hide();
- }
+ if (bev.is_valid() && bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) {
+ emit_signal("color_changed", color);
+ screen->hide();
}
Ref<InputEventMouseMotion> mev = p_event;
-
if (mev.is_valid()) {
Viewport *r = get_tree()->get_root();
if (!r->get_visible_rect().has_point(Point2(mev->get_global_position().x, mev->get_global_position().y)))
return;
+
Ref<Image> img = r->get_texture()->get_data();
if (img.is_valid() && !img->empty()) {
img->lock();
@@ -533,6 +533,8 @@ void ColorPicker::_screen_pick_pressed() {
screen->set_anchors_and_margins_preset(Control::PRESET_WIDE);
screen->set_default_cursor_shape(CURSOR_POINTING_HAND);
screen->connect("gui_input", this, "_screen_input");
+ // It immediately toggles off in the first press otherwise.
+ screen->call_deferred("connect", "hide", btn_pick, "set_pressed", varray(false));
}
screen->raise();
screen->show_modal();
@@ -614,22 +616,25 @@ ColorPicker::ColorPicker() :
screen = NULL;
HBoxContainer *hb_smpl = memnew(HBoxContainer);
- btn_pick = memnew(ToolButton);
- btn_pick->connect("pressed", this, "_screen_pick_pressed");
+ add_child(hb_smpl);
sample = memnew(TextureRect);
+ hb_smpl->add_child(sample);
sample->set_h_size_flags(SIZE_EXPAND_FILL);
sample->connect("draw", this, "_sample_draw");
- hb_smpl->add_child(sample);
+ btn_pick = memnew(ToolButton);
hb_smpl->add_child(btn_pick);
- add_child(hb_smpl);
+ btn_pick->set_toggle_mode(true);
+ btn_pick->set_tooltip(TTR("Pick a color from the screen."));
+ btn_pick->connect("pressed", this, "_screen_pick_pressed");
HBoxContainer *hb_edit = memnew(HBoxContainer);
+ add_child(hb_edit);
hb_edit->set_v_size_flags(SIZE_EXPAND_FILL);
uv_edit = memnew(Control);
-
+ hb_edit->add_child(uv_edit);
uv_edit->connect("gui_input", this, "_uv_input");
uv_edit->set_mouse_filter(MOUSE_FILTER_PASS);
uv_edit->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -637,19 +642,14 @@ ColorPicker::ColorPicker() :
uv_edit->set_custom_minimum_size(Size2(get_constant("sv_width"), get_constant("sv_height")));
uv_edit->connect("draw", this, "_hsv_draw", make_binds(0, uv_edit));
- add_child(hb_edit);
-
w_edit = memnew(Control);
+ hb_edit->add_child(w_edit);
w_edit->set_custom_minimum_size(Size2(get_constant("h_width"), 0));
w_edit->set_h_size_flags(SIZE_FILL);
w_edit->set_v_size_flags(SIZE_EXPAND_FILL);
w_edit->connect("gui_input", this, "_w_input");
w_edit->connect("draw", this, "_hsv_draw", make_binds(1, w_edit));
- hb_edit->add_child(uv_edit);
- hb_edit->add_child(memnew(VSeparator));
- hb_edit->add_child(w_edit);
-
VBoxContainer *vbl = memnew(VBoxContainer);
add_child(vbl);
@@ -690,31 +690,43 @@ ColorPicker::ColorPicker() :
}
HBoxContainer *hhb = memnew(HBoxContainer);
+ vbr->add_child(hhb);
btn_mode = memnew(CheckButton);
+ hhb->add_child(btn_mode);
btn_mode->set_text(TTR("Raw Mode"));
btn_mode->connect("toggled", this, "set_raw_mode");
- hhb->add_child(btn_mode);
- vbr->add_child(hhb);
+
text_type = memnew(Button);
- text_type->set_flat(true);
- text_type->connect("pressed", this, "_text_type_toggled");
hhb->add_child(text_type);
+ text_type->set_text("#");
+ text_type->set_tooltip(TTR("Switch between hexadecimal and code values."));
+ if (Engine::get_singleton()->is_editor_hint()) {
+
+#ifdef TOOLS_ENABLED
+ text_type->set_custom_minimum_size(Size2(28 * EDSCALE, 0)); // Adjust for the width of the "Script" icon.
+#endif
+ text_type->connect("pressed", this, "_text_type_toggled");
+ } else {
+
+ text_type->set_flat(true);
+ text_type->set_mouse_filter(MOUSE_FILTER_IGNORE);
+ }
c_text = memnew(LineEdit);
hhb->add_child(c_text);
+ c_text->set_h_size_flags(SIZE_EXPAND_FILL);
c_text->connect("text_entered", this, "_html_entered");
c_text->connect("focus_entered", this, "_focus_enter");
c_text->connect("focus_exited", this, "_html_focus_exit");
- text_type->set_text("#");
- c_text->set_h_size_flags(SIZE_EXPAND_FILL);
-
_update_controls();
updating = false;
set_pick_color(Color(1, 1, 1));
+ add_child(memnew(HSeparator));
+
HBoxContainer *bbc = memnew(HBoxContainer);
add_child(bbc);
@@ -724,9 +736,9 @@ ColorPicker::ColorPicker() :
preset->connect("draw", this, "_update_presets");
bt_add_preset = memnew(Button);
+ bbc->add_child(bt_add_preset);
bt_add_preset->set_tooltip(TTR("Add current color as a preset"));
bt_add_preset->connect("pressed", this, "_add_preset_pressed");
- bbc->add_child(bt_add_preset);
}
/////////////////
@@ -837,9 +849,9 @@ void ColorPickerButton::_bind_methods() {
ColorPickerButton::ColorPickerButton() {
- //Initialization is now done deferred
- //this improves performance in the inspector as the color picker
- //can be expensive to initialize
+ // Initialization is now done deferred,
+ // this improves performance in the inspector as the color picker
+ // can be expensive to initialize.
picker = NULL;
popup = NULL;
edit_alpha = true;
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp
index 7c879d239c..8c588109d6 100644
--- a/scene/gui/graph_node.cpp
+++ b/scene/gui/graph_node.cpp
@@ -192,97 +192,104 @@ bool GraphNode::has_point(const Point2 &p_point) const {
void GraphNode::_notification(int p_what) {
- if (p_what == NOTIFICATION_DRAW) {
+ switch (p_what) {
+ case NOTIFICATION_DRAW: {
- Ref<StyleBox> sb;
+ Ref<StyleBox> sb;
- if (comment) {
- sb = get_stylebox(selected ? "commentfocus" : "comment");
+ if (comment) {
+ sb = get_stylebox(selected ? "commentfocus" : "comment");
- } else {
+ } else {
- sb = get_stylebox(selected ? "selectedframe" : "frame");
- }
+ sb = get_stylebox(selected ? "selectedframe" : "frame");
+ }
- //sb=sb->duplicate();
- //sb->call("set_modulate",modulate);
- Ref<Texture> port = get_icon("port");
- Ref<Texture> close = get_icon("close");
- Ref<Texture> resizer = get_icon("resizer");
- int close_offset = get_constant("close_offset");
- int close_h_offset = get_constant("close_h_offset");
- Color close_color = get_color("close_color");
- Ref<Font> title_font = get_font("title_font");
- int title_offset = get_constant("title_offset");
- int title_h_offset = get_constant("title_h_offset");
- Color title_color = get_color("title_color");
- Point2i icofs = -port->get_size() * 0.5;
- int edgeofs = get_constant("port_offset");
- icofs.y += sb->get_margin(MARGIN_TOP);
-
- draw_style_box(sb, Rect2(Point2(), get_size()));
-
- switch (overlay) {
- case OVERLAY_DISABLED: {
-
- } break;
- case OVERLAY_BREAKPOINT: {
-
- draw_style_box(get_stylebox("breakpoint"), Rect2(Point2(), get_size()));
- } break;
- case OVERLAY_POSITION: {
- draw_style_box(get_stylebox("position"), Rect2(Point2(), get_size()));
-
- } break;
- }
+ //sb=sb->duplicate();
+ //sb->call("set_modulate",modulate);
+ Ref<Texture> port = get_icon("port");
+ Ref<Texture> close = get_icon("close");
+ Ref<Texture> resizer = get_icon("resizer");
+ int close_offset = get_constant("close_offset");
+ int close_h_offset = get_constant("close_h_offset");
+ Color close_color = get_color("close_color");
+ Ref<Font> title_font = get_font("title_font");
+ int title_offset = get_constant("title_offset");
+ int title_h_offset = get_constant("title_h_offset");
+ Color title_color = get_color("title_color");
+ Point2i icofs = -port->get_size() * 0.5;
+ int edgeofs = get_constant("port_offset");
+ icofs.y += sb->get_margin(MARGIN_TOP);
+
+ draw_style_box(sb, Rect2(Point2(), get_size()));
+
+ switch (overlay) {
+ case OVERLAY_DISABLED: {
+
+ } break;
+ case OVERLAY_BREAKPOINT: {
+
+ draw_style_box(get_stylebox("breakpoint"), Rect2(Point2(), get_size()));
+ } break;
+ case OVERLAY_POSITION: {
+ draw_style_box(get_stylebox("position"), Rect2(Point2(), get_size()));
+
+ } break;
+ }
- int w = get_size().width - sb->get_minimum_size().x;
+ int w = get_size().width - sb->get_minimum_size().x;
- if (show_close)
- w -= close->get_width();
+ if (show_close)
+ w -= close->get_width();
- draw_string(title_font, Point2(sb->get_margin(MARGIN_LEFT) + title_h_offset, -title_font->get_height() + title_font->get_ascent() + title_offset), title, title_color, w);
- if (show_close) {
- Vector2 cpos = Point2(w + sb->get_margin(MARGIN_LEFT) + close_h_offset, -close->get_height() + close_offset);
- draw_texture(close, cpos, close_color);
- close_rect.position = cpos;
- close_rect.size = close->get_size();
- } else {
- close_rect = Rect2();
- }
+ draw_string(title_font, Point2(sb->get_margin(MARGIN_LEFT) + title_h_offset, -title_font->get_height() + title_font->get_ascent() + title_offset), title, title_color, w);
+ if (show_close) {
+ Vector2 cpos = Point2(w + sb->get_margin(MARGIN_LEFT) + close_h_offset, -close->get_height() + close_offset);
+ draw_texture(close, cpos, close_color);
+ close_rect.position = cpos;
+ close_rect.size = close->get_size();
+ } else {
+ close_rect = Rect2();
+ }
- for (Map<int, Slot>::Element *E = slot_info.front(); E; E = E->next()) {
-
- if (E->key() < 0 || E->key() >= cache_y.size())
- continue;
- if (!slot_info.has(E->key()))
- continue;
- const Slot &s = slot_info[E->key()];
- //left
- if (s.enable_left) {
- Ref<Texture> p = port;
- if (s.custom_slot_left.is_valid()) {
- p = s.custom_slot_left;
+ for (Map<int, Slot>::Element *E = slot_info.front(); E; E = E->next()) {
+
+ if (E->key() < 0 || E->key() >= cache_y.size())
+ continue;
+ if (!slot_info.has(E->key()))
+ continue;
+ const Slot &s = slot_info[E->key()];
+ //left
+ if (s.enable_left) {
+ Ref<Texture> p = port;
+ if (s.custom_slot_left.is_valid()) {
+ p = s.custom_slot_left;
+ }
+ p->draw(get_canvas_item(), icofs + Point2(edgeofs, cache_y[E->key()]), s.color_left);
}
- p->draw(get_canvas_item(), icofs + Point2(edgeofs, cache_y[E->key()]), s.color_left);
- }
- if (s.enable_right) {
- Ref<Texture> p = port;
- if (s.custom_slot_right.is_valid()) {
- p = s.custom_slot_right;
+ if (s.enable_right) {
+ Ref<Texture> p = port;
+ if (s.custom_slot_right.is_valid()) {
+ p = s.custom_slot_right;
+ }
+ p->draw(get_canvas_item(), icofs + Point2(get_size().x - edgeofs, cache_y[E->key()]), s.color_right);
}
- p->draw(get_canvas_item(), icofs + Point2(get_size().x - edgeofs, cache_y[E->key()]), s.color_right);
}
- }
- if (resizable) {
- draw_texture(resizer, get_size() - resizer->get_size());
- }
- }
+ if (resizable) {
+ draw_texture(resizer, get_size() - resizer->get_size());
+ }
+ } break;
+
+ case NOTIFICATION_SORT_CHILDREN: {
+
+ _resort();
+ } break;
- if (p_what == NOTIFICATION_SORT_CHILDREN) {
+ case NOTIFICATION_THEME_CHANGED: {
- _resort();
+ minimum_size_changed();
+ } break;
}
}
diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp
index b37d08de71..d0e2edc7b5 100644
--- a/scene/gui/grid_container.cpp
+++ b/scene/gui/grid_container.cpp
@@ -164,6 +164,10 @@ void GridContainer::_notification(int p_what) {
}
} break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ minimum_size_changed();
+ } break;
}
}
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index f5521cccd5..efe452305b 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -715,9 +715,9 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) {
}
} else if (p_event->is_action("ui_cancel")) {
search_string = "";
- } else if (p_event->is_action("ui_select")) {
+ } else if (p_event->is_action("ui_select") && select_mode == SELECT_MULTI) {
- if (select_mode == SELECT_MULTI && current >= 0 && current < items.size()) {
+ if (current >= 0 && current < items.size()) {
if (items[current].selectable && !items[current].disabled && !items[current].selected) {
select(current, false);
emit_signal("multi_selected", current, true);
diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp
index a087b68d25..62ba45c484 100644
--- a/scene/gui/margin_container.cpp
+++ b/scene/gui/margin_container.cpp
@@ -64,27 +64,33 @@ Size2 MarginContainer::get_minimum_size() const {
void MarginContainer::_notification(int p_what) {
- if (p_what == NOTIFICATION_SORT_CHILDREN) {
+ switch (p_what) {
+ case NOTIFICATION_SORT_CHILDREN: {
- int margin_left = get_constant("margin_left");
- int margin_top = get_constant("margin_top");
- int margin_right = get_constant("margin_right");
- int margin_bottom = get_constant("margin_bottom");
+ int margin_left = get_constant("margin_left");
+ int margin_top = get_constant("margin_top");
+ int margin_right = get_constant("margin_right");
+ int margin_bottom = get_constant("margin_bottom");
- Size2 s = get_size();
+ Size2 s = get_size();
- for (int i = 0; i < get_child_count(); i++) {
+ for (int i = 0; i < get_child_count(); i++) {
- Control *c = Object::cast_to<Control>(get_child(i));
- if (!c)
- continue;
- if (c->is_set_as_toplevel())
- continue;
+ Control *c = Object::cast_to<Control>(get_child(i));
+ if (!c)
+ continue;
+ if (c->is_set_as_toplevel())
+ continue;
- int w = s.width - margin_left - margin_right;
- int h = s.height - margin_top - margin_bottom;
- fit_child_in_rect(c, Rect2(margin_left, margin_top, w, h));
- }
+ int w = s.width - margin_left - margin_right;
+ int h = s.height - margin_top - margin_bottom;
+ fit_child_in_rect(c, Rect2(margin_left, margin_top, w, h));
+ }
+ } break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ minimum_size_changed();
+ } break;
}
}
diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp
index e7564bbf73..2195ec9778 100644
--- a/scene/gui/progress_bar.cpp
+++ b/scene/gui/progress_bar.cpp
@@ -92,5 +92,6 @@ void ProgressBar::_bind_methods() {
ProgressBar::ProgressBar() {
set_v_size_flags(0);
+ set_step(0.01);
percent_visible = true;
}
diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp
index e4cb2a06fc..d6a93238b2 100644
--- a/scene/gui/split_container.cpp
+++ b/scene/gui/split_container.cpp
@@ -193,6 +193,10 @@ void SplitContainer::_notification(int p_what) {
draw_texture(tex, Point2i(middle_sep + (sep - tex->get_width()) / 2, (size.y - tex->get_height()) / 2));
}
} break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ minimum_size_changed();
+ } break;
}
}
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index b4fe6b0255..212efa4976 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -338,6 +338,7 @@ void TabContainer::_notification(int p_what) {
}
} break;
case NOTIFICATION_THEME_CHANGED: {
+ minimum_size_changed();
call_deferred("_on_theme_changed"); //wait until all changed theme
} break;
}
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 09fbb39866..4abde6cc0f 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -2645,24 +2645,26 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
}
case KEY_UP: {
- if (k->get_shift())
- _pre_shift_selection();
if (k->get_alt()) {
scancode_handled = false;
break;
}
#ifndef APPLE_STYLE_KEYS
if (k->get_command()) {
- _scroll_lines_up();
- break;
- }
#else
if (k->get_command() && k->get_alt()) {
+#endif
_scroll_lines_up();
break;
}
+ if (k->get_shift()) {
+ _pre_shift_selection();
+ }
+
+#ifdef APPLE_STYLE_KEYS
if (k->get_command()) {
+
cursor_set_line(0);
} else
#endif
@@ -2696,24 +2698,24 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
}
case KEY_DOWN: {
- if (k->get_shift())
- _pre_shift_selection();
if (k->get_alt()) {
scancode_handled = false;
break;
}
#ifndef APPLE_STYLE_KEYS
if (k->get_command()) {
- _scroll_lines_down();
- break;
- }
-
#else
if (k->get_command() && k->get_alt()) {
+#endif
_scroll_lines_down();
break;
}
+ if (k->get_shift()) {
+ _pre_shift_selection();
+ }
+
+#ifdef APPLE_STYLE_KEYS
if (k->get_command()) {
cursor_set_line(get_last_unhidden_line(), true, false, 9999);
} else