summaryrefslogtreecommitdiffstats
path: root/twin/useractions.cpp
diff options
context:
space:
mode:
authorMavridis Philippe <[email protected]>2023-12-05 15:53:55 +0200
committerMichele Calgaro <[email protected]>2024-03-29 11:25:12 +0900
commit62ce84146e5a9505e59121b9ab65f9e32704f16f (patch)
treed1ce0fb0d901a85c70bd36e703c0ed9c5b40b842 /twin/useractions.cpp
parent8d168e4985f1e1276ba554bc0e046153ead1219e (diff)
downloadtdebase-62ce84146e5a9505e59121b9ab65f9e32704f16f.tar.gz
tdebase-62ce84146e5a9505e59121b9ab65f9e32704f16f.zip
TWin: add tileHorizontally(), tileVertically(), tileGrid() DCOP calls
Signed-off-by: Mavridis Philippe <[email protected]> (cherry picked from commit 7482fe22830ce974a15e3a132dcc3ac6cee1a65f)
Diffstat (limited to 'twin/useractions.cpp')
-rw-r--r--twin/useractions.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/twin/useractions.cpp b/twin/useractions.cpp
index ac017aacf..e22b63af0 100644
--- a/twin/useractions.cpp
+++ b/twin/useractions.cpp
@@ -664,6 +664,44 @@ void Workspace::showWindowMenu( unsigned long window )
}
}
+void Workspace::tileHorizontally(unsigned long w1, unsigned long w2) {
+ if (w1 == w2) return;
+
+ Client *c1 = findClient(WindowMatchPredicate((WId)w1));
+ Client *c2 = findClient(WindowMatchPredicate((WId)w2));
+ if (!c1 || !c2) return;
+
+ c1->tile(ActiveTop);
+ c2->tile(ActiveBottom);
+}
+
+void Workspace::tileVertically(unsigned long w1, unsigned long w2) {
+ if (w1 == w2) return;
+
+ Client *c1 = findClient(WindowMatchPredicate((WId)w1));
+ Client *c2 = findClient(WindowMatchPredicate((WId)w2));
+ if (!c1 || !c2) return;
+
+ c1->tile(ActiveLeft);
+ c2->tile(ActiveRight);
+}
+
+void Workspace::tileGrid(unsigned long w1, unsigned long w2, unsigned long w3, unsigned long w4) {
+ if (w1 == w2 || w1 == w3 || w1 == w4 || w2 == w3 || w2 == w4 || w3 == w4)
+ return;
+
+ Client *c1 = findClient(WindowMatchPredicate((WId)w1));
+ Client *c2 = findClient(WindowMatchPredicate((WId)w2));
+ Client *c3 = findClient(WindowMatchPredicate((WId)w3));
+ Client *c4 = findClient(WindowMatchPredicate((WId)w4));
+ if (!c1 || !c2 || !c3 || !c4) return;
+
+ c1->tile(ActiveTopLeft);
+ c2->tile(ActiveTopRight);
+ c3->tile(ActiveBottomLeft);
+ c4->tile(ActiveBottomRight);
+}
+
void Workspace::slotActivateAttentionWindow()
{
if( attention_chain.count() > 0 )