[Bf-blender-cvs] [65490e62708] master: Fix T92371: Move AZONE_REGION When Overlapped
Harley Acheson
noreply at git.blender.org
Thu Oct 21 20:18:42 CEST 2021
Commit: 65490e62708c6bb0c03d9c73fd7179fdf71355a5
Author: Harley Acheson
Date: Thu Oct 21 11:17:38 2021 -0700
Branches: master
https://developer.blender.org/rB65490e62708c6bb0c03d9c73fd7179fdf71355a5
Fix T92371: Move AZONE_REGION When Overlapped
Overlapped regions have transparent backgrounds, so when placing
AZONE_REGION we need to move them in to the content edge.
See D12956 for details and examples.
Differential Revision: https://developer.blender.org/D12956
Reviewed by Hans Goudey
===================================================================
M source/blender/editors/screen/area.c
===================================================================
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 54727cc79f1..9e179dad2e8 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -972,29 +972,33 @@ static void fullscreen_azone_init(ScrArea *area, ARegion *region)
#define AZONEPAD_ICON (0.45f * U.widget_unit)
static void region_azone_edge(AZone *az, ARegion *region)
{
+ /* If region is overlapped (transparent background), move AZone to content.
+ * Note this is an arbitrary amount that matches nicely with numbers elswhere. */
+ int overlap_padding = (region->overlap) ? (int)(0.4f * U.widget_unit) : 0;
+
switch (az->edge) {
case AE_TOP_TO_BOTTOMRIGHT:
az->x1 = region->winrct.xmin;
- az->y1 = region->winrct.ymax - AZONEPAD_EDGE;
+ az->y1 = region->winrct.ymax - AZONEPAD_EDGE - overlap_padding;
az->x2 = region->winrct.xmax;
- az->y2 = region->winrct.ymax + AZONEPAD_EDGE;
+ az->y2 = region->winrct.ymax + AZONEPAD_EDGE - overlap_padding;
break;
case AE_BOTTOM_TO_TOPLEFT:
az->x1 = region->winrct.xmin;
- az->y1 = region->winrct.ymin + AZONEPAD_EDGE;
+ az->y1 = region->winrct.ymin + AZONEPAD_EDGE + overlap_padding;
az->x2 = region->winrct.xmax;
- az->y2 = region->winrct.ymin - AZONEPAD_EDGE;
+ az->y2 = region->winrct.ymin - AZONEPAD_EDGE + overlap_padding;
break;
case AE_LEFT_TO_TOPRIGHT:
- az->x1 = region->winrct.xmin - AZONEPAD_EDGE;
+ az->x1 = region->winrct.xmin - AZONEPAD_EDGE + overlap_padding;
az->y1 = region->winrct.ymin;
- az->x2 = region->winrct.xmin + AZONEPAD_EDGE;
+ az->x2 = region->winrct.xmin + AZONEPAD_EDGE + overlap_padding;
az->y2 = region->winrct.ymax;
break;
case AE_RIGHT_TO_TOPLEFT:
- az->x1 = region->winrct.xmax + AZONEPAD_EDGE;
+ az->x1 = region->winrct.xmax + AZONEPAD_EDGE - overlap_padding;
az->y1 = region->winrct.ymin;
- az->x2 = region->winrct.xmax - AZONEPAD_EDGE;
+ az->x2 = region->winrct.xmax - AZONEPAD_EDGE - overlap_padding;
az->y2 = region->winrct.ymax;
break;
}
More information about the Bf-blender-cvs
mailing list