rename api functions...
[blender.git] / source / blender / editors / interface / interface_handlers.c
index 0100663e4c3cfd387dd525a41d67a603c3ef0ebc..dc7ea930e4505688c41073f8595c0f620d35b8c5 100644 (file)
@@ -704,7 +704,9 @@ static int ui_but_mouse_inside_icon(uiBut *but, ARegion *ar, wmEvent *event)
        
        BLI_rcti_rctf_copy(&rect, &but->rect);
        
-       if (but->imb) ;  /* use button size itself */
+       if (but->imb) {
+               /* use button size itself */
+       }
        else if (but->flag & UI_ICON_LEFT) {
                rect.xmax = rect.xmin + (BLI_rcti_size_y(&rect));
        }
@@ -772,7 +774,7 @@ static void ui_delete_active_linkline(uiBlock *block)
                                                                        (*(link->ppoin))[b] = (*(link->ppoin))[a];
                                                                        b++;
                                                                }
-                                                       }       
+                                                       }
                                                        (*(link->totlink))--;
                                                }
                                        }
@@ -1061,7 +1063,7 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
                        break;
                case HSVSLI:
                        break;
-               case TOG3:      
+               case TOG3:
                        ui_apply_but_TOG3(C, but, data);
                        break;
                case MENU:
@@ -1107,10 +1109,10 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
                case INLINK:
                        ui_apply_but_LINK(C, but, data);
                        break;
-               case BUT_IMAGE: 
+               case BUT_IMAGE:
                        ui_apply_but_IMAGE(C, but, data);
                        break;
-               case HISTOGRAM: 
+               case HISTOGRAM:
                        ui_apply_but_HISTOGRAM(C, but, data);
                        break;
                case WAVEFORM:
@@ -1184,7 +1186,9 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
        /* numeric value */
        if (ELEM4(but->type, NUM, NUMABS, NUMSLI, HSVSLI)) {
                
-               if (but->poin == NULL && but->rnapoin.data == NULL) ;
+               if (but->poin == NULL && but->rnapoin.data == NULL) {
+                       /* pass */
+               }
                else if (mode == 'c') {
                        ui_get_but_string(but, buf, sizeof(buf));
                        WM_clipboard_text_set(buf, 0);
@@ -1205,7 +1209,9 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
        else if (but->type == COLOR) {
                float rgb[3];
                
-               if (but->poin == NULL && but->rnapoin.data == NULL) ;
+               if (but->poin == NULL && but->rnapoin.data == NULL) {
+                       /* pass */
+               }
                else if (mode == 'c') {
 
                        ui_get_but_vectorf(but, rgb);
@@ -1234,7 +1240,9 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
        else if (ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
                uiHandleButtonData *active_data = but->active;
 
-               if (but->poin == NULL && but->rnapoin.data == NULL) ;
+               if (but->poin == NULL && but->rnapoin.data == NULL) {
+                       /* pass */
+               }
                else if (mode == 'c') {
                        button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
                        BLI_strncpy(buf, active_data->str, UI_MAX_DRAW_STR);
@@ -1335,7 +1343,7 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
        }
        
        /* mouse dragged outside the widget to the left */
-       if (x < startx && but->ofs > 0) {       
+       if (x < startx && but->ofs > 0) {
                int i = but->ofs;
 
                origstr[but->ofs] = 0;
@@ -1368,7 +1376,7 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
 
                while (TRUE) {
                        /* XXX does not take zoom level into account */
-                       cdist = startx + aspect_sqrt *BLF_width(fstyle->uifont_id, origstr + but->ofs);
+                       cdist = startx + aspect_sqrt * BLF_width(fstyle->uifont_id, origstr + but->ofs);
 
                        /* check if position is found */
                        if (cdist < x) {
@@ -1579,7 +1587,7 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio
                                but->pos -= step;
                                changed = 1;
                        }
-               } 
+               }
        }
 
        return changed;
@@ -1668,7 +1676,7 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
                if (cut)
                        if ((but->selend - but->selsta) > 0)
                                changed = ui_textedit_delete_selection(but, data);
-       } 
+       }
 
        return changed;
 }
@@ -2149,7 +2157,7 @@ static void ui_blockopen_begin(bContext *C, uiBut *but, uiHandleButtonData *data
        }
 
        /* this makes adjacent blocks auto open from now on */
-       //if (but->block->auto_open ==) but->block->auto_open = 1;
+       //if (but->block->auto_open == 0) but->block->auto_open = 1;
 }
 
 static void ui_blockopen_end(bContext *C, uiBut *but, uiHandleButtonData *data)
@@ -2167,6 +2175,16 @@ static void ui_blockopen_end(bContext *C, uiBut *but, uiHandleButtonData *data)
        }
 }
 
+int ui_button_open_menu_direction(uiBut *but)
+{
+       uiHandleButtonData *data = but->active;
+
+       if (data && data->menu)
+               return data->menu->direction;
+       
+       return 0;
+}
+
 /* ***************** events for different button types *************** */
 
 static int ui_do_but_BUT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
@@ -2236,7 +2254,7 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data
                ED_region_tag_redraw(data->region);
                        
                if (event->val == KM_PRESS) {
-                       if (ISHOTKEY(event->type)) { 
+                       if (ISHOTKEY(event->type)) {
                                
                                if (WM_key_event_string(event->type)[0])
                                        ui_set_but_val(but, event->type);
@@ -2287,7 +2305,9 @@ static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
 {
        if (data->state == BUTTON_STATE_HIGHLIGHT) {
                if (ELEM(event->type, LEFTMOUSE, EVT_BUT_OPEN) && event->val == KM_PRESS) {
-                       if (but->dt == UI_EMBOSSN && !event->ctrl) ;
+                       if (but->dt == UI_EMBOSSN && !event->ctrl) {
+                               /* pass */
+                       }
                        else {
                                button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
                                return WM_UI_HANDLER_BREAK;
@@ -2915,7 +2935,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
                                        data->value = temp;
                                else
                                        data->cancel = TRUE;
-                       } 
+                       }
                        else {
                                if (f < tempf) tempf -= 0.01f;
                                else tempf += 0.01f;
@@ -2941,7 +2961,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
 
 static int ui_do_but_SCROLL(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
 {
-       int mx, my /*, click= 0 */;
+       int mx, my /*, click = 0 */;
        int retval = WM_UI_HANDLER_CONTINUE;
        int horizontal = (BLI_rctf_size_x(&but->rect) > BLI_rctf_size_y(&but->rect));
        
@@ -3316,7 +3336,7 @@ static void ui_ndofedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, wmNDOF
                case UI_GRAD_V:
                        hsv[2] += ndof->ry * sensitivity;
                        break;
-               case UI_GRAD_V_ALT:     
+               case UI_GRAD_V_ALT:
                        /* vertical 'value' strip */
                        
                        /* exception only for value strip - use the range set in but->min/max */
@@ -3440,7 +3460,7 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, float
                data->ungrab_mval[0] = mx_fl;
                data->ungrab_mval[1] = my_fl;
                {       /* clamp */
-                       const float radius = minf(BLI_rctf_size_x(&but->rect), BLI_rctf_size_y(&but->rect)) / 2.0f;
+                       const float radius = min_ff(BLI_rctf_size_x(&but->rect), BLI_rctf_size_y(&but->rect)) / 2.0f;
                        const float cent[2] = {BLI_rctf_cent_x(&but->rect), BLI_rctf_cent_y(&but->rect)};
                        const float len = len_v2v2(cent, data->ungrab_mval);
                        if (len > radius) {
@@ -3727,8 +3747,8 @@ static int ui_numedit_but_CURVE(uiBut *but, uiHandleButtonData *data, int snap,
 
        zoomx = BLI_rctf_size_x(&but->rect) / BLI_rctf_size_x(&cumap->curr);
        zoomy = BLI_rctf_size_y(&but->rect) / BLI_rctf_size_y(&cumap->curr);
-       /* offsx= cumap->curr.xmin; */
-       /* offsy= cumap->curr.ymin; */
+       /* offsx = cumap->curr.xmin; */
+       /* offsy = cumap->curr.ymin; */
 
        if (snap) {
                float d[2];
@@ -3884,7 +3904,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt
 
                                                changed = 1;
                                                
-                                               /* reset cmp back to the curve points again, rather than drawing segments */            
+                                               /* reset cmp back to the curve points again, rather than drawing segments */
                                                cmp = cuma->curve;
                                                
                                                /* find newly added point and make it 'sel' */
@@ -3988,7 +4008,7 @@ static int ui_numedit_but_HISTOGRAM(uiBut *but, uiHandleButtonData *data, int mx
        }
        else {
                /* scale histogram values (dy / 10 for better control) */
-               const float yfac = minf(powf(hist->ymax, 2.0f), 1.0f) * 0.5f;
+               const float yfac = min_ff(powf(hist->ymax, 2.0f), 1.0f) * 0.5f;
                hist->ymax += (dy * 0.1f) * yfac;
        
                /* 0.1 allows us to see HDR colors up to 10 */
@@ -4058,7 +4078,7 @@ static int ui_numedit_but_WAVEFORM(uiBut *but, uiHandleButtonData *data, int mx,
        Scopes *scopes = (Scopes *)but->poin;
        /* rcti rect; */
        int changed = 1;
-       float /* dx, */ dy /* , yfac=1.f */; /* UNUSED */
+       float /* dx, */ dy /* , yfac =1.0f */; /* UNUSED */
 
        /* BLI_rcti_rctf_copy(&rect, &but->rect); */
 
@@ -4488,11 +4508,11 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg)
        int kmi_id;
        
        /* XXX this guess_opname can potentially return a different keymap than being found on adding later... */
-       km = WM_keymap_guess_opname(C, but->optype->idname);            
+       km = WM_keymap_guess_opname(C, but->optype->idname);
        kmi = WM_keymap_add_item(km, but->optype->idname, AKEY, KM_PRESS, 0, 0);
        kmi_id = kmi->id;
 
-       /* copy properties, prop can be NULL for reset */       
+       /* copy properties, prop can be NULL for reset */
        if (prop)
                prop = IDP_CopyProperty(prop);
        WM_keymap_properties_reset(kmi, prop);
@@ -4500,7 +4520,7 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg)
        /* update and get pointers again */
        WM_keyconfig_update(wm);
 
-       km = WM_keymap_guess_opname(C, but->optype->idname);            
+       km = WM_keymap_guess_opname(C, but->optype->idname);
        kmi = WM_keymap_item_find_id(km, kmi_id);
 
        RNA_pointer_create(&wm->id, &RNA_KeyMapItem, kmi, &ptr);
@@ -4707,8 +4727,8 @@ static int ui_but_menu(bContext *C, uiBut *but)
                
                /* Property Operators */
                
-               /*Copy Property Value
-                *Paste Property Value */
+               /* Copy Property Value
+                * Paste Property Value */
                
                if (length) {
                        uiItemBooleanO(layout, CTX_IFACE_(BLF_I18NCONTEXT_OPERATOR_DEFAULT, "Reset All to Default Values"),
@@ -4934,7 +4954,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
                                button_activate_state(C, but, BUTTON_STATE_EXIT);
                                return WM_UI_HANDLER_BREAK;
                        }
-               } 
+               }
                else if (but->pointype && but->poin == NULL) {
                        /* there's a pointer needed */
                        BKE_reportf(NULL, RPT_WARNING, "DoButton pointer error: %s", but->str);
@@ -6007,7 +6027,7 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but)
        }
        else {
                retval = ui_do_button(C, block, but, event);
-               // retval= WM_UI_HANDLER_BREAK; XXX why ? 
+               // retval = WM_UI_HANDLER_BREAK; XXX why ?
        }
 
        if (data->state == BUTTON_STATE_EXIT) {
@@ -6360,7 +6380,7 @@ static int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle
                                        break;
 
                                /* opening sublevels of pulldowns */
-                               case RIGHTARROWKEY:     
+                               case RIGHTARROWKEY:
                                        if (event->val == KM_PRESS && (block->flag & UI_BLOCK_LOOP)) {
 
                                                PASS_EVENT_TO_PARENT_IF_NONACTIVE;
@@ -6601,7 +6621,9 @@ static int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle
                                }
                        }
 
-                       if (menu->menuretval) ;
+                       if (menu->menuretval) {
+                               /* pass */
+                       }
                        else if (event->type == ESCKEY && event->val == KM_PRESS) {
                                /* esc cancels this and all preceding menus */
                                menu->menuretval = UI_RETURN_CANCEL;
@@ -6753,9 +6775,13 @@ static int ui_handle_menus_recursive(bContext *C, wmEvent *event, uiPopupBlockHa
        /* now handle events for our own menu */
        if (retval == WM_UI_HANDLER_CONTINUE || event->type == TIMER) {
                if (submenu && submenu->menuretval) {
+                       int do_ret_out_parent = (submenu->menuretval & UI_RETURN_OUT_PARENT);
                        retval = ui_handle_menu_return_submenu(C, event, menu);
-                       /* we may wan't to quit the submenu and handle the even in this menu */
-                       if ((retval == WM_UI_HANDLER_BREAK) && (submenu->menuretval & UI_RETURN_OUT_PARENT)) {
+                       submenu = NULL;  /* hint not to use this, it may be freed by call above */
+                       (void)submenu;
+                       /* we may wan't to quit the submenu and handle the even in this menu,
+                        * if its important to use it, check 'data->menu' first */
+                       if ((retval == WM_UI_HANDLER_BREAK) && do_ret_out_parent) {
                                retval = ui_handle_menu_event(C, event, menu, level);
                        }
                }