diff --git a/PanoPainter.vcxproj b/PanoPainter.vcxproj
index 0ccba43..8337d6d 100644
--- a/PanoPainter.vcxproj
+++ b/PanoPainter.vcxproj
@@ -571,6 +571,7 @@
+
diff --git a/PanoPainter.vcxproj.filters b/PanoPainter.vcxproj.filters
index 53b13d0..f3e34d8 100644
--- a/PanoPainter.vcxproj.filters
+++ b/PanoPainter.vcxproj.filters
@@ -737,6 +737,9 @@
extras\dialogs
+
+ extras\dialogs
+
diff --git a/src/font.cpp b/src/font.cpp
index ec8f36c..46c2a38 100644
--- a/src/font.cpp
+++ b/src/font.cpp
@@ -140,7 +140,7 @@ void TextMesh::update(kFont id, const std::string& text)
{
font_id = id;
auto& f = FontManager::get(id);
- float spacing = f.bounds.w - f.bounds.y;
+ float spacing = (f.bounds.w - f.bounds.y);
float avg_width = f.bounds.z - f.bounds.x;
cur_box = glm::vec4(0, f.bounds.y, 5, spacing);
@@ -200,8 +200,8 @@ void TextMesh::update(kFont id, const std::string& text)
idx.push_back(n + 0);
idx.push_back(n + 2);
idx.push_back(n + 3);
- bbmin = glm::min(bbmin, xy(f.bounds));
- bbmax = glm::max(bbmax, { q.x1 / f.scale, y + f.bounds.w });
+ bbmin = glm::min(bbmin, glm::floor(xy(f.bounds)));
+ bbmax = glm::max(bbmax, glm::ceil(glm::vec2(q.x1 / f.scale, y / f.scale + f.bounds.w)));
if (max_width > 0 && q.x1 / f.scale + 5 > max_width * f.scale)
cur_box = glm::vec4(0, (y + spacing * f.scale) / f.scale + f.bounds.y, 5, spacing);
else
diff --git a/src/node_text.cpp b/src/node_text.cpp
index 4b11ec3..eca02e2 100644
--- a/src/node_text.cpp
+++ b/src/node_text.cpp
@@ -123,17 +123,17 @@ void NodeText::update_layout()
auto pad = GetPadding();
if (auto_width)
{
- YGNodeStyleSetWidth(y_node, m_text_mesh.bb.x);
- m_size.x = m_text_mesh.bb.x;
+ YGNodeStyleSetWidth(y_node, m_text_mesh.bb.x + (pad[1] + pad[3]));
+ m_size.x = m_text_mesh.bb.x + (pad[1] + pad[3]);
}
if (auto_height)
{
- YGNodeStyleSetHeight(y_node, m_text_mesh.bb.y);
- m_size.y = m_text_mesh.bb.y;
+ YGNodeStyleSetHeight(y_node, m_text_mesh.bb.y + (pad[0] + pad[2]));
+ m_size.y = m_text_mesh.bb.y + (pad[0] + pad[2]);
}
- float h = m_size.y - (pad[1] + pad[3]);
- float w = m_size.x - (pad[0] + pad[2]);
+ float w = m_size.x - (pad[1] + pad[3]);
+ float h = m_size.y - (pad[0] + pad[2]);
if (m_text_align_v == TextAlign::Begin)
m_off.y = pad[0];