fix for toggle buttons not taking effect on mousedown.

This commit is contained in:
Campbell Barton
2013-02-25 11:52:18 +00:00
parent 18fd4bd9f4
commit ac345fce9a
2 changed files with 8 additions and 2 deletions

View File

@@ -767,7 +767,8 @@ static int ui_but_start_drag(bContext *C, uiBut *but, uiHandleButtonData *data,
data->cancel = TRUE; data->cancel = TRUE;
if (ui_is_but_bool(but)) { if (ui_is_but_bool(but)) {
const bool is_set = (ui_get_but_val(but) != 0.0); /* assumes button has already been pressed */
const bool is_set = (ui_get_but_val(but) == 0.0);
PointerRNA ptr; PointerRNA ptr;
WM_operator_properties_create(&ptr, "UI_OT_drag_toggle"); WM_operator_properties_create(&ptr, "UI_OT_drag_toggle");
RNA_boolean_set(&ptr, "state", !is_set); RNA_boolean_set(&ptr, "state", !is_set);
@@ -2487,6 +2488,7 @@ static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, cons
{ {
if (data->state == BUTTON_STATE_HIGHLIGHT) { if (data->state == BUTTON_STATE_HIGHLIGHT) {
if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_bool(but)) { if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_bool(but)) {
ui_apply_button(C, but->block, but, data, true);
button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG);
data->dragstartx = event->x; data->dragstartx = event->x;
data->dragstarty = event->y; data->dragstarty = event->y;
@@ -2502,9 +2504,12 @@ static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, cons
} }
else if (data->state == BUTTON_STATE_WAIT_DRAG) { else if (data->state == BUTTON_STATE_WAIT_DRAG) {
/* note: the 'BUTTON_STATE_WAIT_DRAG' part of 'ui_do_but_EXIT' could be refactored into its own function */ /* note: the 'BUTTON_STATE_WAIT_DRAG' part of 'ui_do_but_EXIT' could be refactored into its own function */
data->cancel = true;
data->applied = false;
return ui_do_but_EXIT(C, but, data, event); return ui_do_but_EXIT(C, but, data, event);
} }
return WM_UI_HANDLER_CONTINUE;
return WM_UI_HANDLER_BREAK;
} }
static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, const wmEvent *event) static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, const wmEvent *event)

View File

@@ -1252,6 +1252,7 @@ static int ui_drag_toggle_modal(bContext *C, wmOperator *op, wmEvent *event)
} }
if (done) { if (done) {
WM_event_add_mousemove(C);
MEM_freeN(op->customdata); MEM_freeN(op->customdata);
return OPERATOR_FINISHED; return OPERATOR_FINISHED;
} }