diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/interface/interface.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 99d97e9d500..8751741a58a 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2671,9 +2671,17 @@ void uiBlockBeginAlign(uiBlock *block) static bool buts_are_horiz(uiBut *but1, uiBut *but2) { float dx, dy; - - dx = fabs(but1->rect.xmax - but2->rect.xmin); - dy = fabs(but1->rect.ymin - but2->rect.ymax); + + /* simple case which can fail if buttons shift apart + * with proportional layouts, see: [#38602] */ + if ((but1->rect.ymin == but2->rect.ymin) && + (but1->rect.xmin != but2->rect.xmin)) + { + return true; + } + + dx = fabsf(but1->rect.xmax - but2->rect.xmin); + dy = fabsf(but1->rect.ymin - but2->rect.ymax); return (dx <= dy); } |