Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix issue with alternating flex direction and percent postions #44792

Closed
wants to merge 2 commits into from

Commits on Jun 5, 2024

  1. [skip ci] Fix issue where % width would be wrong if physical and rela…

    …tive padding defined on parent (facebook#44791)
    
    Summary:
    
    X-link: facebook/yoga#1662
    
    This should fix facebook/yoga#1657. Rather insidious bug but we had code like
    
    ```
      // The total padding/border for a given axis does not depend on the direction
      // so hardcoding LTR here to avoid piping direction to this function
      return node->style().computeInlineStartPaddingAndBorder(
                 axis, Direction::LTR, widthSize) +
          node->style().computeInlineEndPaddingAndBorder(
              axis, Direction::LTR, widthSize);
    ```
    
    That comment is NOT true if someone sets both the physical edge and relative edge. So like paddingLeft and paddingEnd for RTL. This diff simply pipes the direction to that spot to use instead of hardcoding LTR. Every file changed is just to pipe `direction`.
    
    Differential Revision: D58169843
    joevilches authored and facebook-github-bot committed Jun 5, 2024
    Configuration menu
    Copy the full SHA
    df8d1f1 View commit details
    Browse the repository at this point in the history
  2. Fix issue with alternating flex direction and percent postions

    Summary:
    X-link: facebook/yoga#1663
    
    Fixing facebook/yoga#1658. We had a problem where if a child had a different flex direction than its parent, and it also set a position as a percent, it would look at the wrong axis to evaluate the percent. What was happening was we were passing in the container's mainAxis size and crossAxis size to use to evaluate the position size if it was a percent. However, we matched these sizes with the main/cross axis of the child - which is wrong if the flex direction is different. 
    
    I changed it so that the function just takes in ownerWidth and ownerHeight then calls isRow to determine which one to use for the main/cross axis position. This reduces the ambiguity quite a bit imo.
    
    Differential Revision: D58172416
    joevilches authored and facebook-github-bot committed Jun 5, 2024
    Configuration menu
    Copy the full SHA
    df71393 View commit details
    Browse the repository at this point in the history