[haiku-commits] haiku: hrev54395 - src/kits/interface

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 4 Jul 2020 18:44:30 -0400 (EDT)

hrev54395 adds 4 changesets to branch 'master'
old head: 89fd39f42ab0760ea7d9cb6c8f9da8947a6bdc89
new head: 9a0cae9d28f649cf5b50bd5d1760ab34f6cf7d10
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=9a0cae9d28f6+%5E89fd39f42ab0

----------------------------------------------------------------------------

99e4ca5fc7ca: BAlert: Use factional scaling for icons.
  
  The behavior of not making the icons smaller than their default
  pixel size is (for now) kept, but when making them larger,
  fractional scaling is now used.
  
  This makes alerts look much better on my system, which has a font
  size of 18 (i.e. 150% normal, so 32px -> 48px.)

cf7c2ea69dea: BMenu: Make margins/padding more HiDPI-aware.
  
  This greatly improves the appearance of menus under font-scaled systems.
  The computations are written such that the margins should be unchanged
  under a 12pt font size.

2d68cd06c757: HaikuControlLook: Scale frame insets.
  
  This is a pretty simple change, but has a noticeable effect
  on insets throughout the system under HiDPI.

9a0cae9d28f6: BButton: Use BControlLook for label spacing instead of a constant.
  
  This gets button proportions under HiDPI much closer to the ones
  under a default font size. Still not quite there yet, though.

                              [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

5 files changed, 18 insertions(+), 12 deletions(-)
src/kits/interface/Alert.cpp            |  9 +++++----
src/kits/interface/Button.cpp           | 10 ++++------
src/kits/interface/HaikuControlLook.cpp |  2 ++
src/kits/interface/Menu.cpp             |  4 +++-
src/kits/interface/MenuBar.cpp          |  5 ++++-

############################################################################

Commit:      99e4ca5fc7ca65a0ebf028127c6afe3ab2659f90
URL:         https://git.haiku-os.org/haiku/commit/?id=99e4ca5fc7ca
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sat Jul  4 21:57:06 2020 UTC

BAlert: Use factional scaling for icons.

The behavior of not making the icons smaller than their default
pixel size is (for now) kept, but when making them larger,
fractional scaling is now used.

This makes alerts look much better on my system, which has a font
size of 18 (i.e. 150% normal, so 32px -> 48px.)

----------------------------------------------------------------------------

diff --git a/src/kits/interface/Alert.cpp b/src/kits/interface/Alert.cpp
index f924604184..7658eba2be 100644
--- a/src/kits/interface/Alert.cpp
+++ b/src/kits/interface/Alert.cpp
@@ -90,10 +90,11 @@ static const int kWindowMinWidth = 310;
 static const int kWindowOffsetMinWidth = 335;
 
 
-static inline int32
+static inline float
 icon_layout_scale()
 {
-       return max_c(1, ((int32)be_plain_font->Size() + 15) / 16);
+       float scale = be_plain_font->Size() / 12;
+       return max_c(1, scale);
 }
 
 
@@ -756,7 +757,7 @@ TAlertView::Archive(BMessage* archive, bool deep) const
 void
 TAlertView::GetPreferredSize(float* _width, float* _height)
 {
-       int32 scale = icon_layout_scale();
+       float scale = icon_layout_scale();
 
        if (_width != NULL) {
                if (fIconBitmap != NULL)
@@ -788,7 +789,7 @@ TAlertView::Draw(BRect updateRect)
 
        // Here's the fun stuff
        BRect stripeRect = Bounds();
-       int32 iconLayoutScale = icon_layout_scale();
+       float iconLayoutScale = icon_layout_scale();
        stripeRect.right = kIconStripeWidth * iconLayoutScale;
        SetHighColor(tint_color(ViewColor(), B_DARKEN_1_TINT));
        FillRect(stripeRect);

############################################################################

Commit:      cf7c2ea69deac1215dec15334f07fddfe582b5ab
URL:         https://git.haiku-os.org/haiku/commit/?id=cf7c2ea69dea
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sat Jul  4 22:19:26 2020 UTC

BMenu: Make margins/padding more HiDPI-aware.

This greatly improves the appearance of menus under font-scaled systems.
The computations are written such that the margins should be unchanged
under a 12pt font size.

----------------------------------------------------------------------------

diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp
index 844340d4e8..73b1ecaee1 100644
--- a/src/kits/interface/Menu.cpp
+++ b/src/kits/interface/Menu.cpp
@@ -228,7 +228,6 @@ BMenu::BMenu(const char* name, menu_layout layout)
        :
        BView(BRect(0, 0, 0, 0), name, 0, B_WILL_DRAW),
        fChosenItem(NULL),
-       fPad(std::max(14.0f, be_plain_font->Size() + 2.0f), 2.0f, 20.0f, 0.0f),
        fSelected(NULL),
        fCachedMenuWindow(NULL),
        fSuper(NULL),
@@ -255,6 +254,9 @@ BMenu::BMenu(const char* name, menu_layout layout)
        fHasSubmenus(false),
        fAttachAborted(false)
 {
+       const float fontSize = be_plain_font->Size();
+       fPad = BRect(fontSize * 1.15f, fontSize / 6.0f, fontSize * 1.7f, 0.0f);
+
        _InitData(NULL);
 }
 
diff --git a/src/kits/interface/MenuBar.cpp b/src/kits/interface/MenuBar.cpp
index 791cbc451a..6a07dd23c4 100644
--- a/src/kits/interface/MenuBar.cpp
+++ b/src/kits/interface/MenuBar.cpp
@@ -741,9 +741,12 @@ BMenuBar::_RestoreFocus()
 void
 BMenuBar::_InitData(menu_layout layout)
 {
+       const float fontSize = be_plain_font->Size();
+       float lr = fontSize * 2.0f / 3.0f, tb = fontSize / 6.0f;
+       SetItemMargins(lr, tb, lr, tb);
+
        fBorders = BControlLook::B_ALL_BORDERS;
        fLastBounds = new BRect(Bounds());
-       SetItemMargins(8.0f, 2.0f, 8.0f, 2.0f);
        _SetIgnoreHidden(true);
        SetLowUIColor(B_MENU_BACKGROUND_COLOR);
        SetViewColor(B_TRANSPARENT_COLOR);

############################################################################

Commit:      2d68cd06c7575d66c764163a7caa5dfa7c391347
URL:         https://git.haiku-os.org/haiku/commit/?id=2d68cd06c757
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sat Jul  4 22:42:45 2020 UTC

HaikuControlLook: Scale frame insets.

This is a pretty simple change, but has a noticeable effect
on insets throughout the system under HiDPI.

----------------------------------------------------------------------------

diff --git a/src/kits/interface/HaikuControlLook.cpp 
b/src/kits/interface/HaikuControlLook.cpp
index a43edb409a..e263db3968 100644
--- a/src/kits/interface/HaikuControlLook.cpp
+++ b/src/kits/interface/HaikuControlLook.cpp
@@ -2422,6 +2422,8 @@ HaikuControlLook::GetFrameInsets(frame_type frameType, 
uint32 flags, float& _lef
                        break;
        }
 
+       inset = ceilf(inset * (be_plain_font->Size() / 12.0f));
+
        _left = inset;
        _top = inset;
        _right = inset;

############################################################################

Revision:    hrev54395
Commit:      9a0cae9d28f649cf5b50bd5d1760ab34f6cf7d10
URL:         https://git.haiku-os.org/haiku/commit/?id=9a0cae9d28f6
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sat Jul  4 22:43:30 2020 UTC

BButton: Use BControlLook for label spacing instead of a constant.

This gets button proportions under HiDPI much closer to the ones
under a default font size. Still not quite there yet, though.

----------------------------------------------------------------------------

diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp
index 9fc077c6a2..635052434a 100644
--- a/src/kits/interface/Button.cpp
+++ b/src/kits/interface/Button.cpp
@@ -35,9 +35,6 @@ enum {
 };
 
 
-static const float kLabelMargin = 3;
-
-
 BButton::BButton(BRect frame, const char* name, const char* label,
        BMessage* message, uint32 resizingMode, uint32 flags)
        :
@@ -157,7 +154,8 @@ BButton::Draw(BRect updateRect)
        }
 
        // always leave some room around the label
-       rect.InsetBy(kLabelMargin, kLabelMargin);
+       float labelMargin = be_control_look->DefaultLabelSpacing() / 2;
+       rect.InsetBy(labelMargin, labelMargin);
 
        const BBitmap* icon = IconBitmap(
                (Value() == B_CONTROL_OFF
@@ -651,7 +649,7 @@ BButton::_ValidatePreferredSize()
                        left, top, right, bottom);
 
                // width
-               float width = left + right + 2 * kLabelMargin - 1;
+               float width = left + right + 
be_control_look->DefaultLabelSpacing() - 1;
 
                const char* label = Label();
                if (label != NULL) {
@@ -667,7 +665,7 @@ BButton::_ValidatePreferredSize()
                        width += be_control_look->DefaultLabelSpacing();
 
                // height
-               float minHorizontalMargins = top + bottom + 2 * kLabelMargin;
+               float minHorizontalMargins = top + bottom + 
be_control_look->DefaultLabelSpacing();
                float height = -1;
 
                if (label != NULL) {


Other related posts:

  • » [haiku-commits] haiku: hrev54395 - src/kits/interface - waddlesplash