summaryrefslogtreecommitdiff
path: root/Userland/Applications
diff options
context:
space:
mode:
authorMart G <martg_@hotmail.com>2021-10-06 14:27:25 +0200
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-10-07 08:46:15 +0330
commit5f53dc6a45c9b70d78981a2eb01e2026f03a1a03 (patch)
treeb62719b1acf00d784b055c175142e57f6d4dd079 /Userland/Applications
parentc569ed7e8bbe5277194a8cc7038be1b1e55e7455 (diff)
downloadserenity-5f53dc6a45c9b70d78981a2eb01e2026f03a1a03.zip
SpaceAnalyzer: Fix rendering bug when dealing with large file systems
Diffstat (limited to 'Userland/Applications')
-rw-r--r--Userland/Applications/SpaceAnalyzer/TreeMapWidget.cpp30
-rw-r--r--Userland/Applications/SpaceAnalyzer/TreeMapWidget.h2
-rw-r--r--Userland/Applications/SpaceAnalyzer/main.cpp4
3 files changed, 18 insertions, 18 deletions
diff --git a/Userland/Applications/SpaceAnalyzer/TreeMapWidget.cpp b/Userland/Applications/SpaceAnalyzer/TreeMapWidget.cpp
index 487c1b655c..d45c63008f 100644
--- a/Userland/Applications/SpaceAnalyzer/TreeMapWidget.cpp
+++ b/Userland/Applications/SpaceAnalyzer/TreeMapWidget.cpp
@@ -123,19 +123,19 @@ void TreeMapWidget::lay_out_children(const TreeMapNode& node, const Gfx::IntRect
}
}
- int total_area = node.area();
+ i64 total_area = node.area();
Gfx::IntRect canvas = rect;
bool remaining_nodes_are_too_small = false;
for (size_t i = 0; !remaining_nodes_are_too_small && i < node.num_children(); i++) {
- const int i_node_area = node.child_at(i).area();
+ const i64 i_node_area = node.child_at(i).area();
if (i_node_area == 0)
break;
- const int long_side_size = max(canvas.width(), canvas.height());
- const int short_side_size = min(canvas.width(), canvas.height());
+ const size_t long_side_size = max(canvas.width(), canvas.height());
+ const size_t short_side_size = min(canvas.width(), canvas.height());
- int row_or_column_size = (long long int)long_side_size * i_node_area / total_area;
- int node_area_sum = i_node_area;
+ size_t row_or_column_size = long_side_size * i_node_area / total_area;
+ i64 node_area_sum = i_node_area;
size_t k = i + 1;
// Try to add nodes to this row or column so long as the worst aspect ratio of
@@ -146,14 +146,14 @@ void TreeMapWidget::lay_out_children(const TreeMapNode& node, const Gfx::IntRect
// Do a preliminary calculation of the worst aspect ratio of the nodes at index i and k
// if that aspect ratio is better than the 'best_worst_aspect_ratio_so_far' we keep it,
// otherwise it is discarded.
- int k_node_area = node.child_at(k).area();
+ i64 k_node_area = node.child_at(k).area();
if (k_node_area == 0) {
break;
}
- int new_node_area_sum = node_area_sum + k_node_area;
- int new_row_or_column_size = (long long int)long_side_size * new_node_area_sum / total_area;
- int i_node_size = (long long int)short_side_size * i_node_area / new_node_area_sum;
- int k_node_size = (long long int)short_side_size * k_node_area / new_node_area_sum;
+ i64 new_node_area_sum = node_area_sum + k_node_area;
+ size_t new_row_or_column_size = long_side_size * new_node_area_sum / total_area;
+ size_t i_node_size = short_side_size * i_node_area / new_node_area_sum;
+ size_t k_node_size = short_side_size * k_node_area / new_node_area_sum;
float i_node_aspect_ratio = get_normalized_aspect_ratio(new_row_or_column_size, i_node_size);
float k_node_aspect_ratio = get_normalized_aspect_ratio(new_row_or_column_size, k_node_size);
float new_worst_aspect_ratio = min(i_node_aspect_ratio, k_node_aspect_ratio);
@@ -168,9 +168,9 @@ void TreeMapWidget::lay_out_children(const TreeMapNode& node, const Gfx::IntRect
// Paint the elements from 'i' up to and including 'k-1'.
{
- const int fixed_side_size = row_or_column_size;
- int placement_area = node_area_sum;
- int main_dim = short_side_size;
+ const size_t fixed_side_size = row_or_column_size;
+ i64 placement_area = node_area_sum;
+ size_t main_dim = short_side_size;
// Lay out nodes in a row or column.
Orientation orientation = canvas.width() > canvas.height() ? Orientation::Horizontal : Orientation::Vertical;
@@ -178,7 +178,7 @@ void TreeMapWidget::lay_out_children(const TreeMapNode& node, const Gfx::IntRect
layout_rect.set_primary_size_for_orientation(orientation, fixed_side_size);
for (size_t q = i; q < k; q++) {
auto& child = node.child_at(q);
- int node_size = (long long int)main_dim * child.area() / placement_area;
+ size_t node_size = main_dim * child.area() / placement_area;
Gfx::IntRect cell_rect = layout_rect;
cell_rect.set_secondary_size_for_orientation(orientation, node_size);
Gfx::IntRect inner_rect;
diff --git a/Userland/Applications/SpaceAnalyzer/TreeMapWidget.h b/Userland/Applications/SpaceAnalyzer/TreeMapWidget.h
index 3dec6f2ce8..0fb5dc2268 100644
--- a/Userland/Applications/SpaceAnalyzer/TreeMapWidget.h
+++ b/Userland/Applications/SpaceAnalyzer/TreeMapWidget.h
@@ -13,7 +13,7 @@ namespace SpaceAnalyzer {
struct TreeMapNode {
virtual String name() const = 0;
- virtual int64_t area() const = 0;
+ virtual i64 area() const = 0;
virtual size_t num_children() const = 0;
virtual const TreeMapNode& child_at(size_t i) const = 0;
virtual void sort_children_by_area() const = 0;
diff --git a/Userland/Applications/SpaceAnalyzer/main.cpp b/Userland/Applications/SpaceAnalyzer/main.cpp
index 687f1a2bbd..f1411614b9 100644
--- a/Userland/Applications/SpaceAnalyzer/main.cpp
+++ b/Userland/Applications/SpaceAnalyzer/main.cpp
@@ -33,7 +33,7 @@ struct TreeNode : public SpaceAnalyzer::TreeMapNode {
: m_name(move(name)) {};
virtual String name() const { return m_name; }
- virtual int64_t area() const { return m_area; }
+ virtual i64 area() const { return m_area; }
virtual size_t num_children() const
{
if (m_children) {
@@ -51,7 +51,7 @@ struct TreeNode : public SpaceAnalyzer::TreeMapNode {
}
String m_name;
- int64_t m_area { 0 };
+ i64 m_area { 0 };
OwnPtr<Vector<TreeNode>> m_children;
};