diff options
-rw-r--r-- | source/blender/blenkernel/BKE_blender.h | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/interface.c | 3 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 36 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 9 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/resources.c | 4 |
7 files changed, 28 insertions, 29 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index ea904983eca..e2d4f7c5a22 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -42,7 +42,7 @@ extern "C" { * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 271 -#define BLENDER_SUBVERSION 4 +#define BLENDER_SUBVERSION 5 /* 262 was the last editmesh release but it has compatibility code for bmesh data */ #define BLENDER_MINVERSION 270 #define BLENDER_MINSUBVERSION 5 diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 73eb5f63aea..155b059afe2 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1103,8 +1103,7 @@ const char ui_radial_dir_order[8] = { UI_RADIAL_NW, UI_RADIAL_NE, UI_RADIAL_SW, UI_RADIAL_SE}; const char ui_radial_dir_to_numpad[8] = {8, 9, 6, 3, 2, 1, 4, 7}; -const short ui_radial_dir_to_angle_visual[8] = {90, 40, 0, 320, 270, 220, 180, 140}; -const short ui_radial_dir_to_angle[8] = {90, 45, 0, 315, 270, 225, 180, 135}; +const short ui_radial_dir_to_angle[8] = {90, 45, 0, 315, 270, 225, 180, 135}; static void ui_but_pie_direction_string(uiBut *but, char *buf, int size) { diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 30ce7c6b1ec..102d7b6feef 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -6378,27 +6378,17 @@ static bool ui_but_contains_pt(uiBut *but, float mx, float my) return BLI_rctf_isect_pt(&but->rect, mx, my); } -static void ui_but_pie_dir__internal(RadialDirection dir, float vec[2], const short angles[8]) +void ui_but_pie_dir(RadialDirection dir, float vec[2]) { float angle; BLI_assert(dir != UI_RADIAL_NONE); - angle = DEG2RADF((float)angles[dir]); + angle = DEG2RADF((float)ui_radial_dir_to_angle[dir]); vec[0] = cosf(angle); vec[1] = sinf(angle); } -void ui_but_pie_dir_visual(RadialDirection dir, float vec[2]) -{ - ui_but_pie_dir__internal(dir, vec, ui_radial_dir_to_angle_visual); -} - -void ui_but_pie_dir(RadialDirection dir, float vec[2]) -{ - ui_but_pie_dir__internal(dir, vec, ui_radial_dir_to_angle); -} - static bool ui_but_isect_pie_seg(uiBlock *block, uiBut *but) { const float angle_range = (block->pie_data.flags & UI_PIE_DEGREES_RANGE_LARGE) ? M_PI_4 : M_PI_4 / 2.0; @@ -8650,17 +8640,25 @@ static int ui_handler_pie(bContext *C, const wmEvent *event, uiPopupBlockHandle block->pie_data.flags |= UI_PIE_ANIMATION_FINISHED; } - pie_radius *= fac; - for (but = block->buttons.first; but; but = but->next) { if (but->pie_dir != UI_RADIAL_NONE) { - float dir[2]; + float vec[2]; + float center[2]; + + ui_but_pie_dir(but->pie_dir, vec); - ui_but_pie_dir_visual(but->pie_dir, dir); + center[0] = (vec[0] > 0.01f) ? 0.5f : ((vec[0] < -0.01f) ? -0.5f : 0.0f); + center[1] = (vec[1] > 0.99f) ? 0.5f : ((vec[1] < -0.99f) ? -0.5f : 0.0f); - mul_v2_fl(dir, pie_radius ); - add_v2_v2(dir, block->pie_data.pie_center_spawned); - BLI_rctf_recenter(&but->rect, dir[0], dir[1]); + center[0] *= BLI_rctf_size_x(&but->rect); + center[1] *= BLI_rctf_size_y(&but->rect); + + mul_v2_fl(vec, pie_radius); + add_v2_v2(vec, center); + mul_v2_fl(vec, fac); + add_v2_v2(vec, block->pie_data.pie_center_spawned); + + BLI_rctf_recenter(&but->rect, vec[0], vec[1]); } } block->pie_data.alphafac = fac; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index d3ff1c7063f..f5a965e9701 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -137,7 +137,6 @@ typedef enum RadialDirection { extern const char ui_radial_dir_order[8]; extern const char ui_radial_dir_to_numpad[8]; -extern const short ui_radial_dir_to_angle_visual[8]; extern const short ui_radial_dir_to_angle[8]; /* internal panel drawing defines */ diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index a2d8ce06e5f..ac9110873ff 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -2121,7 +2121,7 @@ static RadialDirection ui_get_radialbut_vec(float vec[2], short itemnum) BLI_assert(itemnum < 8); dir = ui_radial_dir_order[itemnum]; - ui_but_pie_dir_visual(dir, vec); + ui_but_pie_dir(dir, vec); return dir; } @@ -2179,8 +2179,11 @@ static void ui_litem_layout_radial(uiLayout *litem) if (ui_item_is_radial_displayable(item)) { RadialDirection dir; float vec[2]; + float factor[2]; dir = ui_get_radialbut_vec(vec, itemnum); + factor[0] = (vec[0] > 0.01f) ? 0.0f : ((vec[0] < -0.01f) ? -1.0f : -0.5f); + factor[1] = (vec[1] > 0.99f) ? 0.0f : ((vec[1] < -0.99f) ? -1.0f : -0.5f); itemnum++; @@ -2199,7 +2202,7 @@ static void ui_litem_layout_radial(uiLayout *litem) ui_item_size(item, &itemw, &itemh); - ui_item_position(item, x + vec[0] * pie_radius - itemw / 2, y + vec[1] * pie_radius - itemh / 2, itemw, itemh); + ui_item_position(item, x + vec[0] * pie_radius + factor[0] * itemw, y + vec[1] * pie_radius + factor[1] * itemh, itemw, itemh); minx = min_ii(minx, x + vec[0] * pie_radius - itemw / 2); maxx = max_ii(maxx, x + vec[0] * pie_radius + itemw / 2); @@ -2232,7 +2235,7 @@ static void ui_litem_layout_root_radial(uiLayout *litem) ui_item_size(item, &itemw, &itemh); - ui_item_position(item, x - itemw / 2, y + 2 * UI_UNIT_Y, itemw, itemh); + ui_item_position(item, x - itemw / 2, y + U.pixelsize * (U.pie_menu_threshold + 9.0f), itemw, itemh); } } diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 8eadff137d6..8ad30d05197 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -113,7 +113,7 @@ int ui_step_name_menu(uiBut *but, int direction) { /* currenly only RNA buttons */ if ((but->rnaprop == NULL) || (RNA_property_type(but->rnaprop) != PROP_ENUM)) { - printf("%s: cannot cycle button '%s'\n", __func__, but->str); + printf("%s: cannot cycle button '%s'", __func__, but->str); return 0; } diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 92277cc63ea..822fa41e69d 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -2454,7 +2454,7 @@ void init_userdef_do_versions(void) } } - if (U.versionfile < 271 || (U.versionfile == 271 && U.subversionfile < 4)) { + if (U.versionfile < 271 || (U.versionfile == 271 && U.subversionfile < 5)) { bTheme *btheme; struct uiWidgetColors wcol_pie_menu = { @@ -2470,7 +2470,7 @@ void init_userdef_do_versions(void) 10, -10 }; - U.pie_menu_radius = 150; + U.pie_menu_radius = 100; U.pie_menu_threshold = 12; U.pie_animation_timeout = 6; |