diff options
author | Tianwei Shen <shentianweipku@gmail.com> | 2016-09-26 19:00:49 +0300 |
---|---|---|
committer | Tianwei Shen <shentianweipku@gmail.com> | 2016-09-26 19:00:49 +0300 |
commit | 4f69557528893f8d52cac16f77bac70161aac3e1 (patch) | |
tree | 820a3d2b16f3e9e14e68f1b299d7c882fbbb7d1c /source/blender/editors/interface | |
parent | 3bbc836b2fd95bfa6f25691b4a32951881e11bfc (diff) | |
parent | 7f76f6f2490a4375dc4c5e0f61de7daa7a75a9c2 (diff) |
Merge branch 'master' into soc-2016-multiview
- revise code accordingly with the 2.78 release
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface.c | 11 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_anim.c | 42 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_draw.c | 3 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_eyedropper.c | 70 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 103 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_intern.h | 7 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_ops.c | 97 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/resources.c | 14 |
9 files changed, 119 insertions, 230 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index aca107013ac..6bba35e821f 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -3215,10 +3215,10 @@ void ui_def_but_icon(uiBut *but, const int icon, const int flag) } } -static void ui_def_but_rna__disable(uiBut *but) +static void ui_def_but_rna__disable(uiBut *but, const char *info) { but->flag |= UI_BUT_DISABLED; - but->disabled_info = ""; + but->disabled_info = info; } static void ui_def_but_rna__menu(bContext *UNUSED(C), uiLayout *layout, void *but_p) @@ -3483,8 +3483,9 @@ static uiBut *ui_def_but_rna( but->flag |= UI_BUT_ICON_SUBMENU; } - if (!RNA_property_editable(&but->rnapoin, prop)) { - ui_def_but_rna__disable(but); + const char *info; + if (!RNA_property_editable_info(&but->rnapoin, prop, &info)) { + ui_def_but_rna__disable(but, info); } if (but->flag & UI_BUT_UNDO && (ui_but_is_rna_undo(but) == false)) { @@ -3515,7 +3516,7 @@ static uiBut *ui_def_but_rna_propname(uiBlock *block, int type, int retval, cons else { but = ui_def_but(block, type, retval, propname, x, y, width, height, NULL, min, max, a1, a2, tip); - ui_def_but_rna__disable(but); + ui_def_but_rna__disable(but, "Unknown Property."); } return but; diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index c88b03ceaa0..991cd54fecf 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -272,36 +272,6 @@ void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra) } } -void ui_but_anim_insert_keyframe(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_keyframe_insert_button", WM_OP_INVOKE_DEFAULT, NULL); -} - -void ui_but_anim_delete_keyframe(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_keyframe_delete_button", WM_OP_INVOKE_DEFAULT, NULL); -} - -void ui_but_anim_clear_keyframe(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_keyframe_clear_button", WM_OP_INVOKE_DEFAULT, NULL); -} - -void ui_but_anim_add_driver(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_driver_button_add", WM_OP_INVOKE_DEFAULT, NULL); -} - -void ui_but_anim_remove_driver(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_driver_button_remove", WM_OP_INVOKE_DEFAULT, NULL); -} - void ui_but_anim_copy_driver(bContext *C) { /* this operator calls UI_context_active_but_prop_get */ @@ -313,15 +283,3 @@ void ui_but_anim_paste_driver(bContext *C) /* this operator calls UI_context_active_but_prop_get */ WM_operator_name_call(C, "ANIM_OT_paste_driver_button", WM_OP_INVOKE_DEFAULT, NULL); } - -void ui_but_anim_add_keyingset(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_keyingset_button_add", WM_OP_INVOKE_DEFAULT, NULL); -} - -void ui_but_anim_remove_keyingset(bContext *C) -{ - /* this operator calls UI_context_active_but_prop_get */ - WM_operator_name_call(C, "ANIM_OT_keyingset_button_remove", WM_OP_INVOKE_DEFAULT, NULL); -} diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 9ce863dc8f7..01ea1e953fa 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -1255,6 +1255,9 @@ void ui_draw_but_UNITVEC(uiBut *but, uiWidgetColors *wcol, const rcti *rect) /* matrix after circle */ glPopMatrix(); + + /* We disabled all blender lights above, so restore them here. */ + GPU_default_lights(); } static void ui_draw_but_curve_grid(const rcti *rect, float zoomx, float zoomy, float offsx, float offsy, float step) diff --git a/source/blender/editors/interface/interface_eyedropper.c b/source/blender/editors/interface/interface_eyedropper.c index f10b3e6f157..31598a44b09 100644 --- a/source/blender/editors/interface/interface_eyedropper.c +++ b/source/blender/editors/interface/interface_eyedropper.c @@ -448,8 +448,20 @@ static int eyedropper_exec(bContext *C, wmOperator *op) static int eyedropper_poll(bContext *C) { - if (!CTX_wm_window(C)) return 0; - else return 1; + PointerRNA ptr; + PropertyRNA *prop; + int index_dummy; + uiBut *but; + + /* Only color buttons */ + if ((CTX_wm_window(C) != NULL) && + (but = UI_context_active_but_prop_get(C, &ptr, &prop, &index_dummy)) && + (but->type == UI_BTYPE_COLOR)) + { + return 1; + } + + return 0; } void UI_OT_eyedropper_color(wmOperatorType *ot) @@ -727,8 +739,27 @@ static int datadropper_exec(bContext *C, wmOperator *op) static int datadropper_poll(bContext *C) { - if (!CTX_wm_window(C)) return 0; - else return 1; + PointerRNA ptr; + PropertyRNA *prop; + int index_dummy; + uiBut *but; + + /* data dropper only supports object data */ + if ((CTX_wm_window(C) != NULL) && + (but = UI_context_active_but_prop_get(C, &ptr, &prop, &index_dummy)) && + (but->type == UI_BTYPE_SEARCH_MENU) && + (but->flag & UI_BUT_SEARCH_UNLINK)) + { + if (prop && RNA_property_type(prop) == PROP_POINTER) { + StructRNA *type = RNA_property_pointer_type(&ptr, prop); + const short idcode = RNA_type_to_ID_code(type); + if ((idcode == ID_OB) || OB_DATA_SUPPORT_ID(idcode)) { + return 1; + } + } + } + + return 0; } void UI_OT_eyedropper_id(wmOperatorType *ot) @@ -1034,8 +1065,26 @@ static int depthdropper_exec(bContext *C, wmOperator *op) static int depthdropper_poll(bContext *C) { - if (!CTX_wm_window(C)) return 0; - else return 1; + PointerRNA ptr; + PropertyRNA *prop; + int index_dummy; + uiBut *but; + + /* check if there's an active button taking depth value */ + if ((CTX_wm_window(C) != NULL) && + (but = UI_context_active_but_prop_get(C, &ptr, &prop, &index_dummy)) && + (but->type == UI_BTYPE_NUM) && + (prop != NULL)) + { + if ((RNA_property_type(prop) == PROP_FLOAT) && + (RNA_property_subtype(prop) & PROP_UNIT_LENGTH) && + (RNA_property_array_check(prop) == false)) + { + return 1; + } + } + + return 0; } void UI_OT_eyedropper_depth(wmOperatorType *ot) @@ -1084,12 +1133,11 @@ static bool driverdropper_init(bContext *C, wmOperator *op) { DriverDropper *ddr; uiBut *but; - + op->customdata = ddr = MEM_callocN(sizeof(DriverDropper), "DriverDropper"); - - UI_context_active_but_prop_get(C, &ddr->ptr, &ddr->prop, &ddr->index); - but = UI_context_active_but_get(C); - + + but = UI_context_active_but_prop_get(C, &ddr->ptr, &ddr->prop, &ddr->index); + if ((ddr->ptr.data == NULL) || (ddr->prop == NULL) || (RNA_property_editable(&ddr->ptr, ddr->prop) == false) || diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 933beaf6afb..369eba66f32 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1266,6 +1266,10 @@ static bool ui_drag_toggle_set_xy_xy( } } } + if (changed) { + /* apply now, not on release (or if handlers are cancelled for whatever reason) */ + ui_apply_but_funcs_after(C); + } return changed; } @@ -6975,6 +6979,9 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * /* if but->pointype is set, but->poin should be too */ BLI_assert(!but->pointype || but->poin); + /* Only hard-coded stuff here, button interactions with configurable + * keymaps are handled using operators (see #ED_keymap_ui). */ + if ((data->state == BUTTON_STATE_HIGHLIGHT) || (event->type == EVT_DROP)) { /* handle copy-paste */ if (ELEM(event->type, CKEY, VKEY) && event->val == KM_PRESS && @@ -7002,91 +7009,6 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * else if (event->type == EVT_DROP) { ui_but_drop(C, event, but, data); } - /* handle eyedropper */ - else if ((event->type == EKEY) && (event->val == KM_PRESS)) { - if (IS_EVENT_MOD(event, shift, ctrl, alt, oskey)) { - /* pass */ - } - else { - if (but->type == UI_BTYPE_COLOR) { - WM_operator_name_call(C, "UI_OT_eyedropper_color", WM_OP_INVOKE_DEFAULT, NULL); - return WM_UI_HANDLER_BREAK; - } - else if ((but->type == UI_BTYPE_SEARCH_MENU) && - (but->flag & UI_BUT_SEARCH_UNLINK)) - { - if (but->rnaprop && RNA_property_type(but->rnaprop) == PROP_POINTER) { - StructRNA *type = RNA_property_pointer_type(&but->rnapoin, but->rnaprop); - const short idcode = RNA_type_to_ID_code(type); - if ((idcode == ID_OB) || OB_DATA_SUPPORT_ID(idcode)) { - WM_operator_name_call(C, "UI_OT_eyedropper_id", WM_OP_INVOKE_DEFAULT, NULL); - return WM_UI_HANDLER_BREAK; - } - } - } - else if (but->type == UI_BTYPE_NUM) { - if (but->rnaprop && - (RNA_property_type(but->rnaprop) == PROP_FLOAT) && - (RNA_property_subtype(but->rnaprop) & PROP_UNIT_LENGTH) && - (RNA_property_array_check(but->rnaprop) == false)) - { - WM_operator_name_call(C, "UI_OT_eyedropper_depth", WM_OP_INVOKE_DEFAULT, NULL); - return WM_UI_HANDLER_BREAK; - } - } - } - } - /* handle keyframing */ - else if ((event->type == IKEY) && - !IS_EVENT_MOD(event, ctrl, oskey) && - (event->val == KM_PRESS)) - { - if (event->alt) { - if (event->shift) { - ui_but_anim_clear_keyframe(C); - } - else { - ui_but_anim_delete_keyframe(C); - } - } - else { - ui_but_anim_insert_keyframe(C); - } - - ED_region_tag_redraw(data->region); - - return WM_UI_HANDLER_BREAK; - } - /* handle drivers */ - else if ((event->type == DKEY) && - !IS_EVENT_MOD(event, shift, oskey) && - (event->val == KM_PRESS)) - { - /* quick check to prevent this opening within the popup menu its self */ - if (!ELEM(NULL, but->rnapoin.data, but->rnaprop)) { - if (event->alt) - ui_but_anim_remove_driver(C); - else if (event->ctrl) - ui_but_anim_add_driver(C); - - ED_region_tag_redraw(data->region); - } - return WM_UI_HANDLER_BREAK; - } - /* handle keyingsets */ - else if ((event->type == KKEY) && - !IS_EVENT_MOD(event, shift, ctrl, oskey) && - (event->val == KM_PRESS)) - { - if (event->alt) - ui_but_anim_remove_keyingset(C); - else - ui_but_anim_add_keyingset(C); - - ED_region_tag_redraw(data->region); - - return WM_UI_HANDLER_BREAK; - } /* handle menu */ else if ((event->type == RIGHTMOUSE) && !IS_EVENT_MOD(event, shift, ctrl, alt, oskey) && @@ -8078,8 +8000,13 @@ uiBut *UI_context_active_but_get(const struct bContext *C) return ui_context_button_active(C, NULL); } -/* helper function for insert keyframe, reset to default, etc operators */ -void UI_context_active_but_prop_get( +/** + * Version of #UI_context_active_but_get that also returns RNA property info. + * Helper function for insert keyframe, reset to default, etc operators. + * + * \return active button, NULL if none found or if it doesn't contain valid RNA data. + */ +uiBut *UI_context_active_but_prop_get( const bContext *C, struct PointerRNA *r_ptr, struct PropertyRNA **r_prop, int *r_index) { @@ -8095,6 +8022,8 @@ void UI_context_active_but_prop_get( *r_prop = NULL; *r_index = 0; } + + return activebut; } void UI_context_active_but_prop_handle(bContext *C) diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 418d98e8e4a..fcf827bdbe6 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -729,15 +729,8 @@ void ui_block_align_calc(uiBlock *block); /* interface_anim.c */ void ui_but_anim_flag(uiBut *but, float cfra); -void ui_but_anim_insert_keyframe(struct bContext *C); -void ui_but_anim_delete_keyframe(struct bContext *C); -void ui_but_anim_clear_keyframe(struct bContext *C); -void ui_but_anim_add_driver(struct bContext *C); -void ui_but_anim_remove_driver(struct bContext *C); void ui_but_anim_copy_driver(struct bContext *C); void ui_but_anim_paste_driver(struct bContext *C); -void ui_but_anim_add_keyingset(struct bContext *C); -void ui_but_anim_remove_keyingset(struct bContext *C); bool ui_but_anim_expression_get(uiBut *but, char *str, size_t maxlen); bool ui_but_anim_expression_set(uiBut *but, const char *str); bool ui_but_anim_expression_create(uiBut *but, const char *str); diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index cb539bb1c5d..7e516474bfd 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -1082,79 +1082,6 @@ static void UI_OT_drop_color(wmOperatorType *ot) RNA_def_boolean(ot->srna, "gamma", 0, "Gamma Corrected", "The source color is gamma corrected "); } -/* ------------------------------------------------------------------------- */ - -static EnumPropertyItem space_context_cycle_direction[] = { - {SPACE_CONTEXT_CYCLE_PREV, "PREV", 0, "Previous", ""}, - {SPACE_CONTEXT_CYCLE_NEXT, "NEXT", 0, "Next", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int space_context_cycle_poll(bContext *C) -{ - ScrArea *sa = CTX_wm_area(C); - return ELEM(sa->spacetype, SPACE_BUTS, SPACE_USERPREF); -} - -/** - * Helper to get the correct RNA pointer/property pair for changing - * the display context of active space type in \sa. - */ -static void context_cycle_prop_get( - bScreen *screen, const ScrArea *sa, - PointerRNA *r_ptr, PropertyRNA **r_prop) -{ - const char *propname; - - switch (sa->spacetype) { - case SPACE_BUTS: - RNA_pointer_create(&screen->id, &RNA_SpaceProperties, sa->spacedata.first, r_ptr); - propname = "context"; - break; - case SPACE_USERPREF: - RNA_pointer_create(NULL, &RNA_UserPreferences, &U, r_ptr); - propname = "active_section"; - break; - } - - *r_prop = RNA_struct_find_property(r_ptr, propname); -} - -static int space_context_cycle_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) -{ - const int direction = RNA_enum_get(op->ptr, "direction"); - - PointerRNA ptr; - PropertyRNA *prop; - context_cycle_prop_get(CTX_wm_screen(C), CTX_wm_area(C), &ptr, &prop); - - const int old_context = RNA_property_enum_get(&ptr, prop); - const int new_context = RNA_property_enum_step( - C, &ptr, prop, old_context, - direction == SPACE_CONTEXT_CYCLE_PREV ? -1 : 1); - RNA_property_enum_set(&ptr, prop, new_context); - RNA_property_update(C, &ptr, prop); - - return OPERATOR_FINISHED; -} - -static void UI_OT_space_context_cycle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name = "Cycle Space Context"; - ot->description = "Cycle through the editor context by activating the next/previous one"; - ot->idname = "UI_OT_space_context_cycle"; - - /* api callbacks */ - ot->invoke = space_context_cycle_invoke; - ot->poll = space_context_cycle_poll; - - ot->flag = 0; - - RNA_def_enum(ot->srna, "direction", space_context_cycle_direction, SPACE_CONTEXT_CYCLE_NEXT, "Direction", - "Direction to cycle through"); -} - /* ********************************************************* */ /* Registration */ @@ -1174,7 +1101,6 @@ void ED_operatortypes_ui(void) WM_operatortype_append(UI_OT_edittranslation_init); #endif WM_operatortype_append(UI_OT_reloadtranslation); - WM_operatortype_append(UI_OT_space_context_cycle); /* external */ WM_operatortype_append(UI_OT_eyedropper_color); @@ -1185,12 +1111,29 @@ void ED_operatortypes_ui(void) /** * \brief User Interface Keymap - * - * For now only modal maps here, since UI uses special ui-handlers instead of operators. */ void ED_keymap_ui(wmKeyConfig *keyconf) { - WM_keymap_find(keyconf, "User Interface", 0, 0); + wmKeyMap *keymap = WM_keymap_find(keyconf, "User Interface", 0, 0); + + /* eyedroppers - notice they all have the same shortcut, but pass the event + * through until a suitable eyedropper for the active button is found */ + WM_keymap_add_item(keymap, "UI_OT_eyedropper_color", EKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "UI_OT_eyedropper_id", EKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "UI_OT_eyedropper_depth", EKEY, KM_PRESS, 0, 0); + + /* keyframes */ + WM_keymap_add_item(keymap, "ANIM_OT_keyframe_insert_button", IKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_keyframe_delete_button", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "ANIM_OT_keyframe_clear_button", IKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); + + /* drivers */ + WM_keymap_add_item(keymap, "ANIM_OT_driver_button_add", DKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ANIM_OT_driver_button_remove", DKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); + + /* keyingsets */ + WM_keymap_add_item(keymap, "ANIM_OT_keyingset_button_add", KKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_keyingset_button_remove", KKEY, KM_PRESS, KM_ALT, 0); eyedropper_modal_keymap(keyconf); } diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index b7f921624d9..5602e2b9c6d 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -467,7 +467,7 @@ static uiTooltipData *ui_tooltip_data_from_button(bContext *C, uiBut *but) } /* alternatively, buttons can store some reasoning too */ else if (but->disabled_info) { - disabled_msg = but->disabled_info; + disabled_msg = TIP_(but->disabled_info); } if (disabled_msg && disabled_msg[0]) { diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 6e516d193ca..9544a35affc 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -305,6 +305,8 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo cp = ts->vertex; break; case TH_VERTEX_SELECT: cp = ts->vertex_select; break; + case TH_VERTEX_BEVEL: + cp = ts->vertex_bevel; break; case TH_VERTEX_UNREFERENCED: cp = ts->vertex_unreferenced; break; case TH_VERTEX_SIZE: @@ -321,6 +323,8 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo cp = ts->edge_sharp; break; case TH_EDGE_CREASE: cp = ts->edge_crease; break; + case TH_EDGE_BEVEL: + cp = ts->edge_bevel; break; case TH_EDITMESH_ACTIVE: cp = ts->editmesh_active; break; case TH_EDGE_FACESEL: @@ -902,12 +906,14 @@ void ui_theme_init_default(void) rgba_char_args_set(btheme->tv3d.transform, 0xff, 0xff, 0xff, 255); rgba_char_args_set(btheme->tv3d.vertex, 0, 0, 0, 255); rgba_char_args_set(btheme->tv3d.vertex_select, 255, 133, 0, 255); + rgba_char_args_set(btheme->tv3d.vertex_bevel, 0, 165, 255, 255); rgba_char_args_set(btheme->tv3d.vertex_unreferenced, 0, 0, 0, 255); btheme->tv3d.vertex_size = 3; btheme->tv3d.outline_width = 1; rgba_char_args_set(btheme->tv3d.edge, 0x0, 0x0, 0x0, 255); rgba_char_args_set(btheme->tv3d.edge_select, 255, 160, 0, 255); rgba_char_args_set(btheme->tv3d.edge_seam, 219, 37, 18, 255); + rgba_char_args_set(btheme->tv3d.edge_bevel, 0, 165, 255, 255); rgba_char_args_set(btheme->tv3d.edge_facesel, 75, 75, 75, 255); rgba_char_args_set(btheme->tv3d.face, 0, 0, 0, 18); rgba_char_args_set(btheme->tv3d.face_select, 255, 133, 0, 60); @@ -2743,6 +2749,14 @@ void init_userdef_do_versions(void) } } + if (!USER_VERSION_ATLEAST(278, 1)) { + bTheme *btheme; + for (btheme = U.themes.first; btheme; btheme = btheme->next) { + rgba_char_args_set(btheme->tv3d.vertex_bevel, 0, 165, 255, 255); + rgba_char_args_set(btheme->tv3d.edge_bevel, 0, 165, 255, 255); + } + } + /** * Include next version bump. * |