ae2409d037c7767d05fa96ffccaa005effa1bcde

Author
outfoxxed <outfoxxed@outfoxxed.me>
Committer
outfoxxed <outfoxxed@outfoxxed.me>
Date

Message

Give Hy3NodeType its own `enum class`

Was previously an anonymous enum

Diff

This diff is truncated to protect this page.

  1diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
  2index 3b60afdf861a475f1ab256e83b460795279650e6..a73796d897d6fd3021409b2a26f980573bc7036d 100644
  3--- a/src/Hy3Layout.cpp
  4+++ b/src/Hy3Layout.cpp
  5@@ -37,9 +37,9 @@ Hy3GroupData::~Hy3GroupData() {
  6 
  7 Hy3NodeData::Hy3NodeData(): Hy3NodeData((CWindow*) nullptr) {}
  8 
  9-Hy3NodeData::Hy3NodeData(CWindow* window): type(Hy3NodeData::Window) { this->as_window = window; }
 10+Hy3NodeData::Hy3NodeData(CWindow* window): type(Hy3NodeType::Window) { this->as_window = window; }
 11 
 12-Hy3NodeData::Hy3NodeData(Hy3GroupData group): type(Hy3NodeData::Group) {
 13+Hy3NodeData::Hy3NodeData(Hy3GroupData group): type(Hy3NodeType::Group) {
 14 	new (&this->as_group) Hy3GroupData(std::move(group));
 15 }
 16 
 17@@ -47,12 +47,12 @@ Hy3NodeData::Hy3NodeData(Hy3GroupLayout layout): Hy3NodeData(Hy3GroupData(layout
 18 
 19 Hy3NodeData::~Hy3NodeData() {
 20 	switch (this->type) {
 21-	case Hy3NodeData::Window: break;
 22-	case Hy3NodeData::Group:
 23+	case Hy3NodeType::Window: break;
 24+	case Hy3NodeType::Group:
 25 		this->as_group.~Hy3GroupData();
 26 
 27 		// who ever thought calling the dtor after a move was a good idea?
 28-		this->type = Hy3NodeData::Window;
 29+		this->type = Hy3NodeType::Window;
 30 		break;
 31 	}
 32 }
 33@@ -62,12 +62,12 @@ Hy3NodeData::Hy3NodeData(Hy3NodeData&& from): type(from.type) {
 34 	    LOG,
 35 	    "Move CTor type matches? %d is group? %d",
 36 	    this->type == from.type,
 37-	    this->type == Hy3NodeData::Group
 38+	    this->type == Hy3NodeType::Group
 39 	);
 40 
 41 	switch (from.type) {
 42-	case Hy3NodeData::Window: this->as_window = from.as_window; break;
 43-	case Hy3NodeData::Group: new (&this->as_group) Hy3GroupData(std::move(from.as_group)); break;
 44+	case Hy3NodeType::Window: this->as_window = from.as_window; break;
 45+	case Hy3NodeType::Group: new (&this->as_group) Hy3GroupData(std::move(from.as_group)); break;
 46 	}
 47 }
 48 
 49@@ -76,18 +76,18 @@ Hy3NodeData& Hy3NodeData::operator=(Hy3NodeData&& from) {
 50 	    LOG,
 51 	    "operator= type matches? %d is group? %d",
 52 	    this->type == from.type,
 53-	    this->type == Hy3NodeData::Group
 54+	    this->type == Hy3NodeType::Group
 55 	);
 56 
 57-	if (this->type == Hy3NodeData::Group) {
 58+	if (this->type == Hy3NodeType::Group) {
 59 		this->as_group.~Hy3GroupData();
 60 	}
 61 
 62 	this->type = from.type;
 63 
 64 	switch (this->type) {
 65-	case Hy3NodeData::Window: this->as_window = from.as_window; break;
 66-	case Hy3NodeData::Group: new (&this->as_group) Hy3GroupData(std::move(from.as_group)); break;
 67+	case Hy3NodeType::Window: this->as_window = from.as_window; break;
 68+	case Hy3NodeType::Group: new (&this->as_group) Hy3GroupData(std::move(from.as_group)); break;
 69 	}
 70 
 71 	return *this;
 72@@ -136,7 +136,7 @@ void Hy3Node::recalcSizePosRecursive(bool no_animation) {
 73 
 74 	double tab_height_offset = *tab_bar_height + *tab_bar_padding;
 75 
 76-	if (this->data.type != Hy3NodeData::Group) {
 77+	if (this->data.type != Hy3NodeType::Group) {
 78 		this->data.as_window->setHidden(this->hidden);
 79 		this->layout->applyNodeDataToWindow(this, no_animation);
 80 		return;
 81@@ -246,7 +246,7 @@ void Hy3Node::recalcSizePosRecursive(bool no_animation) {
 82 void Hy3Node::setHidden(bool hidden) {
 83 	this->hidden = hidden;
 84 
 85-	if (this->data.type == Hy3NodeData::Group) {
 86+	if (this->data.type == Hy3NodeType::Group) {
 87 		for (auto* child: this->data.as_group.children) {
 88 			child->setHidden(hidden);
 89 		}
 90@@ -255,8 +255,8 @@ void Hy3Node::setHidden(bool hidden) {
 91 
 92 bool Hy3Node::isUrgent() {
 93 	switch (this->data.type) {
 94-	case Hy3NodeData::Window: return this->data.as_window->m_bIsUrgent;
 95-	case Hy3NodeData::Group:
 96+	case Hy3NodeType::Window: return this->data.as_window->m_bIsUrgent;
 97+	case Hy3NodeType::Group:
 98 		for (auto* child: this->data.as_group.children) {
 99 			if (child->isUrgent()) return true;
100 		}
101@@ -280,8 +280,8 @@ bool Hy3Node::isIndirectlyFocused() {
102 
103 std::string Hy3Node::getTitle() {
104 	switch (this->data.type) {
105diff --git a/src/Hy3Layout.hpp b/src/Hy3Layout.hpp
106index 1b466d85d3d9b9b2c22a05ea6d576174019978a3..bc4e6c6e4941d96dc9be5051f089b956f24bb3d4 100644
107--- a/src/Hy3Layout.hpp
108+++ b/src/Hy3Layout.hpp
109@@ -15,6 +15,11 @@ enum class Hy3GroupLayout {
110 	Tabbed,
111 };
112 
113+enum class Hy3NodeType {
114+  Window,
115+	Group,
116+};
117+
118 enum class ShiftDirection {
119 	Left,
120 	Up,
121@@ -65,7 +70,7 @@ private:
122 
123 class Hy3NodeData {
124 public:
125-	enum { Group, Window } type;
126+	Hy3NodeType type;
127 	union {
128 		Hy3GroupData as_group;
129 		CWindow* as_window;
130diff --git a/src/TabGroup.cpp b/src/TabGroup.cpp
131index 523a39aa8b6dc7527d193edbbe74bf93ecd82438..e0942eb013a32086c90c3e4ee6e530feb135e281 100644
132--- a/src/TabGroup.cpp
133+++ b/src/TabGroup.cpp
134@@ -647,8 +647,8 @@ void Hy3TabGroup::renderTabBar() {
135 
136 void findOverlappingWindows(Hy3Node& node, float height, std::vector<CWindow*>& windows) {
137 	switch (node.data.type) {
138-	case Hy3NodeData::Window: windows.push_back(node.data.as_window); break;
139-	case Hy3NodeData::Group:
140+	case Hy3NodeType::Window: windows.push_back(node.data.as_window); break;
141+	case Hy3NodeType::Group:
142 		auto& group = node.data.as_group;
143 
144 		switch (group.layout) {