Placement fully operates on AbstractClient
Remaining methods had to be adjusted in one go as they called back into place method.
This commit is contained in:
parent
f16644ac2e
commit
1a89fc55b5
2 changed files with 23 additions and 18 deletions
|
@ -56,7 +56,7 @@ Placement::~Placement()
|
|||
/*!
|
||||
Places the client \a c according to the workspace's layout policy
|
||||
*/
|
||||
void Placement::place(Client* c, QRect& area)
|
||||
void Placement::place(AbstractClient* c, QRect& area)
|
||||
{
|
||||
Policy policy = c->rules()->checkPlacement(Default);
|
||||
if (policy != Default) {
|
||||
|
@ -76,7 +76,7 @@ void Placement::place(Client* c, QRect& area)
|
|||
place(c, area, options->placement());
|
||||
}
|
||||
|
||||
void Placement::place(Client* c, QRect& area, Policy policy, Policy nextPlacement)
|
||||
void Placement::place(AbstractClient* c, QRect& area, Policy policy, Policy nextPlacement)
|
||||
{
|
||||
if (policy == Unknown)
|
||||
policy = Default;
|
||||
|
@ -370,7 +370,7 @@ QPoint Workspace::cascadeOffset(const AbstractClient *c) const
|
|||
/*!
|
||||
Place windows in a cascading order, remembering positions for each desktop
|
||||
*/
|
||||
void Placement::placeCascaded(Client* c, QRect& area, Policy nextPlacement)
|
||||
void Placement::placeCascaded(AbstractClient* c, QRect& area, Policy nextPlacement)
|
||||
{
|
||||
/* cascadePlacement by Cristian Tibirna (tibirna@kde.org) (30Jan98)
|
||||
*/
|
||||
|
@ -473,7 +473,7 @@ void Placement::placeZeroCornered(AbstractClient* c, const QRect& area, Policy /
|
|||
c->move(checkArea(c, area).topLeft());
|
||||
}
|
||||
|
||||
void Placement::placeUtility(Client* c, QRect& area, Policy /*next*/)
|
||||
void Placement::placeUtility(AbstractClient* c, QRect& area, Policy /*next*/)
|
||||
{
|
||||
// TODO kwin should try to place utility windows next to their mainwindow,
|
||||
// preferably at the right edge, and going down if there are more of them
|
||||
|
@ -492,7 +492,7 @@ void Placement::placeOnScreenDisplay(AbstractClient* c, QRect& area)
|
|||
c->move(QPoint(x, y));
|
||||
}
|
||||
|
||||
void Placement::placeDialog(Client* c, QRect& area, Policy nextPlacement)
|
||||
void Placement::placeDialog(AbstractClient* c, QRect& area, Policy nextPlacement)
|
||||
{
|
||||
placeOnMainWindow(c, area, nextPlacement);
|
||||
}
|
||||
|
@ -506,16 +506,19 @@ void Placement::placeUnderMouse(AbstractClient* c, QRect& area, Policy /*next*/)
|
|||
c->keepInArea(area); // make sure it's kept inside workarea
|
||||
}
|
||||
|
||||
void Placement::placeOnMainWindow(Client* c, QRect& area, Policy nextPlacement)
|
||||
void Placement::placeOnMainWindow(AbstractClient* c, QRect& area, Policy nextPlacement)
|
||||
{
|
||||
if (nextPlacement == Unknown)
|
||||
nextPlacement = Centered;
|
||||
if (nextPlacement == Maximizing) // maximize if needed
|
||||
placeMaximizing(c, area, NoPlacement);
|
||||
area = checkArea(c, area);
|
||||
ClientList mainwindows = c->mainClients();
|
||||
Client* place_on = NULL;
|
||||
Client* place_on2 = NULL;
|
||||
ClientList mainwindows;
|
||||
if (Client *client = qobject_cast<Client*>(c)) {
|
||||
mainwindows = client->mainClients();
|
||||
}
|
||||
AbstractClient* place_on = nullptr;
|
||||
AbstractClient* place_on2 = nullptr;
|
||||
int mains_count = 0;
|
||||
for (ClientList::ConstIterator it = mainwindows.constBegin();
|
||||
it != mainwindows.constEnd();
|
||||
|
@ -559,7 +562,7 @@ void Placement::placeOnMainWindow(Client* c, QRect& area, Policy nextPlacement)
|
|||
c->keepInArea(area); // make sure it's kept inside workarea
|
||||
}
|
||||
|
||||
void Placement::placeMaximizing(Client* c, QRect& area, Policy nextPlacement)
|
||||
void Placement::placeMaximizing(AbstractClient* c, QRect& area, Policy nextPlacement)
|
||||
{
|
||||
if (nextPlacement == Unknown)
|
||||
nextPlacement = Smart;
|
||||
|
@ -568,7 +571,9 @@ void Placement::placeMaximizing(Client* c, QRect& area, Policy nextPlacement)
|
|||
c->maximize(MaximizeFull);
|
||||
else { // if the geometry doesn't match default maximize area (xinerama case?),
|
||||
// it's probably better to use the given area
|
||||
c->setGeometry(area);
|
||||
if (Client *client = qobject_cast<Client*>(c)) {
|
||||
client->setGeometry(area);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
c->resizeWithChecks(c->maxSize().boundedTo(area.size()));
|
||||
|
|
14
placement.h
14
placement.h
|
@ -62,16 +62,16 @@ public:
|
|||
Maximizing
|
||||
};
|
||||
|
||||
void place(Client* c, QRect& area);
|
||||
void place(AbstractClient* c, QRect& area);
|
||||
|
||||
void placeAtRandom(AbstractClient* c, const QRect& area, Policy next = Unknown);
|
||||
void placeCascaded(Client* c, QRect& area, Policy next = Unknown);
|
||||
void placeCascaded(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
void placeSmart(AbstractClient* c, const QRect& area, Policy next = Unknown);
|
||||
void placeMaximizing(Client* c, QRect& area, Policy next = Unknown);
|
||||
void placeMaximizing(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
void placeCentered(AbstractClient* c, const QRect& area, Policy next = Unknown);
|
||||
void placeZeroCornered(AbstractClient* c, const QRect& area, Policy next = Unknown);
|
||||
void placeDialog(Client* c, QRect& area, Policy next = Unknown);
|
||||
void placeUtility(Client* c, QRect& area, Policy next = Unknown);
|
||||
void placeDialog(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
void placeUtility(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
void placeOnScreenDisplay(AbstractClient* c, QRect& area);
|
||||
|
||||
void reinitCascading(int desktop);
|
||||
|
@ -89,9 +89,9 @@ public:
|
|||
static const char* policyToString(Policy policy);
|
||||
|
||||
private:
|
||||
void place(Client* c, QRect& area, Policy policy, Policy nextPlacement = Unknown);
|
||||
void place(AbstractClient* c, QRect& area, Policy policy, Policy nextPlacement = Unknown);
|
||||
void placeUnderMouse(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
void placeOnMainWindow(Client* c, QRect& area, Policy next = Unknown);
|
||||
void placeOnMainWindow(AbstractClient* c, QRect& area, Policy next = Unknown);
|
||||
QRect checkArea(const AbstractClient*c, const QRect& area);
|
||||
|
||||
//CT needed for cascading+
|
||||
|
|
Loading…
Reference in a new issue