Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFalk David <falkdavid@gmx.de>2021-05-06 13:14:12 +0300
committerFalk David <falkdavid@gmx.de>2021-05-06 14:10:05 +0300
commitec30cf0b742f5181c4de91b474ca01d6a809c593 (patch)
tree6ee39217fa30f222cb7b7c0f9f5af23cf85f620c /source/blender/editors/interface/interface_handlers.c
parent3e77f747c0d1eec74ab5c6717b66f329bc0f3753 (diff)
Fix T88058: Hover+return doesn't accept 0 as input
When the user hovered over a number input field, pressed Enter and then typed in '0', confirming the input would always cancel the action. This is because in this particular case `ui_textedit_begin` is called instead of `ui_numedit_begin`. This function will not set `data->startvalue` (leaving it at `0`) which will then trigger the cancel in `ui_apply_but_NUM` which checks if the input changed (by comparing the entered value with `data->startvalue`). The fix makes sure that when `ui_textedit_begin` is called on a number button, the `data->startvalue` is set correctly like in `ui_numedit_begin`. Breaking commit: rBSeb06ccc32462beaacbb114d6d0e450b6fc911047 Note: This also affects pressing tab to move to a new number field and entering '0'. The fix will also cover this case. Reviewed By: Severin, #user_interface Maniphest Tasks: T88058 Differential Revision: https://developer.blender.org/D11168
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r--source/blender/editors/interface/interface_handlers.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 5a254db0eec..e882d77a6f3 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -477,6 +477,7 @@ static bool ui_do_but_extra_operator_icon(bContext *C,
static void ui_do_but_extra_operator_icons_mousemove(uiBut *but,
uiHandleButtonData *data,
const wmEvent *event);
+static void ui_numedit_begin_set_values(uiBut *but, uiHandleButtonData *data);
#ifdef USE_DRAG_MULTINUM
static void ui_multibut_restore(bContext *C, uiHandleButtonData *data, uiBlock *block);
@@ -3361,6 +3362,8 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
if (is_num_but) {
BLI_assert(data->is_str_dynamic == false);
ui_but_convert_to_unit_alt_name(but, data->str, data->maxlen);
+
+ ui_numedit_begin_set_values(but, data);
}
/* won't change from now on */
@@ -3897,6 +3900,14 @@ static void ui_do_but_textedit_select(
/** \name Button Number Editing (various types)
* \{ */
+static void ui_numedit_begin_set_values(uiBut *but, uiHandleButtonData *data)
+{
+ data->startvalue = ui_but_value_get(but);
+ data->origvalue = data->startvalue;
+ data->value = data->origvalue;
+ but->editval = &data->value;
+}
+
static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
{
if (but->type == UI_BTYPE_CURVE) {
@@ -3922,16 +3933,11 @@ static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
but->editvec = data->vec;
}
else {
- float softrange, softmin, softmax;
-
- data->startvalue = ui_but_value_get(but);
- data->origvalue = data->startvalue;
- data->value = data->origvalue;
- but->editval = &data->value;
-
- softmin = but->softmin;
- softmax = but->softmax;
- softrange = softmax - softmin;
+ ui_numedit_begin_set_values(but, data);
+
+ float softmin = but->softmin;
+ float softmax = but->softmax;
+ float softrange = softmax - softmin;
if ((but->type == UI_BTYPE_NUM) && (ui_but_is_cursor_warp(but) == false)) {
uiButNumber *number_but = (uiButNumber *)but;