Adding an accept and reject method to TabBox

This commit is contained in:
Martin Gräßlin 2011-12-02 10:31:52 +01:00
parent 12b7bdfcb1
commit e873efdc99
2 changed files with 23 additions and 31 deletions

View file

@ -216,21 +216,9 @@ QVector< Window > TabBoxHandlerImpl::outlineWindowIds() const
void TabBoxHandlerImpl::activateAndClose() void TabBoxHandlerImpl::activateAndClose()
{ {
Client* c = NULL; m_tabBox->accept();
if (TabBoxClientImpl* cl = static_cast< TabBoxClientImpl* >(client(currentIndex()))) {
c = cl->client();
}
m_tabBox->close();
if (c) {
Workspace::self()->activateClient(c);
if (c->isShade() && options->shadeHover)
c->setShade(ShadeActivated);
if (c->isDesktop())
Workspace::self()->setShowingDesktop(!Workspace::self()->showingDesktop());
}
} }
/********************************************************* /*********************************************************
* TabBoxClientImpl * TabBoxClientImpl
*********************************************************/ *********************************************************/
@ -695,15 +683,7 @@ void TabBox::grabbedKeyEvent(QKeyEvent* event)
} }
if (m_noModifierGrab) { if (m_noModifierGrab) {
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return || event->key() == Qt::Key_Space) { if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return || event->key() == Qt::Key_Space) {
Client* c = currentClient(); accept();
close();
if (c) {
Workspace::self()->activateClient(c);
if (c->isShade() && options->shadeHover)
c->setShade(ShadeActivated);
if (c->isDesktop())
Workspace::self()->setShowingDesktop(!Workspace::self()->showingDesktop());
}
} }
} }
setCurrentIndex(m_tabBox->grabbedKeyEvent(event)); setCurrentIndex(m_tabBox->grabbedKeyEvent(event));
@ -1186,6 +1166,24 @@ void TabBox::close(bool abort)
m_noModifierGrab = false; m_noModifierGrab = false;
} }
void TabBox::accept()
{
Client* c = currentClient();
close();
if (c) {
Workspace::self()->activateClient(c);
if (c->isShade() && options->shadeHover)
c->setShade(ShadeActivated);
if (c->isDesktop())
Workspace::self()->setShowingDesktop(!Workspace::self()->showingDesktop());
}
}
void TabBox::reject()
{
close(true);
}
/*! /*!
Handles alt-tab / control-tab releasing Handles alt-tab / control-tab releasing
*/ */
@ -1227,16 +1225,8 @@ void TabBox::keyRelease(const XKeyEvent& ev)
return; return;
if (m_tabGrab) { if (m_tabGrab) {
bool old_control_grab = m_desktopGrab; bool old_control_grab = m_desktopGrab;
Client* c = currentClient(); accept();
close();
m_desktopGrab = old_control_grab; m_desktopGrab = old_control_grab;
if (c) {
Workspace::self()->activateClient(c);
if (c->isShade() && options->shadeHover)
c->setShade(ShadeActivated);
if (c->isDesktop())
Workspace::self()->setShowingDesktop(!Workspace::self()->showingDesktop());
}
} }
if (m_desktopGrab) { if (m_desktopGrab) {
bool old_tab_grab = m_tabGrab; bool old_tab_grab = m_tabGrab;

View file

@ -193,6 +193,8 @@ public slots:
**/ **/
Q_SCRIPTABLE void openEmbedded(qulonglong wid, QPoint offset, QSize size, int horizontalAlignment, int verticalAlignment); Q_SCRIPTABLE void openEmbedded(qulonglong wid, QPoint offset, QSize size, int horizontalAlignment, int verticalAlignment);
Q_SCRIPTABLE void close(bool abort = false); Q_SCRIPTABLE void close(bool abort = false);
Q_SCRIPTABLE void accept();
Q_SCRIPTABLE void reject();
void slotWalkThroughDesktops(); void slotWalkThroughDesktops();
void slotWalkBackThroughDesktops(); void slotWalkBackThroughDesktops();
void slotWalkThroughDesktopList(); void slotWalkThroughDesktopList();