TabBox uses signals to notify the effects
EffectsHandlerImpl just forwards the signals from TabBox. In order to have a valid pointer to the TabBox, the TabBox is now initialized before compositing in Workspace.icc-effect-5.14.5
parent
94c301a089
commit
15757e953a
29
effects.cpp
29
effects.cpp
|
@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "scene_xrender.h"
|
||||
#include "scene_opengl.h"
|
||||
#include "unmanaged.h"
|
||||
#include "tabbox.h"
|
||||
#include "workspace.h"
|
||||
#include "kwinglutils.h"
|
||||
|
||||
|
@ -101,6 +102,10 @@ EffectsHandlerImpl::EffectsHandlerImpl(CompositingType type)
|
|||
connect(ws, SIGNAL(unmanagedAdded(KWin::Unmanaged*)), this, SLOT(slotUnmanagedAdded(KWin::Unmanaged*)));
|
||||
connect(ws, SIGNAL(clientActivated(KWin::Client*)), this, SLOT(slotClientActivated(KWin::Client*)));
|
||||
connect(ws, SIGNAL(deletedRemoved(KWin::Deleted*)), this, SLOT(slotDeletedRemoved(KWin::Deleted*)));
|
||||
connect(ws->tabBox(), SIGNAL(tabBoxAdded(int)), SIGNAL(tabBoxAdded(int)));
|
||||
connect(ws->tabBox(), SIGNAL(tabBoxUpdated()), SIGNAL(tabBoxUpdated()));
|
||||
connect(ws->tabBox(), SIGNAL(tabBoxClosed()), SIGNAL(tabBoxClosed()));
|
||||
connect(ws->tabBox(), SIGNAL(tabBoxKeyEvent(QKeyEvent*)), SIGNAL(tabBoxKeyEvent(QKeyEvent*)));
|
||||
// connect all clients
|
||||
foreach (Client *c, ws->clientList()) {
|
||||
setupClientConnections(c);
|
||||
|
@ -400,30 +405,6 @@ void EffectsHandlerImpl::windowGeometryShapeChanged(EffectWindow* w, const QRect
|
|||
ep.second->windowGeometryShapeChanged(w, old);
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::tabBoxAdded(int mode)
|
||||
{
|
||||
foreach (const EffectPair & ep, loaded_effects)
|
||||
ep.second->tabBoxAdded(mode);
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::tabBoxClosed()
|
||||
{
|
||||
foreach (const EffectPair & ep, loaded_effects)
|
||||
ep.second->tabBoxClosed();
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::tabBoxUpdated()
|
||||
{
|
||||
foreach (const EffectPair & ep, loaded_effects)
|
||||
ep.second->tabBoxUpdated();
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::tabBoxKeyEvent(QKeyEvent* event)
|
||||
{
|
||||
foreach (const EffectPair & ep, loaded_effects)
|
||||
ep.second->tabBoxKeyEvent(event);
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::setActiveFullScreenEffect(Effect* e)
|
||||
{
|
||||
fullscreen_effect = e;
|
||||
|
|
|
@ -164,10 +164,6 @@ public:
|
|||
void clientGroupItemRemoved(EffectWindow* c, EffectWindow* group);
|
||||
void windowDamaged(EffectWindow* w, const QRect& r);
|
||||
void windowGeometryShapeChanged(EffectWindow* w, const QRect& old);
|
||||
void tabBoxAdded(int mode);
|
||||
void tabBoxClosed();
|
||||
void tabBoxUpdated();
|
||||
void tabBoxKeyEvent(QKeyEvent* event);
|
||||
bool borderActivated(ElectricBorder border);
|
||||
void mouseChanged(const QPoint& pos, const QPoint& oldpos,
|
||||
Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons,
|
||||
|
|
|
@ -58,6 +58,9 @@ BoxSwitchEffect::BoxSwitchEffect()
|
|||
highlight_margin = 10;
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int)));
|
||||
connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed()));
|
||||
connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated()));
|
||||
}
|
||||
|
||||
BoxSwitchEffect::~BoxSwitchEffect()
|
||||
|
@ -289,7 +292,7 @@ void BoxSwitchEffect::windowGeometryShapeChanged(EffectWindow* w, const QRect& o
|
|||
}
|
||||
}
|
||||
|
||||
void BoxSwitchEffect::tabBoxAdded(int mode)
|
||||
void BoxSwitchEffect::slotTabBoxAdded(int mode)
|
||||
{
|
||||
if (!mActivated) {
|
||||
if ((mode == TabBoxWindowsMode && primaryTabBox) ||
|
||||
|
@ -315,13 +318,13 @@ void BoxSwitchEffect::tabBoxAdded(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
void BoxSwitchEffect::tabBoxClosed()
|
||||
void BoxSwitchEffect::slotTabBoxClosed()
|
||||
{
|
||||
if (mActivated)
|
||||
setInactive();
|
||||
}
|
||||
|
||||
void BoxSwitchEffect::tabBoxUpdated()
|
||||
void BoxSwitchEffect::slotTabBoxUpdated()
|
||||
{
|
||||
if (mActivated) {
|
||||
if ((mMode == TabBoxWindowsMode || mMode == TabBoxWindowsAlternativeMode)
|
||||
|
|
|
@ -55,15 +55,15 @@ public:
|
|||
virtual void windowInputMouseEvent(Window w, QEvent* e);
|
||||
virtual void windowDamaged(EffectWindow* w, const QRect& damage);
|
||||
virtual void windowGeometryShapeChanged(EffectWindow* w, const QRect& old);
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void* proxy();
|
||||
void activateFromProxy(int mode, bool animate, bool showText, float positioningFactor);
|
||||
void paintWindowsBox(const QRegion& region);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow* w);
|
||||
void slotTabBoxAdded(int mode);
|
||||
void slotTabBoxClosed();
|
||||
void slotTabBoxUpdated();
|
||||
|
||||
private:
|
||||
class ItemInfo;
|
||||
|
|
|
@ -71,6 +71,9 @@ CoverSwitchEffect::CoverSwitchEffect()
|
|||
const QString fragmentshader = KGlobal::dirs()->findResource("data", "kwin/coverswitch-reflection.glsl");
|
||||
m_reflectionShader = ShaderManager::instance()->loadFragmentShader(ShaderManager::GenericShader, fragmentshader);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int)));
|
||||
connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed()));
|
||||
connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated()));
|
||||
}
|
||||
|
||||
CoverSwitchEffect::~CoverSwitchEffect()
|
||||
|
@ -527,7 +530,7 @@ void CoverSwitchEffect::paintWindow(EffectWindow* w, int mask, QRegion region, W
|
|||
effects->paintWindow(w, mask, region, data);
|
||||
}
|
||||
|
||||
void CoverSwitchEffect::tabBoxAdded(int mode)
|
||||
void CoverSwitchEffect::slotTabBoxAdded(int mode)
|
||||
{
|
||||
if (effects->activeFullScreenEffect() && effects->activeFullScreenEffect() != this)
|
||||
return;
|
||||
|
@ -590,7 +593,7 @@ void CoverSwitchEffect::tabBoxAdded(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
void CoverSwitchEffect::tabBoxClosed()
|
||||
void CoverSwitchEffect::slotTabBoxClosed()
|
||||
{
|
||||
if (mActivated) {
|
||||
if (animateStop) {
|
||||
|
@ -612,7 +615,7 @@ void CoverSwitchEffect::tabBoxClosed()
|
|||
}
|
||||
}
|
||||
|
||||
void CoverSwitchEffect::tabBoxUpdated()
|
||||
void CoverSwitchEffect::slotTabBoxUpdated()
|
||||
{
|
||||
if (mActivated) {
|
||||
if (animateSwitch && currentWindowList.count() > 1) {
|
||||
|
|
|
@ -46,15 +46,15 @@ public:
|
|||
virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data);
|
||||
virtual void postPaintScreen();
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void windowInputMouseEvent(Window w, QEvent* e);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
void slotTabBoxAdded(int mode);
|
||||
void slotTabBoxClosed();
|
||||
void slotTabBoxUpdated();
|
||||
|
||||
private:
|
||||
void paintScene(EffectWindow* frontWindow, const EffectWindowList& leftWindows, const EffectWindowList& rightWindows,
|
||||
|
|
|
@ -103,6 +103,9 @@ CubeEffect::CubeEffect()
|
|||
m_capShader = ShaderManager::instance()->loadFragmentShader(ShaderManager::GenericShader, capshader);
|
||||
m_textureMirrorMatrix.scale(1.0, -1.0, 1.0);
|
||||
m_textureMirrorMatrix.translate(0.0, -1.0, 0.0);
|
||||
connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int)));
|
||||
connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed()));
|
||||
connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated()));
|
||||
|
||||
reconfigure(ReconfigureAll);
|
||||
}
|
||||
|
@ -1969,7 +1972,7 @@ void CubeEffect::windowInputMouseEvent(Window w, QEvent* e)
|
|||
}
|
||||
}
|
||||
|
||||
void CubeEffect::tabBoxAdded(int mode)
|
||||
void CubeEffect::slotTabBoxAdded(int mode)
|
||||
{
|
||||
if (activated)
|
||||
return;
|
||||
|
@ -1983,7 +1986,7 @@ void CubeEffect::tabBoxAdded(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
void CubeEffect::tabBoxUpdated()
|
||||
void CubeEffect::slotTabBoxUpdated()
|
||||
{
|
||||
if (activated) {
|
||||
rotateToDesktop(effects->currentTabBoxDesktop());
|
||||
|
@ -1991,7 +1994,7 @@ void CubeEffect::tabBoxUpdated()
|
|||
}
|
||||
}
|
||||
|
||||
void CubeEffect::tabBoxClosed()
|
||||
void CubeEffect::slotTabBoxClosed()
|
||||
{
|
||||
if (activated) {
|
||||
effects->unrefTabBox();
|
||||
|
|
|
@ -51,9 +51,6 @@ public:
|
|||
virtual void mouseChanged(const QPoint& pos, const QPoint& oldpos, Qt::MouseButtons buttons,
|
||||
Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers);
|
||||
virtual void windowInputMouseEvent(Window w, QEvent* e);
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void tabBoxClosed();
|
||||
|
||||
// proxy functions
|
||||
virtual void* proxy();
|
||||
|
@ -70,6 +67,9 @@ private slots:
|
|||
void cubeShortcutChanged(const QKeySequence& seq);
|
||||
void cylinderShortcutChanged(const QKeySequence& seq);
|
||||
void sphereShortcutChanged(const QKeySequence& seq);
|
||||
void slotTabBoxAdded(int mode);
|
||||
void slotTabBoxUpdated();
|
||||
void slotTabBoxClosed();
|
||||
private:
|
||||
enum RotationDirection {
|
||||
Left,
|
||||
|
|
|
@ -71,6 +71,9 @@ FlipSwitchEffect::FlipSwitchEffect()
|
|||
connect(b, SIGNAL(globalShortcutChanged(QKeySequence)), this, SLOT(globalShortcutChangedAll(QKeySequence)));
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int)));
|
||||
connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed()));
|
||||
connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated()));
|
||||
}
|
||||
|
||||
FlipSwitchEffect::~FlipSwitchEffect()
|
||||
|
@ -510,7 +513,7 @@ void FlipSwitchEffect::paintWindow(EffectWindow* w, int mask, QRegion region, Wi
|
|||
//*************************************************************
|
||||
// Tabbox handling
|
||||
//*************************************************************
|
||||
void FlipSwitchEffect::tabBoxAdded(int mode)
|
||||
void FlipSwitchEffect::slotTabBoxAdded(int mode)
|
||||
{
|
||||
if (effects->activeFullScreenEffect() && effects->activeFullScreenEffect() != this)
|
||||
return;
|
||||
|
@ -525,7 +528,7 @@ void FlipSwitchEffect::tabBoxAdded(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
void FlipSwitchEffect::tabBoxClosed()
|
||||
void FlipSwitchEffect::slotTabBoxClosed()
|
||||
{
|
||||
if (m_active) {
|
||||
setActive(false, TabboxMode);
|
||||
|
@ -533,7 +536,7 @@ void FlipSwitchEffect::tabBoxClosed()
|
|||
}
|
||||
}
|
||||
|
||||
void FlipSwitchEffect::tabBoxUpdated()
|
||||
void FlipSwitchEffect::slotTabBoxUpdated()
|
||||
{
|
||||
if (m_active && !m_stop) {
|
||||
if (!effects->currentTabBoxWindowList().isEmpty()) {
|
||||
|
|
|
@ -44,9 +44,6 @@ public:
|
|||
virtual void postPaintScreen();
|
||||
virtual void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time);
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual bool borderActivated(ElectricBorder border);
|
||||
virtual void grabbedKeyboardEvent(QKeyEvent* e);
|
||||
|
||||
|
@ -58,6 +55,9 @@ private Q_SLOTS:
|
|||
void globalShortcutChangedAll(QKeySequence shortcut);
|
||||
void slotWindowAdded(EffectWindow* w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
void slotTabBoxAdded(int mode);
|
||||
void slotTabBoxClosed();
|
||||
void slotTabBoxUpdated();
|
||||
|
||||
private:
|
||||
class ItemInfo;
|
||||
|
|
|
@ -101,6 +101,10 @@ PresentWindowsEffect::PresentWindowsEffect()
|
|||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowDeleted(EffectWindow*)), this, SLOT(slotWindowDeleted(EffectWindow*)));
|
||||
connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int)));
|
||||
connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed()));
|
||||
connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated()));
|
||||
connect(effects, SIGNAL(tabBoxKeyEvent(QKeyEvent*)), this, SLOT(slotTabBoxKeyEvent(QKeyEvent*)));
|
||||
}
|
||||
|
||||
PresentWindowsEffect::~PresentWindowsEffect()
|
||||
|
@ -662,7 +666,7 @@ void PresentWindowsEffect::grabbedKeyboardEvent(QKeyEvent *e)
|
|||
//-----------------------------------------------------------------------------
|
||||
// Tab box
|
||||
|
||||
void PresentWindowsEffect::tabBoxAdded(int mode)
|
||||
void PresentWindowsEffect::slotTabBoxAdded(int mode)
|
||||
{
|
||||
if (effects->activeFullScreenEffect() && effects->activeFullScreenEffect() != this)
|
||||
return;
|
||||
|
@ -680,7 +684,7 @@ void PresentWindowsEffect::tabBoxAdded(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
void PresentWindowsEffect::tabBoxClosed()
|
||||
void PresentWindowsEffect::slotTabBoxClosed()
|
||||
{
|
||||
if (m_activated) {
|
||||
effects->unrefTabBox();
|
||||
|
@ -689,13 +693,13 @@ void PresentWindowsEffect::tabBoxClosed()
|
|||
}
|
||||
}
|
||||
|
||||
void PresentWindowsEffect::tabBoxUpdated()
|
||||
void PresentWindowsEffect::slotTabBoxUpdated()
|
||||
{
|
||||
if (m_activated)
|
||||
setHighlightedWindow(effects->currentTabBoxWindow());
|
||||
}
|
||||
|
||||
void PresentWindowsEffect::tabBoxKeyEvent(QKeyEvent* event)
|
||||
void PresentWindowsEffect::slotTabBoxKeyEvent(QKeyEvent* event)
|
||||
{
|
||||
if (!m_activated)
|
||||
return;
|
||||
|
|
|
@ -107,12 +107,6 @@ public:
|
|||
virtual void windowInputMouseEvent(Window w, QEvent *e);
|
||||
virtual void grabbedKeyboardEvent(QKeyEvent *e);
|
||||
|
||||
// Tab box
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void tabBoxKeyEvent(QKeyEvent* event);
|
||||
|
||||
// atoms
|
||||
virtual void propertyNotify(EffectWindow* w, long atom);
|
||||
|
||||
|
@ -161,6 +155,11 @@ public slots:
|
|||
void slotWindowAdded(EffectWindow *w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
void slotWindowDeleted(EffectWindow *w);
|
||||
// Tab box
|
||||
void slotTabBoxAdded(int mode);
|
||||
void slotTabBoxClosed();
|
||||
void slotTabBoxUpdated();
|
||||
void slotTabBoxKeyEvent(QKeyEvent* event);
|
||||
|
||||
private slots:
|
||||
void closeWindow();
|
||||
|
|
|
@ -155,22 +155,6 @@ void Effect::windowGeometryShapeChanged(EffectWindow*, const QRect&)
|
|||
{
|
||||
}
|
||||
|
||||
void Effect::tabBoxAdded(int)
|
||||
{
|
||||
}
|
||||
|
||||
void Effect::tabBoxClosed()
|
||||
{
|
||||
}
|
||||
|
||||
void Effect::tabBoxUpdated()
|
||||
{
|
||||
}
|
||||
|
||||
void Effect::tabBoxKeyEvent(QKeyEvent*)
|
||||
{
|
||||
}
|
||||
|
||||
bool Effect::borderActivated(ElectricBorder)
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -461,10 +461,6 @@ public:
|
|||
*/
|
||||
virtual void propertyNotify(EffectWindow* w, long atom);
|
||||
|
||||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void tabBoxKeyEvent(QKeyEvent* event);
|
||||
virtual bool borderActivated(ElectricBorder border);
|
||||
|
||||
/**
|
||||
|
@ -891,6 +887,45 @@ Q_SIGNALS:
|
|||
* @since 4.7
|
||||
**/
|
||||
void windowUnminimized(EffectWindow *w);
|
||||
/**
|
||||
* Signal emitted when a tabbox is added.
|
||||
* An effect who wants to replace the tabbox with itself should use @link refTabBox.
|
||||
* @param mode The TabBoxMode.
|
||||
* @see refTabBox
|
||||
* @see tabBoxClosed
|
||||
* @see tabBoxUpdated
|
||||
* @see tabBoxKeyEvent
|
||||
* @since 4.7
|
||||
**/
|
||||
void tabBoxAdded(int mode);
|
||||
/**
|
||||
* Signal emitted when the TabBox was closed by KWin core.
|
||||
* An effect which referenced the TabBox should use @link unrefTabBox to unref again.
|
||||
* @see unrefTabBox
|
||||
* @see tabBoxAdded
|
||||
* @since 4.7
|
||||
**/
|
||||
void tabBoxClosed();
|
||||
/**
|
||||
* Signal emitted when the selected TabBox window changed or the TabBox List changed.
|
||||
* An effect should only response to this signal if it referenced the TabBox with @link refTabBox.
|
||||
* @see refTabBox
|
||||
* @see currentTabBoxWindowList
|
||||
* @see currentTabBoxDesktopList
|
||||
* @see currentTabBoxWindow
|
||||
* @see currentTabBoxDesktop
|
||||
* @since 4.7
|
||||
**/
|
||||
void tabBoxUpdated();
|
||||
/**
|
||||
* Signal emitted when a key event, which is not handled by TabBox directly is, happens while
|
||||
* TabBox is active. An effect might use the key event to e.g. change the selected window.
|
||||
* An effect should only response to this signal if it referenced the TabBox with @link refTabBox.
|
||||
* @param event The key event not handled by TabBox directly
|
||||
* @see refTabBox
|
||||
* @since 4.7
|
||||
**/
|
||||
void tabBoxKeyEvent(QKeyEvent* event);
|
||||
|
||||
protected:
|
||||
QVector< EffectPair > loaded_effects;
|
||||
|
|
21
tabbox.cpp
21
tabbox.cpp
|
@ -353,8 +353,7 @@ void TabBox::reset(bool partial_reset)
|
|||
break;
|
||||
}
|
||||
|
||||
if (effects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxUpdated();
|
||||
emit tabBoxUpdated();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -363,9 +362,7 @@ void TabBox::reset(bool partial_reset)
|
|||
void TabBox::nextPrev(bool next)
|
||||
{
|
||||
setCurrentIndex(m_tabBox->nextPrev(next), false);
|
||||
|
||||
if (effects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxUpdated();
|
||||
emit tabBoxUpdated();
|
||||
}
|
||||
|
||||
|
||||
|
@ -448,8 +445,9 @@ void TabBox::TabBox::setCurrentIndex(QModelIndex index, bool notifyEffects)
|
|||
return;
|
||||
m_index = index;
|
||||
m_tabBox->setCurrentIndex(index);
|
||||
if (effects && notifyEffects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxUpdated();
|
||||
if (notifyEffects) {
|
||||
emit tabBoxUpdated();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -458,8 +456,7 @@ void TabBox::TabBox::setCurrentIndex(QModelIndex index, bool notifyEffects)
|
|||
*/
|
||||
void TabBox::show()
|
||||
{
|
||||
if (effects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxAdded(m_tabBoxMode);
|
||||
emit tabBoxAdded(m_tabBoxMode);
|
||||
if (isDisplayed()) {
|
||||
m_isShown = false;
|
||||
return;
|
||||
|
@ -480,8 +477,7 @@ void TabBox::hide(bool abort)
|
|||
m_isShown = false;
|
||||
unrefDisplay();
|
||||
}
|
||||
if (effects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxClosed();
|
||||
emit tabBoxClosed();
|
||||
if (isDisplayed())
|
||||
kDebug(1212) << "Tab box was not properly closed by an effect";
|
||||
m_index = QModelIndex();
|
||||
|
@ -620,10 +616,9 @@ void TabBox::handleMouseEvent(XEvent* e)
|
|||
|
||||
void TabBox::TabBox::grabbedKeyEvent(QKeyEvent* event)
|
||||
{
|
||||
emit tabBoxKeyEvent(event);
|
||||
if (!m_isShown && isDisplayed()) {
|
||||
// tabbox has been replaced, check effects
|
||||
if (effects)
|
||||
static_cast<EffectsHandlerImpl*>(effects)->tabBoxKeyEvent(event);
|
||||
return;
|
||||
}
|
||||
setCurrentIndex(m_tabBox->grabbedKeyEvent(event));
|
||||
|
|
6
tabbox.h
6
tabbox.h
|
@ -126,6 +126,12 @@ public:
|
|||
public slots:
|
||||
void show();
|
||||
|
||||
signals:
|
||||
void tabBoxAdded(int);
|
||||
void tabBoxClosed();
|
||||
void tabBoxUpdated();
|
||||
void tabBoxKeyEvent(QKeyEvent*);
|
||||
|
||||
private:
|
||||
void setCurrentIndex(QModelIndex index, bool notifyEffects = true);
|
||||
void loadConfig(const KConfigGroup& config, TabBoxConfig& tabBoxConfig);
|
||||
|
|
|
@ -217,6 +217,8 @@ Workspace::Workspace(bool restore)
|
|||
);
|
||||
|
||||
Extensions::init();
|
||||
// need to create the tabbox before compositing scene is setup
|
||||
tab_box = new TabBox::TabBox(this);
|
||||
setupCompositing();
|
||||
|
||||
// Compatibility
|
||||
|
@ -235,7 +237,6 @@ Workspace::Workspace(bool restore)
|
|||
|
||||
client_keys = new KActionCollection(this);
|
||||
initShortcuts();
|
||||
tab_box = new TabBox::TabBox(this);
|
||||
desktop_change_osd = new DesktopChangeOSD(this);
|
||||
|
||||
init();
|
||||
|
|
|
@ -385,6 +385,9 @@ public:
|
|||
void refTabBox();
|
||||
void unrefTabBox();
|
||||
void closeTabBox(bool abort = false);
|
||||
TabBox::TabBox *tabBox() const {
|
||||
return tab_box;
|
||||
}
|
||||
|
||||
// Tabbing
|
||||
void addClientGroup(ClientGroup* group);
|
||||
|
|
Loading…
Reference in New Issue