diff options
| -rw-r--r-- | core/input/input.cpp | 5 | ||||
| -rw-r--r-- | core/variant/variant.h | 2 | ||||
| -rw-r--r-- | platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt | 6 | ||||
| -rw-r--r-- | platform/windows/display_server_windows.cpp | 2 | ||||
| -rw-r--r-- | scene/gui/color_mode.cpp | 13 | ||||
| -rw-r--r-- | scene/gui/color_picker.cpp | 6 | ||||
| -rw-r--r-- | scene/gui/color_picker.h | 2 |
7 files changed, 26 insertions, 10 deletions
diff --git a/core/input/input.cpp b/core/input/input.cpp index 1348389481..ca348c0c3c 100644 --- a/core/input/input.cpp +++ b/core/input/input.cpp @@ -1356,8 +1356,9 @@ void Input::parse_mapping(String p_mapping) { String output = entry[idx].get_slice(":", 0).replace(" ", ""); String input = entry[idx].get_slice(":", 1).replace(" ", ""); - ERR_CONTINUE_MSG(output.length() < 1 || input.length() < 2, - vformat("Invalid device mapping entry \"%s\" in mapping:\n%s", entry[idx], p_mapping)); + if (output.length() < 1 || input.length() < 2) { + continue; + } if (output == "platform" || output == "hint") { continue; diff --git a/core/variant/variant.h b/core/variant/variant.h index f694e59051..04c2fe2012 100644 --- a/core/variant/variant.h +++ b/core/variant/variant.h @@ -488,7 +488,7 @@ public: Variant(const IPAddress &p_address); #define VARIANT_ENUM_CLASS_CONSTRUCTOR(m_enum) \ - Variant(const m_enum &p_value) { \ + Variant(m_enum p_value) { \ type = INT; \ _data._int = (int64_t)p_value; \ } diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt b/platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt index e9bc435689..e26c9d39c2 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt @@ -231,7 +231,7 @@ internal class GodotGestureHandler : SimpleOnGestureListener(), OnScaleGestureLi val x = terminusEvent.x val y = terminusEvent.y - if (terminusEvent.pointerCount >= 2 && panningAndScalingEnabled && !pointerCaptureInProgress) { + if (terminusEvent.pointerCount >= 2 && panningAndScalingEnabled && !pointerCaptureInProgress && !dragInProgress) { GodotLib.pan(x, y, distanceX / 5f, distanceY / 5f) } else if (!scaleInProgress){ dragInProgress = true @@ -241,7 +241,7 @@ internal class GodotGestureHandler : SimpleOnGestureListener(), OnScaleGestureLi } override fun onScale(detector: ScaleGestureDetector): Boolean { - if (!panningAndScalingEnabled || pointerCaptureInProgress) { + if (!panningAndScalingEnabled || pointerCaptureInProgress || dragInProgress) { return false } @@ -256,7 +256,7 @@ internal class GodotGestureHandler : SimpleOnGestureListener(), OnScaleGestureLi } override fun onScaleBegin(detector: ScaleGestureDetector): Boolean { - if (!panningAndScalingEnabled || pointerCaptureInProgress) { + if (!panningAndScalingEnabled || pointerCaptureInProgress || dragInProgress) { return false } scaleInProgress = true diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index 0fbca9ae8c..b1a265068a 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -1328,7 +1328,7 @@ void DisplayServerWindows::_get_window_style(bool p_main_window, bool p_fullscre r_style = WS_OVERLAPPEDWINDOW; } } else { - r_style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU; + r_style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; } } diff --git a/scene/gui/color_mode.cpp b/scene/gui/color_mode.cpp index 123938f964..e95b2b9107 100644 --- a/scene/gui/color_mode.cpp +++ b/scene/gui/color_mode.cpp @@ -117,8 +117,13 @@ float ColorModeHSV::get_slider_max(int idx) const { float ColorModeHSV::get_slider_value(int idx) const { switch (idx) { - case 0: - return color_picker->get_pick_color().get_h() * 360.0; + case 0: { + if (color_picker->get_pick_color().get_s() > 0) { + return color_picker->get_pick_color().get_h() * 360.0; + } else { + return color_picker->get_cached_hue(); + } + } case 1: return color_picker->get_pick_color().get_s() * 100.0; case 2: @@ -165,7 +170,9 @@ void ColorModeHSV::slider_draw(int p_which) { Color v_col; s_col.set_hsv(color.get_h(), 0, color.get_v()); left_color = (p_which == 1) ? s_col : Color(0, 0, 0); - s_col.set_hsv(color.get_h(), 1, color.get_v()); + + float s_col_hue = (color.get_s() == 0.0) ? color_picker->get_cached_hue() / 360.0 : color.get_h(); + s_col.set_hsv(s_col_hue, 1, color.get_v()); v_col.set_hsv(color.get_h(), color.get_s(), 1); right_color = (p_which == 1) ? s_col : v_col; } diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 2a03786471..768502c658 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -376,6 +376,12 @@ void ColorPicker::_value_changed(double) { color = modes[current_mode]->get_color(); + if (current_mode == MODE_HSV) { + if (sliders[1]->get_value() > 0 || sliders[0]->get_value() != cached_hue) { + cached_hue = sliders[0]->get_value(); + } + } + if (current_mode == MODE_HSV || current_mode == MODE_OKHSL) { h = sliders[0]->get_value() / 360.0; s = sliders[1]->get_value() / 100.0; diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h index 711a371688..bc7eadf223 100644 --- a/scene/gui/color_picker.h +++ b/scene/gui/color_picker.h @@ -204,6 +204,7 @@ private: float h = 0.0; float s = 0.0; float v = 0.0; + float cached_hue = 0.0; Color last_color; struct ThemeCache { @@ -294,6 +295,7 @@ public: #ifdef TOOLS_ENABLED void set_editor_settings(Object *p_editor_settings); #endif + float get_cached_hue() { return cached_hue; }; HSlider *get_slider(int idx); Vector<float> get_active_slider_values(); |
