[haiku-commits] haiku: hrev53598 - src/apps/processcontroller

  • From: Adrien Destugues <pulkomandy@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 24 Nov 2019 07:13:02 -0500 (EST)

hrev53598 adds 1 changeset to branch 'master'
old head: 5de2f989bca4b6c440314f0c5dc032fd96429192
new head: 32bc3e2c0faa35d385162d99e3e0cd2ff46f4011
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=32bc3e2c0faa+%5E5de2f989bca4

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

32bc3e2c0faa: ProcessController: fix bars height computation
  
  The previous code used a fixed margin, which would lead to too small
  bars with small font sizes (the bar content would not even be visible).
  
  Instead, use the font height as the base for the bar height, which
  allows us to use the same code everywhere, no matter the menu item
  height (which can vary depending on if there is an icon, etc)
  
  Fixes #15391.

                                 [ Adrien Destugues <pulkomandy@xxxxxxxxx> ]

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

Revision:    hrev53598
Commit:      32bc3e2c0faa35d385162d99e3e0cd2ff46f4011
URL:         https://git.haiku-os.org/haiku/commit/?id=32bc3e2c0faa
Author:      Adrien Destugues <pulkomandy@xxxxxxxxx>
Date:        Sun Nov 24 12:07:30 2019 UTC

Ticket:      https://dev.haiku-os.org/ticket/15391

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

8 files changed, 47 insertions(+), 20 deletions(-)
.../processcontroller/KernelMemoryBarMenuItem.cpp   |  7 ++++---
src/apps/processcontroller/MemoryBarMenuItem.cpp    |  7 ++++---
src/apps/processcontroller/NoiseBarMenuItem.cpp     | 10 ++++++----
src/apps/processcontroller/ProcessController.h      |  1 -
src/apps/processcontroller/TeamBarMenuItem.cpp      |  9 +++++----
src/apps/processcontroller/ThreadBarMenuItem.cpp    | 10 ++++++----
src/apps/processcontroller/Utilities.cpp            | 17 +++++++++++++++++
src/apps/processcontroller/Utilities.h              |  6 +++++-

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

diff --git a/src/apps/processcontroller/KernelMemoryBarMenuItem.cpp 
b/src/apps/processcontroller/KernelMemoryBarMenuItem.cpp
index a46f00a895..89cd505498 100644
--- a/src/apps/processcontroller/KernelMemoryBarMenuItem.cpp
+++ b/src/apps/processcontroller/KernelMemoryBarMenuItem.cpp
@@ -72,10 +72,11 @@ KernelMemoryBarMenuItem::DrawBar(bool force)
        BMenu* menu = Menu();
        rgb_color highColor = menu->HighColor();
 
-       // draw the bar itself
-       BRect cadre (frame.right - kMargin - kBarWidth, frame.top + kBarPadding,
-               frame.right - kMargin, frame.bottom  - kBarPadding);
+       BFont font;
+       menu->GetFont(&font);
+       BRect cadre = bar_rect(frame, &font);
 
+       // draw the bar itself
        if (fLastSum < 0)
                force = true;
        if (force) {
diff --git a/src/apps/processcontroller/MemoryBarMenuItem.cpp 
b/src/apps/processcontroller/MemoryBarMenuItem.cpp
index ea0ebd237c..8c8020e0d7 100644
--- a/src/apps/processcontroller/MemoryBarMenuItem.cpp
+++ b/src/apps/processcontroller/MemoryBarMenuItem.cpp
@@ -116,10 +116,11 @@ MemoryBarMenuItem::DrawBar(bool force)
        BMenu* menu = Menu();
        rgb_color highColor = menu->HighColor();
 
-       // draw the bar itself
+       BFont font;
+       menu->GetFont(&font);
+       BRect rect = bar_rect(frame, &font);
 
-       BRect rect(frame.right - kMargin - kBarWidth, frame.top + kBarPadding,
-               frame.right - kMargin, frame.bottom - kBarPadding);
+       // draw the bar itself
        if (fWriteMemory < 0)
                return;
 
diff --git a/src/apps/processcontroller/NoiseBarMenuItem.cpp 
b/src/apps/processcontroller/NoiseBarMenuItem.cpp
index d2070bec78..6bdda1082e 100644
--- a/src/apps/processcontroller/NoiseBarMenuItem.cpp
+++ b/src/apps/processcontroller/NoiseBarMenuItem.cpp
@@ -22,6 +22,7 @@
 #include "Catalog.h"
 #include "Colors.h"
 #include "ProcessController.h"
+#include "Utilities.h"
 
 #undef B_TRANSLATION_CONTEXT
 #define B_TRANSLATION_CONTEXT "ProcessController"
@@ -52,10 +53,11 @@ NoiseBarMenuItem::DrawBar(bool force)
        BRect frame = Frame();
        BMenu* menu = Menu();
        rgb_color highColor = menu->HighColor();
-       frame.right -= 24;
-       frame.left = frame.right - kBarWidth;
-       frame.top += kBarPadding;
-       frame.bottom -= kBarPadding;
+
+       BFont font;
+       menu->GetFont(&font);
+       frame = bar_rect(frame, &font);
+
        if (fBusyWaiting < 0)
                return;
 
diff --git a/src/apps/processcontroller/ProcessController.h 
b/src/apps/processcontroller/ProcessController.h
index b32faab79b..c45f7a5a90 100644
--- a/src/apps/processcontroller/ProcessController.h
+++ b/src/apps/processcontroller/ProcessController.h
@@ -92,6 +92,5 @@ extern        bool                            gInDeskbar;
 
 #define kBarWidth 100
 #define kMargin        12
-#define kBarPadding 7
 
 #endif // _PCVIEW_H_
diff --git a/src/apps/processcontroller/TeamBarMenuItem.cpp 
b/src/apps/processcontroller/TeamBarMenuItem.cpp
index 11ca63670c..8bc10efc4e 100644
--- a/src/apps/processcontroller/TeamBarMenuItem.cpp
+++ b/src/apps/processcontroller/TeamBarMenuItem.cpp
@@ -24,6 +24,7 @@
 #include "ProcessController.h"
 #include "ThreadBarMenu.h"
 #include "ThreadBarMenuItem.h"
+#include "Utilities.h"
 
 #include <Bitmap.h>
 
@@ -124,10 +125,10 @@ TeamBarMenuItem::DrawBar(bool force)
        BRect frame = Frame();
        BMenu* menu = Menu ();
        rgb_color highColor = menu->HighColor();
-       frame.right -=  24;
-       frame.left = frame.right-kBarWidth;
-       frame.top += kBarPadding;
-       frame.bottom -= kBarPadding;
+
+       BFont font;
+       menu->GetFont(&font);
+       frame = bar_rect(frame, &font);
 
        if (fKernel < 0)
                return;
diff --git a/src/apps/processcontroller/ThreadBarMenuItem.cpp 
b/src/apps/processcontroller/ThreadBarMenuItem.cpp
index cacd8af564..72f0367b53 100644
--- a/src/apps/processcontroller/ThreadBarMenuItem.cpp
+++ b/src/apps/processcontroller/ThreadBarMenuItem.cpp
@@ -22,6 +22,7 @@
 #include "Colors.h"
 #include "PriorityMenu.h"
 #include "ProcessController.h"
+#include "Utilities.h"
 
 #include <stdio.h>
 
@@ -57,10 +58,11 @@ ThreadBarMenuItem::DrawBar(bool force)
        BRect frame = Frame();
        BMenu* menu = Menu();
        rgb_color highColor = menu->HighColor();
-       frame.right -= 24;
-       frame.left = frame.right - kBarWidth;
-       frame.top += kBarPadding;
-       frame.bottom -= kBarPadding;
+
+       BFont font;
+       menu->GetFont(&font);
+       frame = bar_rect(frame, &font);
+
        if (fKernel < 0)
                return;
 
diff --git a/src/apps/processcontroller/Utilities.cpp 
b/src/apps/processcontroller/Utilities.cpp
index 144b30660c..b4156ddb46 100644
--- a/src/apps/processcontroller/Utilities.cpp
+++ b/src/apps/processcontroller/Utilities.cpp
@@ -176,3 +176,20 @@ make_window_visible(BWindow* window, bool mayResize)
                window->MoveBy(0, screen.top-frame.top);
 }
 
+
+BRect
+bar_rect(BRect& frame, BFont* font)
+{
+       BRect rect(frame);
+       font_height metrics;
+       font->GetHeight(&metrics);
+       float barHeight = metrics.ascent;
+       rect.top = frame.top + (frame.Height() - barHeight) / 2;
+       rect.bottom = frame.top + (frame.Height() + barHeight) / 2;
+
+       rect.left = frame.right - kMargin - kBarWidth;
+       rect.right = frame.right - kMargin;
+
+       return rect;
+}
+
diff --git a/src/apps/processcontroller/Utilities.h 
b/src/apps/processcontroller/Utilities.h
index 85e765cc45..d66139b59c 100644
--- a/src/apps/processcontroller/Utilities.h
+++ b/src/apps/processcontroller/Utilities.h
@@ -20,8 +20,10 @@
 #define UTILITIES_H
 
 
-#include <OS.h>
+#include <Font.h>
 #include <GraphicsDefs.h>
+#include <Rect.h>
+#include <OS.h>
 
 
 class BDeskbar;
@@ -43,6 +45,8 @@ void find_self(entry_ref& ref);
 void move_to_deskbar(BDeskbar& deskbar);
 void make_window_visible(BWindow* window, bool mayResize = false);
 
+BRect bar_rect(BRect& frame, BFont* font);
+
 extern const uchar k_cpu_mini[];
 
 #endif // UTILITIES_H


Other related posts:

  • » [haiku-commits] haiku: hrev53598 - src/apps/processcontroller - Adrien Destugues