[Bf-blender-cvs] [1f4337b] pie-menus: Pies:
Antony Riakiotakis
noreply at git.blender.org
Mon May 26 23:03:52 CEST 2014
Commit: 1f4337b77020b827f33149a7aba508f90fd8f49e
Author: Antony Riakiotakis
Date: Tue May 27 00:03:41 2014 +0300
https://developer.blender.org/rB1f4337b77020b827f33149a7aba508f90fd8f49e
Pies:
* More display code
* Add collision detection in one more place, now object mode pie
collision works correctly.
* Changed object mode pie shortcut to TAB
===================================================================
M source/blender/editors/interface/interface_handlers.c
M source/blender/editors/interface/interface_intern.h
M source/blender/editors/interface/interface_widgets.c
M source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 4993e51..9205858 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -6379,18 +6379,43 @@ static bool ui_mouse_inside_region(ARegion *ar, int x, int y)
return true;
}
+static void ui_block_calculate_pie_segment(const float mx, const float my, float seg2[2], const uiBlock *block)
+{
+ float seg1[2];
+
+ seg1[0] = BLI_rctf_cent_x(&block->rect);
+ seg1[1] = BLI_rctf_cent_y(&block->rect);
+
+ seg2[0] = mx - seg1[0];
+ seg2[1] = my - seg1[1];
+ normalize_v2(seg2);
+}
+
+
static bool ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y)
{
+ uiBlock *block = but->block;
float mx, my;
+ float seg[2];
+
if (!ui_mouse_inside_region(ar, x, y))
return false;
mx = x;
my = y;
- ui_window_to_block_fl(ar, but->block, &mx, &my);
+ ui_window_to_block_fl(ar, block, &mx, &my);
- if (!ui_but_contains_pt(but, mx, my))
+ if (block->flag & UI_BLOCK_RADIAL) {
+ ui_block_calculate_pie_segment(mx, my, seg, block);
+ }
+
+ if (but->dt == UI_EMBOSSR) {
+ if (!ui_but_isect_pie_seg(block, but, seg)) {
+ return false;
+ }
+ }
+ else if (!ui_but_contains_pt(but, mx, my))
return false;
return true;
@@ -6426,18 +6451,6 @@ bool ui_is_but_search_unlink_visible(const uiBut *but)
(but->drawstr[0] != '\0'));
}
-static void ui_block_calculate_pie_segment(const float mx, const float my, float seg2[2], const uiBlock *block)
-{
- float seg1[2];
-
- seg1[0] = BLI_rctf_cent_x(&block->rect);
- seg1[1] = BLI_rctf_cent_y(&block->rect);
-
- seg2[0] = mx - seg1[0];
- seg2[1] = my - seg1[1];
- normalize_v2(seg2);
-}
-
/* x and y are only used in case event is NULL... */
static uiBut *ui_but_find_mouse_over_ex(ARegion *ar, const int x, const int y, const bool labeledit)
{
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 1c1f3eb..2791f37 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -371,6 +371,7 @@ struct uiBlock {
*/
int num_pie_items; /* number of pie items, useful to determine collision based on how pie items are distributed */
float pie_center_width; /* width of the central text of the pie menu */
+ float pie_dir[2];
};
typedef struct uiSafetyRct {
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index f516a4b..03fde12 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -3671,14 +3671,17 @@ void ui_draw_menu_back(uiStyle *UNUSED(style), uiBlock *block, rcti *rect)
void ui_draw_pie_center(uiBlock *block)
{
+ bTheme *btheme = UI_GetTheme();
float cx = BLI_rctf_cent_x(&block->rect);
float cy = BLI_rctf_cent_y(&block->rect);
float pie_radius_internal = block->pie_center_width;
- glColor4ub(127, 127, 127, 127);
+ glColor4ubv(btheme->tui.wcol_menu_back.inner);
glPushMatrix();
glTranslatef(cx, cy, 0.0);
- glutil_draw_lined_arc(0.0, (float)(M_PI * 2.0), pie_radius_internal, 40);
+ glEnable(GL_BLEND);
+ glutil_draw_filled_arc(0.0, (float)(M_PI * 2.0), pie_radius_internal, 40);
+ glDisable(GL_BLEND);
glPopMatrix();
}
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index f09ae61..4d65388 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -1194,7 +1194,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
kmi = WM_keymap_add_item(keymap, "WM_OT_context_pie_enum", AKEY, KM_PRESS, 0, 0);
RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.stroke_method");
- WM_keymap_add_pie_menu(keymap, "VIEW3D_PIE_object_mode", QKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_pie_menu(keymap, "VIEW3D_PIE_object_mode", TABKEY, KM_PRESS, 0, 0);
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_smooth_stroke");
More information about the Bf-blender-cvs
mailing list