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:
authorCampbell Barton <ideasman42@gmail.com>2013-06-03 23:52:53 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-03 23:52:53 +0400
commitb537bc011be07a860d2acd1b61f5660195935327 (patch)
treea1461f99bc0f28ea730ba6362503f961efddad7d /source/blender/editors
parent99ead1948ed71320aa021d6d7fe35eba26f2e944 (diff)
fix for missing undo push for drag-toggle.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/interface/interface_handlers.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 22880d8e79c..5ca22a3419e 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -762,6 +762,7 @@ typedef struct uiDragToggleHandle {
eButType but_type_start;
bool xy_lock[2];
+ int xy_init[2];
int xy_last[2];
} uiDragToggleHandle;
@@ -893,6 +894,13 @@ static int ui_handler_region_drag_toggle(bContext *C, const wmEvent *event, void
if (done) {
wmWindow *win = CTX_wm_window(C);
+ ARegion *ar = CTX_wm_region(C);
+ uiBut *but = ui_but_find_mouse_over(ar, drag_info->xy_init[0], drag_info->xy_init[1]);
+
+ if (but) {
+ ui_apply_undo(but);
+ }
+
WM_event_remove_ui_handler(&win->modalhandlers,
ui_handler_region_drag_toggle,
ui_handler_region_drag_toggle_remove,
@@ -952,6 +960,7 @@ static bool ui_but_start_drag(bContext *C, uiBut *but, uiHandleButtonData *data,
drag_info->but_cent_start[0] = BLI_rctf_cent_x(&but->rect);
drag_info->but_cent_start[1] = BLI_rctf_cent_y(&but->rect);
drag_info->but_type_start = but->type;
+ copy_v2_v2_int(drag_info->xy_init, &event->x);
copy_v2_v2_int(drag_info->xy_last, &event->x);
/* needed for toggle drag on popups */