TWin: add tileHorizontally(), tileVertically(), tileGrid() DCOP calls

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
(cherry picked from commit 7482fe2283)
pull/478/head
Mavridis Philippe 12 months ago committed by Michele Calgaro
parent 8d168e4985
commit 62ce84146e
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -29,6 +29,9 @@ class KWinInterface : virtual public DCOPObject
virtual void circulateDesktopApplications() = 0; virtual void circulateDesktopApplications() = 0;
virtual void updateOverlappingShadows(unsigned long window) = 0; virtual void updateOverlappingShadows(unsigned long window) = 0;
virtual void setShadowed(unsigned long window, bool shadowed) = 0; virtual void setShadowed(unsigned long window, bool shadowed) = 0;
virtual void tileHorizontally(unsigned long w1, unsigned long w2) = 0;
virtual void tileVertically(unsigned long w1, unsigned long w2) = 0;
virtual void tileGrid(unsigned long w1, unsigned long w2, unsigned long w3, unsigned long w4) = 0;
// kompmgr stuff // kompmgr stuff
virtual void startKompmgr() = 0; virtual void startKompmgr() = 0;

@ -240,6 +240,7 @@ class Client : public TQObject, public KDecorationDefines
void cancelActiveBorderMaximizing(); void cancelActiveBorderMaximizing();
bool isActiveBorderMaximizing() const; bool isActiveBorderMaximizing() const;
TQRect activeBorderMaximizeGeometry(); TQRect activeBorderMaximizeGeometry();
void tile(ActiveBorder border);
void growHorizontal(); void growHorizontal();
void shrinkHorizontal(); void shrinkHorizontal();

@ -2828,4 +2828,16 @@ TQRect Client::activeBorderMaximizeGeometry()
return ret; return ret;
} }
void Client::tile(ActiveBorder border) {
if (!isResizable()) return;
activeTiled = true;
setActiveBorderMode(ActiveTilingMode);
setActiveBorder(border);
TQRect geo = activeBorderMaximizeGeometry();
if (geo.isValid() && !geo.isEmpty()) {
setGeometry(geo);
}
workspace()->raiseClient(this);
}
} // namespace } // namespace

@ -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() void Workspace::slotActivateAttentionWindow()
{ {
if( attention_chain.count() > 0 ) if( attention_chain.count() > 0 )

@ -206,6 +206,10 @@ class Workspace : public TQObject, public KWinInterface, public KDecorationDefin
void showWindowMenuAt( unsigned long id, int x, int y ); void showWindowMenuAt( unsigned long id, int x, int y );
void showWindowMenu( unsigned long id ); void showWindowMenu( unsigned long id );
void tileHorizontally(unsigned long w1, unsigned long w2);
void tileVertically(unsigned long w1, unsigned long w2);
void tileGrid(unsigned long w1, unsigned long w2, unsigned long w3, unsigned long w4);
void kDestopResized(); void kDestopResized();
/** /**

Loading…
Cancel
Save