summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Dick <felix.dick@web.de>2022-09-28 18:45:30 +0200
committerFelix Dick <felix.dick@web.de>2022-09-28 23:11:11 +0200
commit168a3266095ab014eee1363d8c943f91d461aa40 (patch)
treeda0b87288da824a651df7325ab22c07ef2b3bdae /src
parent7edbaea23de36182fb57a634b95f671c353f8aa7 (diff)
parentec5ffe8839c9c993fed4c23d72077969615dd298 (diff)
Merge branch 'main' into rework_rounding_shader
Diffstat (limited to 'src')
-rw-r--r--src/helpers/MiscFunctions.cpp40
-rw-r--r--src/managers/KeybindManager.cpp4
-rw-r--r--src/render/shaders/Textures.hpp10
3 files changed, 40 insertions, 14 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index d7df7bd7..b2f3a086 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -170,7 +170,25 @@ float getPlusMinusKeywordResult(std::string source, float relative) {
}
bool isNumber(const std::string& str, bool allowfloat) {
- return std::ranges::all_of(str.begin(), str.end(), [&](char c) { return isdigit(c) != 0 || c == '-' || (allowfloat && c == '.'); });
+
+ std::string copy = str;
+ if (*copy.begin() == '-')
+ copy = copy.substr(1);
+
+ bool point = !allowfloat;
+ for (auto& c : copy) {
+ if (c == '.') {
+ if (point)
+ return false;
+ point = true;
+ break;
+ }
+
+ if (!std::isdigit(c))
+ return false;
+ }
+
+ return true;
}
bool isDirection(const std::string& arg) {
@@ -192,7 +210,7 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
}
outName = WORKSPACENAME;
} else {
- if (in[0] == 'm' || in[0] == 'e') {
+ if ((in[0] == 'm' || in[0] == 'e') && (in[1] == '-' || in[1] == '+') && isNumber(in.substr(2))) {
bool onAllMonitors = in[0] == 'e';
if (!g_pCompositor->m_pLastMonitor) {
@@ -253,14 +271,22 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
outName = g_pCompositor->getWorkspaceByID(currentID)->m_szName;
} else {
- if (g_pCompositor->m_pLastMonitor)
- result = std::max((int)getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace), 1);
- else if (isNumber(in))
+ if (in[0] == '+' || in[0] == '-') {
+ if (g_pCompositor->m_pLastMonitor)
+ result = std::max((int)getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace), 1);
+ else {
+ Debug::log(ERR, "Relative workspace on no mon!");
+ result = INT_MAX;
+ }
+ } else if (isNumber(in))
result = std::max(std::stoi(in), 1);
else {
- Debug::log(ERR, "Relative workspace on no mon!");
- result = INT_MAX;
+ // maybe name
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByName(in);
+ if (PWORKSPACE)
+ result = PWORKSPACE->m_iID;
}
+
outName = std::to_string(result);
}
}
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 99f6bab5..9aebe7c4 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -819,8 +819,8 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
return;
}
- auto PSAVEDSIZE = PWINDOW->m_vRealSize.vec();
- auto PSAVEDPOS = PWINDOW->m_vRealPosition.vec();
+ auto PSAVEDSIZE = PWINDOW->m_vRealSize.goalv();
+ auto PSAVEDPOS = PWINDOW->m_vRealPosition.goalv();
g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW);
diff --git a/src/render/shaders/Textures.hpp b/src/render/shaders/Textures.hpp
index b7d672d9..16905e3b 100644
--- a/src/render/shaders/Textures.hpp
+++ b/src/render/shaders/Textures.hpp
@@ -22,17 +22,17 @@ inline static constexpr auto ROUNDED_SHADER_FUNC = [](const std::string colorVar
if (primitiveMultisample == 1 && dist > radius - 1.0) {
float distances = 0.0;
- if (length(pixCoord - vec2(0.25, 0.25)) < radius) { distances = distances + 1.0; }
- if (length(pixCoord - vec2(0.75, 0.25)) < radius) { distances = distances + 1.0; }
- if (length(pixCoord - vec2(0.25, 0.75)) < radius) { distances = distances + 1.0; }
- if (length(pixCoord - vec2(0.75, 0.75)) < radius) { distances = distances + 1.0; }
+ if (length(pixCoord + vec2(0.25, 0.25)) < radius) { distances = distances + 1.0; }
+ if (length(pixCoord + vec2(0.75, 0.25)) < radius) { distances = distances + 1.0; }
+ if (length(pixCoord + vec2(0.25, 0.75)) < radius) { distances = distances + 1.0; }
+ if (length(pixCoord + vec2(0.75, 0.75)) < radius) { distances = distances + 1.0; }
if (distances == 0.0)
discard;
distances = distances / 4.0;
- /* )#" + colorVarName + R"#( = )#" + colorVarName + R"#( * distances; */
+ )#" + colorVarName + R"#( = )#" + colorVarName + R"#( * distances;
}
}