Workspace::takeActivity operates on AbstractClient
This commit is contained in:
parent
484f9b6e65
commit
1d4701d67e
4 changed files with 11 additions and 8 deletions
|
@ -64,6 +64,7 @@ public:
|
|||
*/
|
||||
virtual bool isSpecialWindow() const = 0;
|
||||
virtual bool isActive() const = 0;
|
||||
virtual void setActive(bool) =0;
|
||||
virtual void sendToScreen(int screen) = 0;
|
||||
virtual const QKeySequence &shortcut() const = 0;
|
||||
virtual void setShortcut(const QString &cut) = 0;
|
||||
|
@ -99,6 +100,8 @@ public:
|
|||
virtual bool userCanSetNoBorder() const = 0;
|
||||
virtual void setOnAllActivities(bool set) = 0;
|
||||
virtual const WindowRules* rules() const = 0;
|
||||
virtual void takeFocus() = 0;
|
||||
virtual bool wantsInput() const = 0;
|
||||
|
||||
// TODO: remove boolean trap
|
||||
static bool belongToSameApplication(const AbstractClient* c1, const AbstractClient* c2, bool active_hack = false);
|
||||
|
|
|
@ -337,10 +337,10 @@ void Workspace::activateClient(AbstractClient* c, bool force)
|
|||
*/
|
||||
void Workspace::requestFocus(AbstractClient* c, bool force)
|
||||
{
|
||||
takeActivity(dynamic_cast<Client*>(c), force ? ActivityFocusForce : ActivityFocus);
|
||||
takeActivity(c, force ? ActivityFocusForce : ActivityFocus);
|
||||
}
|
||||
|
||||
void Workspace::takeActivity(Client* c, ActivityFlags flags)
|
||||
void Workspace::takeActivity(AbstractClient* c, ActivityFlags flags)
|
||||
{
|
||||
// the 'if ( c == active_client ) return;' optimization mustn't be done here
|
||||
if (!focusChangeEnabled() && (c != active_client))
|
||||
|
@ -352,7 +352,7 @@ void Workspace::takeActivity(Client* c, ActivityFlags flags)
|
|||
}
|
||||
|
||||
if (flags & ActivityFocus) {
|
||||
Client* modal = dynamic_cast<Client*>(c->findModal());
|
||||
AbstractClient* modal = c->findModal();
|
||||
if (modal != NULL && modal != c) {
|
||||
if (!modal->isOnDesktop(c->desktop())) {
|
||||
modal->setDesktop(c->desktop());
|
||||
|
@ -380,7 +380,7 @@ void Workspace::takeActivity(Client* c, ActivityFlags flags)
|
|||
flags &= ~ActivityFocus;
|
||||
}
|
||||
if (c->tabGroup() && c->tabGroup()->current() != c)
|
||||
c->tabGroup()->setCurrent(c);
|
||||
c->tabGroup()->setCurrent(dynamic_cast<Client*>(c));
|
||||
if (!c->isShown(true)) { // shouldn't happen, call activateClient() if needed
|
||||
qCWarning(KWIN_CORE) << "takeActivity: not shown" ;
|
||||
return;
|
||||
|
|
6
client.h
6
client.h
|
@ -352,7 +352,7 @@ public:
|
|||
const QIcon &icon() const override;
|
||||
|
||||
bool isActive() const override;
|
||||
void setActive(bool);
|
||||
void setActive(bool) override;
|
||||
|
||||
virtual int desktop() const;
|
||||
void setDesktop(int) override;
|
||||
|
@ -440,14 +440,14 @@ public:
|
|||
|
||||
// Auxiliary functions, depend on the windowType
|
||||
bool wantsTabFocus() const override;
|
||||
bool wantsInput() const;
|
||||
bool wantsInput() const override;
|
||||
|
||||
bool isResizable() const override;
|
||||
bool isMovable() const override;
|
||||
bool isMovableAcrossScreens() const override;
|
||||
bool isCloseable() const override; ///< May be closed by the user (May have a close button)
|
||||
|
||||
void takeFocus();
|
||||
void takeFocus() override;
|
||||
bool isDemandingAttention() const {
|
||||
return demands_attention;
|
||||
}
|
||||
|
|
|
@ -156,7 +156,7 @@ public:
|
|||
ActivityRaise = 1 << 2 // raise the window
|
||||
};
|
||||
Q_DECLARE_FLAGS(ActivityFlags, ActivityFlag)
|
||||
void takeActivity(Client* c, ActivityFlags flags);
|
||||
void takeActivity(AbstractClient* c, ActivityFlags flags);
|
||||
bool allowClientActivation(const Client* c, xcb_timestamp_t time = -1U, bool focus_in = false,
|
||||
bool ignore_desktop = false);
|
||||
void restoreFocus();
|
||||
|
|
Loading…
Reference in a new issue