ProjectExplorer: Do not use QFlags

Using QFlags here increases the size of a Node by extending the
m_flags from 16bit to 32bit and adds needless padding.

Change-Id: I9169585a7f91da5b85433fcd6f4d1bb7d39e65c1
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2018-04-26 10:25:19 +02:00
parent c1bfc9d0a4
commit ad8a6cc0e6
2 changed files with 9 additions and 10 deletions

View File

@@ -131,17 +131,17 @@ void Node::setPriority(int p)
void Node::setListInProject(bool l)
{
if (l)
m_flags |= FlagListInProject;
m_flags = static_cast<NodeFlag>(m_flags | FlagListInProject);
else
m_flags &= ~FlagListInProject;
m_flags = static_cast<NodeFlag>(m_flags & ~FlagListInProject);
}
void Node::setIsGenerated(bool g)
{
if (g)
m_flags |= FlagIsGenerated;
m_flags = static_cast<NodeFlag>(m_flags | FlagIsGenerated);
else
m_flags &= ~FlagIsGenerated;
m_flags = static_cast<NodeFlag>(m_flags & ~FlagIsGenerated);
}
void Node::setAbsoluteFilePathAndLine(const Utils::FileName &path, int line)
@@ -170,7 +170,7 @@ int Node::priority() const
*/
bool Node::listInProject() const
{
return m_flags.testFlag(FlagListInProject);
return (m_flags & FlagListInProject) == FlagListInProject;
}
/*!
@@ -239,7 +239,7 @@ QString Node::tooltip() const
bool Node::isEnabled() const
{
if (!m_flags.testFlag(FlagIsEnabled))
if ((m_flags & FlagIsEnabled) == 0)
return false;
FolderNode *parent = parentFolderNode();
return parent ? parent->isEnabled() : true;
@@ -261,9 +261,9 @@ bool Node::supportsAction(ProjectAction, const Node *) const
void Node::setEnabled(bool enabled)
{
if (enabled)
m_flags |= FlagIsEnabled;
m_flags = static_cast<NodeFlag>(m_flags | FlagIsEnabled);
else
m_flags &= ~FlagIsEnabled;
m_flags = static_cast<NodeFlag>(m_flags & ~FlagIsEnabled);
}
bool Node::sortByPath(const Node *a, const Node *b)

View File

@@ -173,8 +173,7 @@ private:
FlagIsGenerated = 1 << 1,
FlagListInProject = 1 << 2,
};
using NodeFlags = QFlags<NodeFlag>;
NodeFlags m_flags = FlagIsEnabled;
NodeFlag m_flags = FlagIsEnabled;
};
class PROJECTEXPLORER_EXPORT FileNode : public Node