Bugfix: clicking outside of color picker could reset color in some cases.
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 14 Dec 2009 14:34:57 +0000 (14:34 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 14 Dec 2009 14:34:57 +0000 (14:34 +0000)
source/blender/editors/interface/interface_handlers.c

index 4ef59e4b59af56474dcf38b4f9fb3c414df137e9..a43506778d8eb630b0fdb1ac5727c9772dbfb7d4 100644 (file)
@@ -4739,9 +4739,14 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
                        if(inside==0) {
                                uiSafetyRct *saferct= block->saferct.first;
 
-                               if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS)
-                                       if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y))
-                                               menu->menuretval= UI_RETURN_OUT;
+                               if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS) {
+                                       if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y)) {
+                                               if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN))
+                                                       menu->menuretval= UI_RETURN_OK;
+                                               else
+                                                       menu->menuretval= UI_RETURN_OUT;
+                                       }
+                               }
                        }
 
                        if(menu->menuretval);
@@ -4777,10 +4782,10 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu,
 
                                        /* strict check, and include the parent rect */
                                        if(!menu->dotowards && !saferct) {
-                                               if(block->flag & UI_BLOCK_OUT_1)
+                                               if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN))
                                                        menu->menuretval= UI_RETURN_OK;
                                                else
-                                                       menu->menuretval= (block->flag & UI_BLOCK_KEEP_OPEN)? UI_RETURN_OK: UI_RETURN_OUT;
+                                                       menu->menuretval= UI_RETURN_OUT;
                                        }
                                        else if(menu->dotowards && event->type==MOUSEMOVE)
                                                retval= WM_UI_HANDLER_BREAK;