mirror of
https://github.com/Trensa-Organization/hy3.git
synced 2025-03-15 18:53:40 +01:00
fix: moveNodeToWorkspace breakage across monitors (hy3 dispatchers)
This commit is contained in:
parent
2728dbed6a
commit
cf919397d4
2 changed files with 7 additions and 0 deletions
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
# Upcoming
|
# Upcoming
|
||||||
- Fixed IPC and wlr-foreign-toplevel not getting fullscreen and maximize events.
|
- Fixed IPC and wlr-foreign-toplevel not getting fullscreen and maximize events.
|
||||||
|
- Fixed glitches when moving nodes between monitors with hy3 dispatchers.
|
||||||
|
|
||||||
## hl0.40.0 and before
|
## hl0.40.0 and before
|
||||||
|
|
||||||
|
|
|
@ -953,9 +953,12 @@ void changeNodeWorkspaceRecursive(Hy3Node& node, const PHLWORKSPACE& workspace)
|
||||||
|
|
||||||
if (node.data.is_window()) {
|
if (node.data.is_window()) {
|
||||||
auto window = node.data.as_window();
|
auto window = node.data.as_window();
|
||||||
|
g_pHyprRenderer->damageWindow(window);
|
||||||
window->moveToWorkspace(workspace);
|
window->moveToWorkspace(workspace);
|
||||||
|
window->m_iMonitorID = workspace->m_iMonitorID;
|
||||||
window->updateToplevel();
|
window->updateToplevel();
|
||||||
window->updateDynamicRules();
|
window->updateDynamicRules();
|
||||||
|
window->uncacheWindowDecos();
|
||||||
} else {
|
} else {
|
||||||
for (auto* child: node.data.as_group().children) {
|
for (auto* child: node.data.as_group().children) {
|
||||||
changeNodeWorkspaceRecursive(*child, workspace);
|
changeNodeWorkspaceRecursive(*child, workspace);
|
||||||
|
@ -996,6 +999,7 @@ void Hy3Layout::moveNodeToWorkspace(const PHLWORKSPACE& origin, std::string wsna
|
||||||
if (focused_window != nullptr
|
if (focused_window != nullptr
|
||||||
&& (focused_window_node == nullptr || focused_window->m_bIsFullscreen))
|
&& (focused_window_node == nullptr || focused_window->m_bIsFullscreen))
|
||||||
{
|
{
|
||||||
|
g_pHyprRenderer->damageWindow(focused_window);
|
||||||
g_pCompositor->moveWindowToWorkspaceSafe(focused_window, workspace);
|
g_pCompositor->moveWindowToWorkspaceSafe(focused_window, workspace);
|
||||||
} else {
|
} else {
|
||||||
if (node == nullptr) return;
|
if (node == nullptr) return;
|
||||||
|
@ -1015,6 +1019,8 @@ void Hy3Layout::moveNodeToWorkspace(const PHLWORKSPACE& origin, std::string wsna
|
||||||
|
|
||||||
changeNodeWorkspaceRecursive(*node, workspace);
|
changeNodeWorkspaceRecursive(*node, workspace);
|
||||||
this->insertNode(*node);
|
this->insertNode(*node);
|
||||||
|
g_pCompositor->updateWorkspaceWindows(origin->m_iID);
|
||||||
|
g_pCompositor->updateWorkspaceWindows(workspace->m_iID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (follow) {
|
if (follow) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue