You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
spin_slider added ctrl and shift shrotcuts, removed exp dragging
This commit is contained in:
@@ -56,6 +56,7 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
grabbing_spinner_attempt = true;
|
grabbing_spinner_attempt = true;
|
||||||
|
grabbing_spinner_dist_cache = 0;
|
||||||
grabbing_spinner = false;
|
grabbing_spinner = false;
|
||||||
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
|
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
|
||||||
}
|
}
|
||||||
@@ -89,21 +90,27 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
|
|
||||||
if (grabbing_spinner_attempt) {
|
if (grabbing_spinner_attempt) {
|
||||||
|
|
||||||
if (!grabbing_spinner) {
|
double diff_x = mm->get_relative().x;
|
||||||
|
if (mm->get_shift() && grabbing_spinner) {
|
||||||
|
diff_x *= 0.1;
|
||||||
|
}
|
||||||
|
grabbing_spinner_dist_cache += diff_x;
|
||||||
|
|
||||||
|
if (!grabbing_spinner && ABS(grabbing_spinner_dist_cache) > 4) {
|
||||||
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED);
|
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED);
|
||||||
grabbing_spinner = true;
|
grabbing_spinner = true;
|
||||||
|
} else {
|
||||||
|
if (mm->get_control() || updown_offset != -1) {
|
||||||
|
set_value(Math::round(get_value()));
|
||||||
|
if (ABS(grabbing_spinner_dist_cache) > 6) {
|
||||||
|
set_value(get_value() + SGN(grabbing_spinner_dist_cache));
|
||||||
|
grabbing_spinner_dist_cache = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
set_value(get_value() + get_step() * grabbing_spinner_dist_cache * 10);
|
||||||
|
grabbing_spinner_dist_cache = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double v = get_value();
|
|
||||||
|
|
||||||
double diff_x = mm->get_relative().x;
|
|
||||||
diff_x = Math::pow(ABS(diff_x), 1.8) * SGN(diff_x);
|
|
||||||
diff_x *= 0.1;
|
|
||||||
|
|
||||||
v += diff_x * get_step();
|
|
||||||
|
|
||||||
set_value(v);
|
|
||||||
|
|
||||||
} else if (updown_offset != -1) {
|
} else if (updown_offset != -1) {
|
||||||
bool new_hover = (mm->get_position().x > updown_offset);
|
bool new_hover = (mm->get_position().x > updown_offset);
|
||||||
if (new_hover != hover_updown) {
|
if (new_hover != hover_updown) {
|
||||||
@@ -336,7 +343,7 @@ EditorSpinSlider::EditorSpinSlider() {
|
|||||||
|
|
||||||
grabbing_spinner_attempt = false;
|
grabbing_spinner_attempt = false;
|
||||||
grabbing_spinner = false;
|
grabbing_spinner = false;
|
||||||
|
grabbing_spinner_dist_cache = 0;
|
||||||
set_focus_mode(FOCUS_ALL);
|
set_focus_mode(FOCUS_ALL);
|
||||||
updown_offset = -1;
|
updown_offset = -1;
|
||||||
hover_updown = false;
|
hover_updown = false;
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class EditorSpinSlider : public Range {
|
|||||||
bool grabbing_spinner;
|
bool grabbing_spinner;
|
||||||
|
|
||||||
bool read_only;
|
bool read_only;
|
||||||
|
float grabbing_spinner_dist_cache;
|
||||||
Vector2 grabbing_spinner_mouse_pos;
|
Vector2 grabbing_spinner_mouse_pos;
|
||||||
|
|
||||||
LineEdit *value_input;
|
LineEdit *value_input;
|
||||||
|
|||||||
Reference in New Issue
Block a user