[Bf-blender-cvs] [d0b62ce0412] blender2.8: Fix navigate widget w/ region overlap
Campbell Barton
noreply at git.blender.org
Wed May 16 08:48:04 CEST 2018
Commit: d0b62ce041283375f63faf6904d7e45ddf2b104b
Author: Campbell Barton
Date: Wed May 16 08:46:40 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBd0b62ce041283375f63faf6904d7e45ddf2b104b
Fix navigate widget w/ region overlap
===================================================================
M source/blender/editors/space_view3d/view3d_manipulator_navigate.c
===================================================================
diff --git a/source/blender/editors/space_view3d/view3d_manipulator_navigate.c b/source/blender/editors/space_view3d/view3d_manipulator_navigate.c
index 0a209767003..75ab32a5b18 100644
--- a/source/blender/editors/space_view3d/view3d_manipulator_navigate.c
+++ b/source/blender/editors/space_view3d/view3d_manipulator_navigate.c
@@ -166,9 +166,7 @@ struct NavigateWidgetGroup {
wmManipulator *mpr_array[MPR_TOTAL];
/* Store the view state to check for changes. */
struct {
- struct {
- short winx, winy;
- } ar;
+ rcti rect_visible;
struct {
char is_persp;
char viewlock;
@@ -277,25 +275,25 @@ static void WIDGETGROUP_navigate_draw_prepare(const bContext *C, wmManipulatorGr
copy_v3_v3(navgroup->mpr_array[MPR_ROTATE]->matrix_offset[i], rv3d->viewmat[i]);
}
- if ((navgroup->state.ar.winx == ar->winx) &&
- (navgroup->state.ar.winy == ar->winy) &&
+ rcti rect_visible;
+ ED_region_visible_rect(ar, &rect_visible);
+
+ if ((navgroup->state.rect_visible.xmax == rect_visible.xmax) &&
+ (navgroup->state.rect_visible.ymax == rect_visible.ymax) &&
(navgroup->state.rv3d.is_persp == rv3d->is_persp) &&
(navgroup->state.rv3d.viewlock == rv3d->viewlock))
{
return;
}
-
- navgroup->state.ar.winx = ar->winx;
- navgroup->state.ar.winy = ar->winy;
+ navgroup->state.rect_visible = rect_visible;
navgroup->state.rv3d.is_persp = rv3d->is_persp;
navgroup->state.rv3d.viewlock = rv3d->viewlock;
-
const float icon_size = MANIPULATOR_SIZE;
const float icon_offset = (icon_size / 2.0) * MANIPULATOR_OFFSET_FAC * UI_DPI_FAC;
const float icon_offset_mini = icon_size * MANIPULATOR_MINI_OFFSET_FAC * UI_DPI_FAC;
- const float co[2] = {ar->winx - icon_offset, ar->winy - icon_offset};
+ const float co[2] = {rect_visible.xmax - icon_offset, rect_visible.ymax - icon_offset};
wmManipulator *mpr;
More information about the Bf-blender-cvs
mailing list