summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinston Yallow <44872771+winston-yallow@users.noreply.github.com>2021-07-21 00:45:29 +0200
committerWinston <44872771+winston-yallow@users.noreply.github.com>2023-04-27 13:45:24 +0200
commit277e261acf3c3bcd0085777537b4463b31f56add (patch)
treef197e7eb803e3f5e77ade9580799b7f7f534e67b
parent26fb911f79d7b16c46ca476923fe1f32ab5d27ed (diff)
downloadredot-engine-277e261acf3c3bcd0085777537b4463b31f56add.tar.gz
Add editor setting for spin slider sensibility
-rw-r--r--doc/classes/EditorSettings.xml3
-rw-r--r--editor/editor_settings.cpp1
-rw-r--r--editor/gui/editor_spin_slider.cpp9
-rw-r--r--editor/gui/editor_spin_slider.h1
4 files changed, 12 insertions, 2 deletions
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 14ef879f95..ddaed23d55 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -571,6 +571,9 @@
If [code]true[/code], editor main menu is using embedded [MenuBar] instead of system global menu.
Specific to the macOS platform.
</member>
+ <member name="interface/inspector/float_drag_speed" type="float" setter="" getter="">
+ Base speed for increasing/decreasing float values by dragging them in the inspector.
+ </member>
<member name="interface/inspector/max_array_dictionary_items_per_page" type="int" setter="" getter="">
The number of [Array] or [Dictionary] items to display on each "page" in the inspector. Higher values allow viewing more values per page, but take more time to load. This increased load time is noticeable when selecting nodes that have array or dictionary properties in the editor.
</member>
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 2cdce158b5..9a6302b695 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -454,6 +454,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
// Inspector
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "interface/inspector/max_array_dictionary_items_per_page", 20, "10,100,1")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/inspector/show_low_level_opentype_features", false, "")
+ EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/inspector/float_drag_speed", 5.0, "0.1,100,0.01")
// Theme
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_ENUM, "interface/theme/preset", "Default", "Default,Breeze Dark,Godot 2,Gray,Light,Solarized (Dark),Solarized (Light),Black (OLED),Custom")
diff --git a/editor/gui/editor_spin_slider.cpp b/editor/gui/editor_spin_slider.cpp
index ecbf12fed8..6d02fcef1d 100644
--- a/editor/gui/editor_spin_slider.cpp
+++ b/editor/gui/editor_spin_slider.cpp
@@ -34,6 +34,7 @@
#include "core/math/expression.h"
#include "core/os/keyboard.h"
#include "editor/editor_scale.h"
+#include "editor/editor_settings.h"
String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
if (grabber->is_visible()) {
@@ -103,7 +104,7 @@ void EditorSpinSlider::gui_input(const Ref<InputEvent> &p_event) {
if (mm->is_shift_pressed() && grabbing_spinner) {
diff_x *= 0.1;
}
- grabbing_spinner_dist_cache += diff_x;
+ grabbing_spinner_dist_cache += diff_x * grabbing_spinner_speed;
if (!grabbing_spinner && ABS(grabbing_spinner_dist_cache) > 4 * EDSCALE) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED);
@@ -439,7 +440,11 @@ void EditorSpinSlider::_draw_spin_slider() {
void EditorSpinSlider::_notification(int p_what) {
switch (p_what) {
- case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_ENTER_TREE: {
+ grabbing_spinner_speed = EditorSettings::get_singleton()->get("interface/inspector/float_drag_speed");
+ _update_value_input_stylebox();
+ } break;
+
case NOTIFICATION_THEME_CHANGED: {
_update_value_input_stylebox();
} break;
diff --git a/editor/gui/editor_spin_slider.h b/editor/gui/editor_spin_slider.h
index a4d810b18b..8c643157f1 100644
--- a/editor/gui/editor_spin_slider.h
+++ b/editor/gui/editor_spin_slider.h
@@ -60,6 +60,7 @@ class EditorSpinSlider : public Range {
bool read_only = false;
float grabbing_spinner_dist_cache = 0.0f;
+ float grabbing_spinner_speed = 0.0f;
Vector2 grabbing_spinner_mouse_pos;
double pre_grab_value = 0.0;