Workspace::keepTransientAbove operates on AbstractClient
This commit is contained in:
parent
fda5a5feea
commit
1e00e1597a
2 changed files with 7 additions and 5 deletions
10
layers.cpp
10
layers.cpp
|
@ -567,7 +567,7 @@ ToplevelList Workspace::constrainedStackingOrder()
|
|||
for (i2 = stacking.size() - 1;
|
||||
i2 >= 0;
|
||||
--i2) {
|
||||
Client *c2 = qobject_cast<Client*>(stacking[ i2 ]);
|
||||
AbstractClient *c2 = qobject_cast<AbstractClient*>(stacking[ i2 ]);
|
||||
if (!c2) {
|
||||
continue;
|
||||
}
|
||||
|
@ -640,7 +640,7 @@ ClientList Workspace::ensureStackingOrder(const ClientList& list) const
|
|||
|
||||
// check whether a transient should be actually kept above its mainwindow
|
||||
// there may be some special cases where this rule shouldn't be enfored
|
||||
bool Workspace::keepTransientAbove(const Client* mainwindow, const Client* transient)
|
||||
bool Workspace::keepTransientAbove(const AbstractClient* mainwindow, const AbstractClient* transient)
|
||||
{
|
||||
// #93832 - don't keep splashscreens above dialogs
|
||||
if (transient->isSplash() && mainwindow->isDialog())
|
||||
|
@ -649,8 +649,10 @@ bool Workspace::keepTransientAbove(const Client* mainwindow, const Client* trans
|
|||
// the mainwindow, but only if they're group transient (since only such dialogs
|
||||
// have taskbar entry in Kicker). A proper way of doing this (both kwin and kicker)
|
||||
// needs to be found.
|
||||
if (transient->isDialog() && !transient->isModal() && transient->groupTransient())
|
||||
return false;
|
||||
if (const Client *ct = dynamic_cast<const Client*>(transient)) {
|
||||
if (ct->isDialog() && !ct->isModal() && ct->groupTransient())
|
||||
return false;
|
||||
}
|
||||
// #63223 - don't keep transients above docks, because the dock is kept high,
|
||||
// and e.g. dialogs for them would be too high too
|
||||
if (mainwindow->isDock())
|
||||
|
|
|
@ -485,7 +485,7 @@ private:
|
|||
void raiseClientWithinApplication(Client* c);
|
||||
void lowerClientWithinApplication(Client* c);
|
||||
bool allowFullClientRaising(const AbstractClient* c, xcb_timestamp_t timestamp);
|
||||
bool keepTransientAbove(const Client* mainwindow, const Client* transient);
|
||||
bool keepTransientAbove(const AbstractClient* mainwindow, const AbstractClient* transient);
|
||||
void blockStackingUpdates(bool block);
|
||||
void updateToolWindows(bool also_hide);
|
||||
void fixPositionAfterCrash(xcb_window_t w, const xcb_get_geometry_reply_t *geom);
|
||||
|
|
Loading…
Reference in a new issue