Commit: c04c6a3b8330901c12dc8c1695818497efa785cd
Author: Campbell Barton
Date:   Mon Jun 9 15:35:34 2014 +1000
https://developer.blender.org/rBc04c6a3b8330901c12dc8c1695818497efa785cd

Fix T40538: Multi-button canceling edit-text could leave edited value

===================================================================

M       source/blender/editors/interface/interface_handlers.c

===================================================================

diff --git a/source/blender/editors/interface/interface_handlers.c 
b/source/blender/editors/interface/interface_handlers.c
index f6df5a9..5f85386 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -2372,6 +2372,18 @@ static void ui_textedit_begin(bContext *C, uiBut *but, 
uiHandleButtonData *data)
                data->str = NULL;
        }
 
+#ifdef USE_DRAG_MULTINUM
+       /* this can happen from multi-drag */
+       if (data->applied_interactive) {
+               /* remove any small changes so canceling edit doesn't restore 
invalid value: T40538 */
+               data->cancel = true;
+               ui_apply_button(C, but->block, but, data, true);
+               data->cancel = false;
+
+               data->applied_interactive = false;
+       }
+#endif
+
        /* retrieve string */
        data->maxlen = ui_get_but_string_max_length(but);
        data->str = MEM_callocN(sizeof(char) * data->maxlen + 1, "textedit 
str");
@@ -2392,11 +2404,6 @@ static void ui_textedit_begin(bContext *C, uiBut *but, 
uiHandleButtonData *data)
        data->selextend = 0;
        data->selstartx = 0.0f;
 
-#ifdef USE_DRAG_MULTINUM
-       /* this can happen from multi-drag */
-       data->applied_interactive = false;
-#endif
-
        /* set cursor pos to the end of the text */
        but->editstr = data->str;
        but->pos = len;
@@ -3308,6 +3315,11 @@ static bool ui_numedit_but_NUM(uiBut *but, 
uiHandleButtonData *data,
        if (data->draglock) {
                if (abs(mx - data->dragstartx) <= 3)
                        return changed;
+#ifdef USE_DRAG_MULTINUM
+               if (ELEM(data->multi_data.init, BUTTON_MULTI_INIT_UNSET, 
BUTTON_MULTI_INIT_SETUP)) {
+                       return changed;
+               }
+#endif
 
                data->draglock = false;
                data->dragstartx = mx;  /* ignore mouse movement within 
drag-lock */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to