summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/input/input.cpp5
-rw-r--r--core/variant/variant.h2
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/input/GodotGestureHandler.kt6
-rw-r--r--platform/windows/display_server_windows.cpp2
-rw-r--r--scene/gui/color_mode.cpp13
-rw-r--r--scene/gui/color_picker.cpp6
-rw-r--r--scene/gui/color_picker.h2
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();