summaryrefslogtreecommitdiff
path: root/src/layout/algorithm
diff options
context:
space:
mode:
authorVisal Vijay <150381094+B2krobbery@users.noreply.github.com>2026-05-01 03:18:14 +0530
committerGitHub <noreply@github.com>2026-04-30 22:48:14 +0100
commita45de66d22d696cd4e60444176641d59bc65db6c (patch)
tree9270d376542c141bed355c644ae51c81739075fd /src/layout/algorithm
parentc6fc1cab99ff8a3d721ae0e5937512e8d6f58a71 (diff)
cleanup: avoid repeated weak_ptr::lock() usage in MasterAlgorithm (#14226)
Diffstat (limited to 'src/layout/algorithm')
-rw-r--r--src/layout/algorithm/tiled/master/MasterAlgorithm.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/layout/algorithm/tiled/master/MasterAlgorithm.cpp b/src/layout/algorithm/tiled/master/MasterAlgorithm.cpp
index 46506391..a6849d2a 100644
--- a/src/layout/algorithm/tiled/master/MasterAlgorithm.cpp
+++ b/src/layout/algorithm/tiled/master/MasterAlgorithm.cpp
@@ -476,10 +476,12 @@ Config::ErrorResult CMasterAlgorithm::layoutMsg(const std::string_view& sv) {
return stateErr("no master node");
const auto NEWCHILD = PMASTER->pTarget.lock();
+ if (!NEWCHILD)
+ return stateErr("master target expired");
const bool IGNORE_IF_MASTER = vars.size() >= 2 && std::ranges::any_of(vars, [](const auto& e) { return e == "ignoremaster"; });
- if (PMASTER->pTarget.lock() != PWINDOW->layoutTarget()) {
+ if (NEWCHILD != PWINDOW->layoutTarget()) {
const auto& NEWMASTER = PWINDOW->layoutTarget();
const bool newFocusToChild = vars.size() >= 2 && vars[1] == "child";
g_layoutManager->switchTargets(NEWMASTER, NEWCHILD);
@@ -516,8 +518,12 @@ Config::ErrorResult CMasterAlgorithm::layoutMsg(const std::string_view& sv) {
const auto& ARG = vars[1]; // returns empty string if out of bounds
- if (PMASTER->pTarget.lock() != PWINDOW->layoutTarget()) {
- switchToWindow(PMASTER->pTarget.lock());
+ const auto TARGET = PMASTER->pTarget.lock();
+ if (!TARGET)
+ return stateErr("master target expired");
+
+ if (TARGET != PWINDOW->layoutTarget()) {
+ switchToWindow(TARGET);
// save previously focused window (only for `previous` mode)
if (ARG == "previous")
m_workspaceData.focusMasterPrev = PWINDOW->layoutTarget();