ui: Fixed different font faces cause graph nodes to expand to more grid cells

This commit is contained in:
Eberhard Graether
2017-02-09 15:26:14 +01:00
parent 06676eda66
commit e08f7ce2c0
3 changed files with 17 additions and 13 deletions
@@ -1308,26 +1308,22 @@ void GraphController::addExpandToggleNode(DummyNode* node) const
void GraphController::layoutToGrid(DummyNode* node) const
{
if (!node->visible)
if (!node->visible || !node->isGraphNode() || !node->hasVisibleSubNode())
{
return;
}
// Increase size of nodes with visible chilren to cover full grid cells
size_t width = GraphViewStyle::toGridSize(node->size.x);
size_t height = GraphViewStyle::toGridSize(node->size.y);
size_t incX = width - node->size.x;
size_t incY = height - node->size.y;
node->size.x = width;
node->size.y = height;
if (!node->isGraphNode())
{
return;
}
DummyNode* lastAccessNode = nullptr;
DummyNode* expandToggleNode = nullptr;
for (std::shared_ptr<DummyNode> subNode : node->subNodes)
{
if (!subNode->visible)
@@ -1342,13 +1338,18 @@ void GraphController::layoutToGrid(DummyNode* node) const
}
else if (subNode->isExpandToggleNode())
{
subNode->position.x = subNode->position.x + incX;
expandToggleNode = subNode.get();
}
}
if (lastAccessNode)
{
lastAccessNode->size.y = lastAccessNode->size.y + incY;
expandToggleNode->position.x = expandToggleNode->position.x + incX;
node->size.x = width;
node->size.y = height;
}
}
@@ -47,7 +47,7 @@ void Bucket::addNode(std::shared_ptr<DummyNode> node)
m_nodes.insert(node);
m_width = (node->size.x > m_width ? node->size.x : m_width);
m_height += node->size.y + GraphViewStyle::toGridGap(10);
m_height += GraphViewStyle::toGridSize(node->size.y) + GraphViewStyle::s_gridCellPadding;
}
const DummyNode::BundledNodesSet& Bucket::getNodes() const
@@ -71,7 +71,7 @@ void Bucket::preLayout(Vec2i viewSize)
node->position.x = x;
node->position.y = y;
y += node->size.y + GraphViewStyle::toGridGap(10);
y += GraphViewStyle::toGridSize(node->size.y) + GraphViewStyle::s_gridCellPadding;
width = (node->size.x > width ? node->size.x : width);
m_height = (y > m_height ? y : m_height);
@@ -80,7 +80,7 @@ void Bucket::preLayout(Vec2i viewSize)
{
y = 0;
x += width + GraphViewStyle::toGridGap(30);
x += GraphViewStyle::toGridOffset(width + 30);
width = 0;
}
}
@@ -142,6 +142,9 @@ void GraphViewStyle::loadStyleSettings()
s_nodeColors.clear();
s_edgeColors.clear();
s_gridCellPadding = getImpl()->getCharHeightForNodeType(Node::NODE_TYPE) - 8;
s_gridCellSize = s_gridCellPadding / 2;
}
float GraphViewStyle::getCharWidthForNodeType(Node::NodeType type)