Port Workspace::clientUnderMouse() to AbstractOutput
This commit is contained in:
parent
e0c941109c
commit
02a9457bbc
4 changed files with 6 additions and 6 deletions
|
@ -1748,7 +1748,7 @@ bool AbstractClient::performMouseCommand(Options::MouseCommand cmd, const QPoint
|
|||
// used to be activateNextClient(this), then topClientOnDesktop
|
||||
// since this is a mouseOp it's however safe to use the client under the mouse instead
|
||||
if (isActive() && options->focusPolicyIsReasonable()) {
|
||||
AbstractClient *next = workspace()->clientUnderMouse(screen());
|
||||
AbstractClient *next = workspace()->clientUnderMouse(output());
|
||||
if (next && next != this)
|
||||
workspace()->requestFocus(next, false);
|
||||
}
|
||||
|
|
|
@ -411,7 +411,7 @@ void Workspace::clientHidden(AbstractClient* c)
|
|||
activateNextClient(c);
|
||||
}
|
||||
|
||||
AbstractClient *Workspace::clientUnderMouse(int screen) const
|
||||
AbstractClient *Workspace::clientUnderMouse(AbstractOutput *output) const
|
||||
{
|
||||
auto it = stackingOrder().constEnd();
|
||||
while (it != stackingOrder().constBegin()) {
|
||||
|
@ -423,7 +423,7 @@ AbstractClient *Workspace::clientUnderMouse(int screen) const
|
|||
// rule out clients which are not really visible.
|
||||
// the screen test is rather superfluous for xrandr & twinview since the geometry would differ -> TODO: might be dropped
|
||||
if (!(client->isShown(false) && client->isOnCurrentDesktop() &&
|
||||
client->isOnCurrentActivity() && client->isOnScreen(screen)))
|
||||
client->isOnCurrentActivity() && client->isOnOutput(output)))
|
||||
continue;
|
||||
|
||||
if (client->frameGeometry().contains(Cursors::self()->mouse()->pos())) {
|
||||
|
@ -466,7 +466,7 @@ bool Workspace::activateNextClient(AbstractClient* c)
|
|||
get_focus = findDesktop(true, desktop); // to not break the state
|
||||
|
||||
if (!get_focus && options->isNextFocusPrefersMouse()) {
|
||||
get_focus = clientUnderMouse(c ? c->screen() : screens()->current());
|
||||
get_focus = clientUnderMouse(c ? c->output() : screens()->currentOutput());
|
||||
if (get_focus && (get_focus == c || get_focus->isDesktop())) {
|
||||
// should rather not happen, but it cannot get the focus. rest of usability is tested above
|
||||
get_focus = nullptr;
|
||||
|
|
|
@ -1419,7 +1419,7 @@ void Workspace::slotWindowLower()
|
|||
//activateNextClient( c ); // Doesn't work when we lower a child window
|
||||
if (active_client->isActive() && options->focusPolicyIsReasonable()) {
|
||||
if (options->isNextFocusPrefersMouse()) {
|
||||
AbstractClient *next = clientUnderMouse(active_client->screen());
|
||||
AbstractClient *next = clientUnderMouse(active_client->output());
|
||||
if (next && next != active_client)
|
||||
requestFocus(next, false);
|
||||
} else {
|
||||
|
|
|
@ -163,7 +163,7 @@ public:
|
|||
*/
|
||||
AbstractClient* mostRecentlyActivatedClient() const;
|
||||
|
||||
AbstractClient* clientUnderMouse(int screen) const;
|
||||
AbstractClient *clientUnderMouse(AbstractOutput *output) const;
|
||||
|
||||
void activateClient(AbstractClient*, bool force = false);
|
||||
bool requestFocus(AbstractClient* c, bool force = false);
|
||||
|
|
Loading…
Reference in a new issue