sway/workspaces: make clicking on workspaces idempotent
Previously, clicking on the same workspace you were on would throw you to another workspace if `workspace_auto_back_and_forth yes` was specified in your sway config. This also fixes workspace output moving misbehaving and doing the same.pull/736/head
parent
4b2e6b54a7
commit
0080feb9af
|
@ -20,6 +20,8 @@ class Workspaces : public AModule, public sigc::trackable {
|
||||||
auto update() -> void;
|
auto update() -> void;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static inline const std::string workspace_switch_cmd_ = "workspace --no-auto-back-and-forth \"{}\"";
|
||||||
|
|
||||||
void onCmd(const struct Ipc::ipc_response&);
|
void onCmd(const struct Ipc::ipc_response&);
|
||||||
void onEvent(const struct Ipc::ipc_response&);
|
void onEvent(const struct Ipc::ipc_response&);
|
||||||
bool filterButtons();
|
bool filterButtons();
|
||||||
|
|
|
@ -219,12 +219,12 @@ Gtk::Button &Workspaces::addButton(const Json::Value &node) {
|
||||||
if (node["target_output"].isString()) {
|
if (node["target_output"].isString()) {
|
||||||
ipc_.sendCmd(
|
ipc_.sendCmd(
|
||||||
IPC_COMMAND,
|
IPC_COMMAND,
|
||||||
fmt::format("workspace \"{}\"; move workspace to output \"{}\"; workspace \"{}\"",
|
fmt::format(workspace_switch_cmd_ + "; move workspace to output \"{}\"; " + workspace_switch_cmd_,
|
||||||
node["name"].asString(),
|
node["name"].asString(),
|
||||||
node["target_output"].asString(),
|
node["target_output"].asString(),
|
||||||
node["name"].asString()));
|
node["name"].asString()));
|
||||||
} else {
|
} else {
|
||||||
ipc_.sendCmd(IPC_COMMAND, fmt::format("workspace \"{}\"", node["name"].asString()));
|
ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_cmd_, node["name"].asString()));
|
||||||
}
|
}
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
spdlog::error("Workspaces: {}", e.what());
|
spdlog::error("Workspaces: {}", e.what());
|
||||||
|
@ -276,7 +276,7 @@ bool Workspaces::handleScroll(GdkEventScroll *e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
ipc_.sendCmd(IPC_COMMAND, fmt::format("workspace \"{}\"", name));
|
ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_cmd_, name));
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
spdlog::error("Workspaces: {}", e.what());
|
spdlog::error("Workspaces: {}", e.what());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue