Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/editors/interface/interface.c3
-rw-r--r--source/blender/editors/interface/interface_handlers.c36
-rw-r--r--source/blender/editors/interface/interface_intern.h1
-rw-r--r--source/blender/editors/interface/interface_layout.c9
-rw-r--r--source/blender/editors/interface/interface_regions.c2
-rw-r--r--source/blender/editors/interface/resources.c4
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;