[Bf-blender-cvs] [8e12efb] pie-menus: set UI_RADIAL_NONE to -1 so we can use the enum to undex arrays
Campbell Barton
noreply at git.blender.org
Sat Aug 2 18:29:18 CEST 2014
Commit: 8e12efb43100552f6cdd108591bf3696ac55f55a
Author: Campbell Barton
Date: Sun Aug 3 02:28:31 2014 +1000
Branches: pie-menus
https://developer.blender.org/rB8e12efb43100552f6cdd108591bf3696ac55f55a
set UI_RADIAL_NONE to -1 so we can use the enum to undex arrays
===================================================================
M source/blender/editors/interface/interface.c
M source/blender/editors/interface/interface_handlers.c
M source/blender/editors/interface/interface_intern.h
M source/blender/editors/interface/interface_regions.c
===================================================================
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 524cafb..be15203 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -1108,8 +1108,8 @@ const short ui_radial_dir_to_angle[8] = {90, 45, 0, 315, 270, 225, 180, 1
static void ui_pie_direction_string(uiBut *but, char *buf, int size)
{
- BLI_assert((unsigned int)(but->pie_dir - 1) < ARRAY_SIZE(ui_radial_dir_to_numpad));
- BLI_snprintf(buf, size, "%d", ui_radial_dir_to_numpad[but->pie_dir - 1]);
+ BLI_assert(but->pie_dir < ARRAY_SIZE(ui_radial_dir_to_numpad));
+ BLI_snprintf(buf, size, "%d", ui_radial_dir_to_numpad[but->pie_dir]);
}
static void ui_menu_block_set_keymaps(const bContext *C, uiBlock *block)
@@ -3071,6 +3071,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, const char *str,
but->lock = block->lock;
but->lockstr = block->lockstr;
but->dt = block->dt;
+ but->pie_dir = UI_RADIAL_NONE;
but->block = block; /* pointer back, used for frontbuffer status, and picker */
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 1b004ea..b9eb566 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -8603,7 +8603,7 @@ static int ui_handler_pie(bContext *C, const wmEvent *event, uiPopupBlockHandle
pie_radius *= fac;
for (but = block->buttons.first; but; but = but->next) {
- if (but->pie_dir) {
+ if (but->pie_dir != UI_RADIAL_NONE) {
float dir[2];
ui_but_pie_dir_visual(but->pie_dir, dir);
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index e81d427..21fbf05 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -124,15 +124,15 @@ enum {
/* but->pie_dir */
typedef enum RadialDirection {
- UI_RADIAL_NONE = 0,
- UI_RADIAL_N = 1,
- UI_RADIAL_NE = 2,
- UI_RADIAL_E = 3,
- UI_RADIAL_SE = 4,
- UI_RADIAL_S = 5,
- UI_RADIAL_SW = 6,
- UI_RADIAL_W = 7,
- UI_RADIAL_NW = 8,
+ UI_RADIAL_NONE = -1,
+ UI_RADIAL_N = 0,
+ UI_RADIAL_NE = 1,
+ UI_RADIAL_E = 2,
+ UI_RADIAL_SE = 3,
+ UI_RADIAL_S = 4,
+ UI_RADIAL_SW = 5,
+ UI_RADIAL_W = 6,
+ UI_RADIAL_NW = 7,
} RadialDirection;
extern const char ui_radial_dir_order[8];
@@ -259,7 +259,7 @@ struct uiBut {
BIFIconID icon;
bool lock;
char dt; /* drawtype: UI_EMBOSS, UI_EMBOSSN ... etc, copied from the block */
- char pie_dir; /* direction in a pie menu, used for collision detection */
+ signed char pie_dir; /* direction in a pie menu, used for collision detection (RadialDirection) */
char changed; /* could be made into a single flag */
unsigned char unit_type; /* so buttons can support unit systems which are not RNA */
short modifier_key;
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 956cc9e..0da16dc 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1750,7 +1750,7 @@ uiBlock *ui_popup_block_refresh(
/* lastly set the buttons at the center of the pie menu, ready for animation */
if (U.pie_animation_timeout > 0) {
for (but = block->buttons.first; but; but = but->next) {
- if (but->pie_dir) {
+ if (but->pie_dir != UI_RADIAL_NONE) {
BLI_rctf_recenter(&but->rect, UNPACK2(block->pie_data.pie_center_spawned));
}
}
More information about the Bf-blender-cvs
mailing list