Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/interface/interface_handlers.c
| Show First 20 Lines • Show All 992 Lines • ▼ Show 20 Lines | |||||
| if (menu->menuretval & UI_RETURN_UPDATE) { | if (menu->menuretval & UI_RETURN_UPDATE) { | ||||
| if (data->interactive) { | if (data->interactive) { | ||||
| ui_apply_but(C, but->block, but, data, true); | ui_apply_but(C, but->block, but, data, true); | ||||
| } | } | ||||
| else { | else { | ||||
| ui_but_update(but); | ui_but_update(but); | ||||
| } | } | ||||
| but->changed = true; | |||||
| menu->menuretval = 0; | menu->menuretval = 0; | ||||
| } | } | ||||
| /* now change button state or exit, which will close the submenu */ | /* now change button state or exit, which will close the submenu */ | ||||
| if ((menu->menuretval & UI_RETURN_OK) || (menu->menuretval & UI_RETURN_CANCEL)) { | if ((menu->menuretval & UI_RETURN_OK) || (menu->menuretval & UI_RETURN_CANCEL)) { | ||||
| if (menu->menuretval != UI_RETURN_OK) { | if (menu->menuretval != UI_RETURN_OK) { | ||||
| data->cancel = true; | data->cancel = true; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 873 Lines • ▼ Show 20 Lines | |||||
| if ((inside == false) && (menu->menuretval == 0)) { | if ((inside == false) && (menu->menuretval == 0)) { | ||||
| uiSafetyRct *saferct = block->saferct.first; | uiSafetyRct *saferct = block->saferct.first; | ||||
| if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE)) { | if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE)) { | ||||
| if (ELEM(event->val, KM_PRESS, KM_DBL_CLICK)) { | if (ELEM(event->val, KM_PRESS, KM_DBL_CLICK)) { | ||||
| if ((is_parent_menu == false) && (U.uiflag & USER_MENUOPENAUTO) == 0) { | if ((is_parent_menu == false) && (U.uiflag & USER_MENUOPENAUTO) == 0) { | ||||
| /* for root menus, allow clicking to close */ | /* for root menus, allow clicking to close */ | ||||
| if (block->flag & UI_BLOCK_OUT_1) { | if (block->flag & UI_BLOCK_OUT_1) { | ||||
| uiBut *but = ui_region_find_active_but(CTX_wm_region(C)); | |||||
| if (!but->changed) { | |||||
| UI_but_flag_disable(but, UI_BUT_UNDO); | |||||
| } | |||||
| menu->menuretval = UI_RETURN_OK; | menu->menuretval = UI_RETURN_OK; | ||||
| } | } | ||||
| else { | else { | ||||
| menu->menuretval = UI_RETURN_OUT; | menu->menuretval = UI_RETURN_OUT; | ||||
| } | } | ||||
| } | } | ||||
| else if (saferct && !BLI_rctf_isect_pt( | else if (saferct && !BLI_rctf_isect_pt( | ||||
| &saferct->parent, (float)event->xy[0], (float)event->xy[1])) { | &saferct->parent, (float)event->xy[0], (float)event->xy[1])) { | ||||
| ▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* strict check, and include the parent rect */ | /* strict check, and include the parent rect */ | ||||
| if (!menu->dotowards && !saferct) { | if (!menu->dotowards && !saferct) { | ||||
| if (block->flag & UI_BLOCK_OUT_1) { | if (block->flag & UI_BLOCK_OUT_1) { | ||||
| uiBut *but = ui_region_find_active_but(CTX_wm_region(C)); | |||||
| if (!but->changed) { | |||||
| UI_but_flag_disable(but, UI_BUT_UNDO); | |||||
| } | |||||
| menu->menuretval = UI_RETURN_OK; | menu->menuretval = UI_RETURN_OK; | ||||
| } | } | ||||
| else { | else { | ||||
| menu->menuretval = UI_RETURN_OUT; | menu->menuretval = UI_RETURN_OUT; | ||||
| } | } | ||||
| } | } | ||||
| else if (menu->dotowards && event->type == MOUSEMOVE) { | else if (menu->dotowards && event->type == MOUSEMOVE) { | ||||
| retval = WM_UI_HANDLER_BREAK; | retval = WM_UI_HANDLER_BREAK; | ||||
| ▲ Show 20 Lines • Show All 992 Lines • Show Last 20 Lines | |||||