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