mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-29 14:45:58 +01:00
internal: make getPlusMinusKeywordResult return optional
This commit is contained in:
parent
69e314207d
commit
65efde32c9
3 changed files with 32 additions and 25 deletions
|
@ -204,12 +204,12 @@ std::string removeBeginEndSpacesTabs(std::string str) {
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
float getPlusMinusKeywordResult(std::string source, float relative) {
|
std::optional<float> getPlusMinusKeywordResult(std::string source, float relative) {
|
||||||
try {
|
try {
|
||||||
return relative + stof(source);
|
return relative + stof(source);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
Debug::log(ERR, "Invalid arg \"{}\" in getPlusMinusKeywordResult!", source);
|
Debug::log(ERR, "Invalid arg \"{}\" in getPlusMinusKeywordResult!", source);
|
||||||
return INT_MAX;
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +300,13 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
|
||||||
Debug::log(ERR, "Relative monitor workspace on monitor null!");
|
Debug::log(ERR, "Relative monitor workspace on monitor null!");
|
||||||
return WORKSPACE_INVALID;
|
return WORKSPACE_INVALID;
|
||||||
}
|
}
|
||||||
result = (int)getPlusMinusKeywordResult(in.substr(1), 0);
|
|
||||||
|
const auto PLUSMINUSRESULT = getPlusMinusKeywordResult(in.substr(1), 0);
|
||||||
|
|
||||||
|
if (!PLUSMINUSRESULT.has_value())
|
||||||
|
return WORKSPACE_INVALID;
|
||||||
|
|
||||||
|
result = (int)PLUSMINUSRESULT.value();
|
||||||
|
|
||||||
int remains = (int)result;
|
int remains = (int)result;
|
||||||
|
|
||||||
|
@ -436,7 +442,12 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// monitor relative
|
// monitor relative
|
||||||
result = (int)getPlusMinusKeywordResult(in.substr(1), 0);
|
const auto PLUSMINUSRESULT = getPlusMinusKeywordResult(in.substr(1), 0);
|
||||||
|
|
||||||
|
if (!PLUSMINUSRESULT.has_value())
|
||||||
|
return WORKSPACE_INVALID;
|
||||||
|
|
||||||
|
result = (int)PLUSMINUSRESULT.value();
|
||||||
|
|
||||||
// result now has +/- what we should move on mon
|
// result now has +/- what we should move on mon
|
||||||
int remains = (int)result;
|
int remains = (int)result;
|
||||||
|
@ -477,9 +488,13 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
|
||||||
outName = g_pCompositor->getWorkspaceByID(validWSes[currentItem])->m_szName;
|
outName = g_pCompositor->getWorkspaceByID(validWSes[currentItem])->m_szName;
|
||||||
} else {
|
} else {
|
||||||
if (in[0] == '+' || in[0] == '-') {
|
if (in[0] == '+' || in[0] == '-') {
|
||||||
if (g_pCompositor->m_pLastMonitor)
|
if (g_pCompositor->m_pLastMonitor) {
|
||||||
result = std::max((int)getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace), 1);
|
const auto PLUSMINUSRESULT = getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace);
|
||||||
else {
|
if (!PLUSMINUSRESULT.has_value())
|
||||||
|
return WORKSPACE_INVALID;
|
||||||
|
|
||||||
|
result = std::max((int)PLUSMINUSRESULT.value(), 1);
|
||||||
|
} else {
|
||||||
Debug::log(ERR, "Relative workspace on no mon!");
|
Debug::log(ERR, "Relative workspace on no mon!");
|
||||||
return WORKSPACE_INVALID;
|
return WORKSPACE_INVALID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ void logSystemInfo();
|
||||||
std::string execAndGet(const char*);
|
std::string execAndGet(const char*);
|
||||||
int64_t getPPIDof(int64_t pid);
|
int64_t getPPIDof(int64_t pid);
|
||||||
int64_t configStringToInt(const std::string&);
|
int64_t configStringToInt(const std::string&);
|
||||||
float getPlusMinusKeywordResult(std::string in, float relative);
|
std::optional<float> getPlusMinusKeywordResult(std::string in, float relative);
|
||||||
void matrixProjection(float mat[9], int w, int h, wl_output_transform tr);
|
void matrixProjection(float mat[9], int w, int h, wl_output_transform tr);
|
||||||
double normalizeAngleRad(double ang);
|
double normalizeAngleRad(double ang);
|
||||||
std::string replaceInString(std::string subject, const std::string& search, const std::string& replace);
|
std::string replaceInString(std::string subject, const std::string& search, const std::string& replace);
|
||||||
|
|
|
@ -1216,24 +1216,16 @@ void CKeybindManager::toggleSplit(std::string args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CKeybindManager::alterSplitRatio(std::string args) {
|
void CKeybindManager::alterSplitRatio(std::string args) {
|
||||||
float splitratio = 0;
|
std::optional<float> splitResult;
|
||||||
bool exact = false;
|
bool exact = false;
|
||||||
|
|
||||||
if (args == "+" || args == "-") {
|
if (args.starts_with("exact")) {
|
||||||
Debug::log(LOG, "alterSplitRatio: using LEGACY +/-, consider switching to the Hyprland syntax.");
|
exact = true;
|
||||||
splitratio = (args == "+" ? 0.05f : -0.05f);
|
splitResult = getPlusMinusKeywordResult(args.substr(5), 0);
|
||||||
}
|
} else
|
||||||
|
splitResult = getPlusMinusKeywordResult(args, 0);
|
||||||
|
|
||||||
if (splitratio == 0) {
|
if (!splitResult.has_value()) {
|
||||||
if (args.starts_with("exact")) {
|
|
||||||
exact = true;
|
|
||||||
splitratio = getPlusMinusKeywordResult(args.substr(5), 0);
|
|
||||||
} else {
|
|
||||||
splitratio = getPlusMinusKeywordResult(args, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (splitratio == WORKSPACE_INVALID) {
|
|
||||||
Debug::log(ERR, "Splitratio invalid in alterSplitRatio!");
|
Debug::log(ERR, "Splitratio invalid in alterSplitRatio!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1243,7 +1235,7 @@ void CKeybindManager::alterSplitRatio(std::string args) {
|
||||||
if (!PLASTWINDOW)
|
if (!PLASTWINDOW)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_pLayoutManager->getCurrentLayout()->alterSplitRatio(PLASTWINDOW, splitratio, exact);
|
g_pLayoutManager->getCurrentLayout()->alterSplitRatio(PLASTWINDOW, splitResult.value(), exact);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CKeybindManager::focusMonitor(std::string arg) {
|
void CKeybindManager::focusMonitor(std::string arg) {
|
||||||
|
|
Loading…
Reference in a new issue