Skip to content
  • David Edmundson's avatar
    Use floating geometry throughout · 7292af3d
    David Edmundson authored
    With fractional scaling integer based logical geometry may not match
    device pixels. Once we have a floating point base we can fix that. This
    also is
    important for our X11 scale override, with a scale of 2 we could
    get logical sizes with halves.
    
    We already have all input being floating point, this doubles down on it
    for all remaining geometry.
    
    - Outputs remain integer to ensure that any screen on the right remains
    aligned.
     - Placement also remains integer based for now.
    - Repainting is untouched as we always expand outwards
     			   (QRectF::toAdjustedRect().
     - Decoration is untouched for now
     - Rules are integer in the config, but floating in the adjusting/API
    This should also be fine.
    
    At some point we'll add a method to snap to the device pixel
    grid. Effectively `round(value * dpr)  / dpr` though right now things
    mostly work.
    
    This also gets rid of a lot of hacks for QRect right and bottom which
    are very
    confusing.
    
    Parts to watch out in the port are:
     QRectF::contains now includes edges
    QRectF::right and bottom are now sane so previous hacks have to be
    removed
     QRectF(QPoint, QPoint) behaves differently for the same reason
     QRectF::center too
    
    In test results some adjusted values which are the result of
    QRect.center because using QRectF's center should behave the same to the
    user.
    7292af3d