Martin Gräßlin
7a74413712
Drop dynamic_cast from UserActionsMenu::slotSendToDesktop
2015-05-08 12:43:46 +02:00
Martin Gräßlin
d4f7445749
Remove remaining Client usage from FocusChain
2015-05-08 12:43:46 +02:00
Martin Gräßlin
704b255234
Drop no longer needed dynamic_casts from TabBox
2015-05-08 12:43:46 +02:00
Martin Gräßlin
7d5236cac8
TabBox::shadeActivate operates on AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
9457b362c1
Drop not needed dynamic cast in WorkspaceWrapper::setActiveClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
fe8946740c
Remove no longer cast in Workspace::allowClientActivation
2015-05-08 12:43:46 +02:00
Martin Gräßlin
41cd927bce
Move Workspace::activeClient and ::mostRecentlyActivatedClient back to header
...
Now all is moved they can be inlined again.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
fdcaf2b86f
Make Workspace::active_client an AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
69f198e923
Move ::demandAttention to AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
af48d38d22
Workspace::should_get_focus becomes QList<AbstractClient*>
2015-05-08 12:43:46 +02:00
Martin Gräßlin
94ce47ef7b
Workspace::mostRecentlyActivatedClient returns an AbstractClient
...
Implementation temporarily moved to cpp. Needs to be moved back once
should_get_focus and active_client are AbstractClient.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
b1026aa162
Workspace::allowFullClientRaising operates on AbstractCliet
2015-05-08 12:43:46 +02:00
Martin Gräßlin
1d7d1787a8
Workspace::last_active_client becomes an AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
f28d759352
Workspace::allowClientActivation operates on AbstractClient
...
Still requires a dynamic_cast for check on should_get_focus. To be
removed once Workspace::should_get_focus is a list of AbstractClients.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
dde1947461
Move ::userTime to AbstractClient
...
Default implementation returns 0.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
1a7e8aeaf2
Move enum QuickTileFlag and ::setQuickTileMode to AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
5b53d2401e
Move ::packTo to AbstractClient
...
Base implementation which does nothing
2015-05-08 12:43:46 +02:00
Martin Gräßlin
683fc0613f
Workspace::packPosition* operates on AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
7a85ee5309
Make helper method isIrrelevant operate on AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
7ffc742a69
Move ::isCurrentTab to AbstractClient
...
Default implementation returns true.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
6feb1c6604
Move ::titlebarPosition and enum Position to AbstractClient
2015-05-08 12:43:46 +02:00
Martin Gräßlin
e5734f9e6c
Move (grow|shrink)(Horizontal|Vertical) to AbstractClient
...
A virtual base implementation is provided which does nothing. Needed
in AbstractClient to get Workspace::slotWindowGrow* to work with
active_client becoming an AbstractCliet.
2015-05-08 12:43:46 +02:00
Martin Gräßlin
138c1b2ff0
Workspace::sendClientToDesktop operates on AbstractClient
...
Unfortunately transient handling is still on Client, thus it's
still in a cast-if block.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
4f1c98773e
Workspace::showWindowMenu operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
c357ac01fe
Workspace::restackClientUnderActive operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
ddcd4dab59
Workspace::slotWindowTo(Previous|Next)Desktop operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
1d4701d67e
Workspace::takeActivity operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
484f9b6e65
Workspace::activateClient and ::requestFocus changed to AbstractClient
...
requestFocus delegates to takeActivity which is not yet adjusted but
performs a nullptr check, thus we pass a casted Client.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
8cfe0a9316
Workspace::clientActivated signal changed to AbstractClient
...
connections changed to new connect syntax to ensure they are correct.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
3ad117ac28
Workspace::activeClient returns an AbstractClient
...
Still a few casts in some areas as setting activeClient still takes
a Client.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
4b41c33268
Workspace::movingClient changed to AbstractClient
...
In events.cpp it's casted to Client as it's X11 specific.
In InputRedirections it's kind of broken, but window movement is
anyway broken.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
d2cdd3de1d
UserActionsMenu operates on AbstractClient
...
There are still a few areas where it's dynamic casting to Client,
e.g.:
* sendToDesktop
* window tabbing related
* activities related
2015-05-08 12:43:45 +02:00
Martin Gräßlin
4eb9a98f1a
[scripting] actionsForUserActionMenu operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
519006ffa4
Workspace::performWindowOperation operates on AbstractClient
...
Only exception is the call to ::takeActivity which still expects a
Client.
2015-05-08 12:43:45 +02:00
Martin Gräßlin
bfb52b20c9
RuleBook::edit operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
bfa4e1cec1
Workspace::cascadeOffset operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
942b49e2c4
Workspace::setupWindowShortcut operates on AbstractClient
2015-05-08 12:43:45 +02:00
Martin Gräßlin
aa1e9161d5
Workspace::clientArea takes AbstractClient instead of Client
2015-05-08 12:43:44 +02:00
Martin Gräßlin
7c187359a7
Workspace::sendClientToScreen operates on AbstractClient
2015-05-08 12:43:44 +02:00
Martin Gräßlin
c46c92e204
Screens changed to use AbstractClient in ::setCurrent
2015-05-08 12:43:44 +02:00
Martin Gräßlin
6e45901844
TabBoxClientImpl changed to using an AbstractClient
...
The change is mostly straight forward. Effects are straight forward
adjusted. Client::findModal is moved up, this causes still a few
dynamic_casts to Client. Mostly because Workspace::activateClient still
operates on Client.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
f800477be5
Use AbstractClient for raise/lowerClient
...
Not a 100 % port. Transient handling is still bound to Client and
does a static cast back to Client.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
1b02837d0b
Add overload Workspace::hasClient(const AbstractClient*)
...
Delegates to hasClient(const Client*) if the AbstractClient is a
Client. Needs to be extended for other AbstractClient subclasses.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
792745c963
Change Workspace::restack to operate on AbstractClient
2015-05-08 12:43:44 +02:00
Martin Gräßlin
fe7a6834b2
FocusChain operates on AbstractClient instead of Client
...
As external interface it still returns Client* to not force the casts
to be done at usages. This will be changed once the users are migrated
to AbstractClient*.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
0f54da9dde
Introduce an AbstractClient base class for Client (and ShellClient)
...
The idea for this base class is to provide access to all elements which
make up a managed "Client" being it X11 or Wayland. They share a lot,
like they have a caption, they can be minimized, etc. etc.
Of course it would have also been possible to derive a new class from
Client, but that looks like the more difficult task as Client is very
X11 specific.
So far only a very small interface is extracted with pure-virtual
methods. This is going to change by moving the functionality up into
the AbstractClient.
The interface extracted so far is inspired by the usage of FocusChain
and users of FocusChain.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
d60c377890
[wayland] Introduce a ShellClient
...
The ShellClient is a Toplevel subclass for a
KWayland::Server::ShellSurfaceInterface. It gets created when a new
ShellSurfaceInterface is created and destoryed when it gets unmapped.
So far the usage is still rather limited. The ShellClient is opened
at position (0/0). While it's possible to pass pointer events to it,
it's not yet possible to activate it, so no keyboard focus.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
8fad5830f1
Toplevel::windowRole becomes virtual and is copied to Deleted
...
Toplevel::windowRole accesses WinInfo unconditionally causing crashes
if we have a Toplevel subclass which doesn't use WinInfo. So let's
make it virtual and copy to Deleted.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
fec2b63102
Copy NET::WindowType to Deleted
...
This was suggested to be done in a comment. The existing code might
have returned incorrect results for Client. So let's get the primary
window type and use that one.
2015-05-08 12:43:44 +02:00
Martin Gräßlin
e8b14cd587
[input] Add safety checks before accessing Cursor of focused pointer
...
There might be no focused pointer and there might be no cursor.
2015-05-08 12:43:44 +02:00