diff --git a/kcmkwin/kwintabbox/main.cpp b/kcmkwin/kwintabbox/main.cpp index 6599baef27..3f047d1657 100644 --- a/kcmkwin/kwintabbox/main.cpp +++ b/kcmkwin/kwintabbox/main.cpp @@ -135,6 +135,7 @@ KWinTabBoxConfig::KWinTabBoxConfig(QWidget* parent, const QVariantList& args) // combo boxes connect(m_primaryTabBoxUi->listModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(m_primaryTabBoxUi->switchingModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); + connect(m_primaryTabBoxUi->minimizedModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(m_primaryTabBoxUi->effectCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); // check boxes connect(m_primaryTabBoxUi->showOutlineCheck, SIGNAL(stateChanged(int)), this, SLOT(changed())); @@ -144,6 +145,7 @@ KWinTabBoxConfig::KWinTabBoxConfig(QWidget* parent, const QVariantList& args) // combo boxes alternative connect(m_alternativeTabBoxUi->listModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(m_alternativeTabBoxUi->switchingModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); + connect(m_alternativeTabBoxUi->minimizedModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(m_alternativeTabBoxUi->effectCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); // check boxes alternative connect(m_alternativeTabBoxUi->showOutlineCheck, SIGNAL(stateChanged(int)), this, SLOT(changed())); @@ -226,6 +228,8 @@ void KWinTabBoxConfig::loadConfig(const KConfigGroup& config, KWin::TabBox::TabB config.readEntry("ListMode", TabBox::TabBoxConfig::defaultListMode()))); tabBoxConfig.setClientSwitchingMode(TabBox::TabBoxConfig::ClientSwitchingMode( config.readEntry("SwitchingMode", TabBox::TabBoxConfig::defaultSwitchingMode()))); + tabBoxConfig.setClientMinimizedMode(TabBox::TabBoxConfig::ClientMinimizedMode( + config.readEntry("MinimizedMode", TabBox::TabBoxConfig::defaultMinimizedMode()))); tabBoxConfig.setLayout(TabBox::TabBoxConfig::LayoutMode( config.readEntry("LayoutMode", TabBox::TabBoxConfig::defaultLayoutMode()))); tabBoxConfig.setShowDesktop(config.readEntry("ShowDesktop", @@ -252,6 +256,7 @@ void KWinTabBoxConfig::saveConfig(KConfigGroup& config, const KWin::TabBox::TabB // combo boxes config.writeEntry("ListMode", int(tabBoxConfig.clientListMode())); config.writeEntry("SwitchingMode", int(tabBoxConfig.clientSwitchingMode())); + config.writeEntry("MinimizedMode", int(tabBoxConfig.clientMinimizedMode())); config.writeEntry("LayoutMode", int(tabBoxConfig.layout())); config.writeEntry("LayoutName", tabBoxConfig.layoutName()); config.writeEntry("SelectedLayoutName", tabBoxConfig.selectedItemLayoutName()); @@ -354,6 +359,7 @@ void KWinTabBoxConfig::defaults() // combo boxes m_primaryTabBoxUi->listModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultListMode()); m_primaryTabBoxUi->switchingModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultSwitchingMode()); + m_primaryTabBoxUi->minimizedModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultMinimizedMode()); // checkboxes m_primaryTabBoxUi->showOutlineCheck->setChecked(TabBox::TabBoxConfig::defaultShowOutline()); @@ -368,6 +374,7 @@ void KWinTabBoxConfig::defaults() // combo boxes m_alternativeTabBoxUi->listModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultListMode()); m_alternativeTabBoxUi->switchingModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultSwitchingMode()); + m_alternativeTabBoxUi->minimizedModeCombo->setCurrentIndex(TabBox::TabBoxConfig::defaultMinimizedMode()); // checkboxes m_alternativeTabBoxUi->showOutlineCheck->setChecked(TabBox::TabBoxConfig::defaultShowOutline()); @@ -398,6 +405,7 @@ void KWinTabBoxConfig::updateUiFromConfig(KWinTabBoxConfigForm* ui, const KWin:: // combo boxes ui->listModeCombo->setCurrentIndex(config.clientListMode()); ui->switchingModeCombo->setCurrentIndex(config.clientSwitchingMode()); + ui->minimizedModeCombo->setCurrentIndex(config.clientMinimizedMode()); // check boxes ui->showOutlineCheck->setChecked(config.isShowOutline()); @@ -410,6 +418,7 @@ void KWinTabBoxConfig::updateConfigFromUi(const KWin::KWinTabBoxConfigForm* ui, { config.setClientListMode(TabBox::TabBoxConfig::ClientListMode(ui->listModeCombo->currentIndex())); config.setClientSwitchingMode(TabBox::TabBoxConfig::ClientSwitchingMode(ui->switchingModeCombo->currentIndex())); + config.setClientMinimizedMode(TabBox::TabBoxConfig::ClientMinimizedMode(ui->minimizedModeCombo->currentIndex())); config.setShowOutline(ui->showOutlineCheck->isChecked()); config.setShowTabBox(ui->showTabBox->isChecked()); diff --git a/kcmkwin/kwintabbox/main.ui b/kcmkwin/kwintabbox/main.ui index e81168c0b9..a316b286b1 100644 --- a/kcmkwin/kwintabbox/main.ui +++ b/kcmkwin/kwintabbox/main.ui @@ -90,6 +90,41 @@ + + + + Minimized: + + + minimizedModeCombo + + + + + + + + 0 + 0 + + + + + Ignore status + + + + + Exclude minimized windows + + + + + Minimized windows only + + + + diff --git a/tabbox/tabbox.cpp b/tabbox/tabbox.cpp index 30513168d6..97575ce7a7 100644 --- a/tabbox/tabbox.cpp +++ b/tabbox/tabbox.cpp @@ -135,6 +135,8 @@ TabBoxClient* TabBoxHandlerImpl::clientToAddToList(TabBoxClient* client, int des addClient = current->isOnDesktop(desktop); addClient = addClient && current->isOnCurrentActivity(); addClient = addClient && current->wantsTabFocus() && !current->skipSwitcher(); + addClient = addClient && !(current->isMinimized() && config().clientMinimizedMode() == TabBoxConfig::ExcludeMinimizedClients ); + addClient = addClient && !(!current->isMinimized() && config().clientMinimizedMode() == TabBoxConfig::OnlyMinimizedClients); if (addClient) { // don't add windows that have modal dialogs Client* modal = current->findModal(); @@ -578,6 +580,8 @@ void TabBox::loadConfig(const KConfigGroup& config, TabBoxConfig& tabBoxConfig) config.readEntry("ListMode", TabBoxConfig::defaultListMode()))); tabBoxConfig.setClientSwitchingMode(TabBoxConfig::ClientSwitchingMode( config.readEntry("SwitchingMode", TabBoxConfig::defaultSwitchingMode()))); + tabBoxConfig.setClientMinimizedMode(TabBoxConfig::ClientMinimizedMode( + config.readEntry("MinimizedMode", TabBoxConfig::defaultMinimizedMode()))); tabBoxConfig.setShowOutline(config.readEntry("ShowOutline", TabBoxConfig::defaultShowOutline())); diff --git a/tabbox/tabboxconfig.cpp b/tabbox/tabboxconfig.cpp index f17c12d70a..9feaa16f45 100644 --- a/tabbox/tabboxconfig.cpp +++ b/tabbox/tabboxconfig.cpp @@ -35,6 +35,7 @@ public: , layout(TabBoxConfig::defaultLayoutMode()) , clientListMode(TabBoxConfig::defaultListMode()) , clientSwitchingMode(TabBoxConfig::defaultSwitchingMode()) + , clientMinimizedMode(TabBoxConfig::defaultMinimizedMode()) , desktopSwitchingMode(TabBoxConfig::MostRecentlyUsedDesktopSwitching) , minWidth(TabBoxConfig::defaultMinWidth()) , minHeight(TabBoxConfig::defaultMinHeight()) @@ -52,6 +53,7 @@ public: TabBoxConfig::LayoutMode layout; TabBoxConfig::ClientListMode clientListMode; TabBoxConfig::ClientSwitchingMode clientSwitchingMode; + TabBoxConfig::ClientMinimizedMode clientMinimizedMode; TabBoxConfig::DesktopSwitchingMode desktopSwitchingMode; int minWidth; int minHeight; @@ -80,6 +82,7 @@ TabBoxConfig& TabBoxConfig::operator=(const KWin::TabBox::TabBoxConfig& object) d->layout = object.layout(); d->clientListMode = object.clientListMode(); d->clientSwitchingMode = object.clientSwitchingMode(); + d->clientMinimizedMode = object.clientMinimizedMode(); d->desktopSwitchingMode = object.desktopSwitchingMode(); d->selectedItemLayoutName = object.selectedItemLayoutName(); d->minWidth = object.minWidth(); @@ -158,6 +161,16 @@ void TabBoxConfig::setClientSwitchingMode(ClientSwitchingMode switchingMode) d->clientSwitchingMode = switchingMode; } +TabBoxConfig::ClientMinimizedMode TabBoxConfig::clientMinimizedMode() const +{ + return d->clientMinimizedMode; +} + +void TabBoxConfig::setClientMinimizedMode(ClientMinimizedMode minimizedMode) +{ + d->clientMinimizedMode = minimizedMode; +} + TabBoxConfig::DesktopSwitchingMode TabBoxConfig::desktopSwitchingMode() const { return d->desktopSwitchingMode; diff --git a/tabbox/tabboxconfig.h b/tabbox/tabboxconfig.h index bc239e1af8..32facde898 100644 --- a/tabbox/tabboxconfig.h +++ b/tabbox/tabboxconfig.h @@ -79,6 +79,15 @@ public: StackingOrderSwitching ///< Sort by current stacking order }; /** + * ClientMinimizedMode defines the mode used to create the TabBoxClient List + * in the TabBoxClientModel + */ + enum ClientMinimizedMode { + IgnoreMinimizedStatus, ///< TabBoxClients are included no matter they are minimized or not + ExcludeMinimizedClients, ///< Exclude minimized TabBoxClients + OnlyMinimizedClients ///< Only minimized TabBoxClients are included + }; + /** * DesktopSwitchingMode defines the sorting of the desktops in the * TabBoxDesktopModel. */ @@ -146,6 +155,13 @@ public: */ ClientSwitchingMode clientSwitchingMode() const; /** + * @return The current ClientMinimizedMode + * This option only applies for TabBoxMode ClientTabBox. + * @see setClientMinimizedMode + * @see defaultMinimizedMode + */ + ClientMinimizedMode clientMinimizedMode() const; + /** * @return The current DesktopSwitchingMode * This option only applies for TabBoxMode DesktopTabBox. * @see setDesktopSwitchingMode @@ -223,6 +239,12 @@ public: */ void setClientSwitchingMode(ClientSwitchingMode switchingMode); /** + * @param minimizedMode The new ClientMinimizedMode to be used. + * This option only applies for TabBoxMode ClientTabBox. + * @see clientMinimizedMode + */ + void setClientMinimizedMode(ClientMinimizedMode minimizedMode); + /** * @param switchingMode The new DesktopSwitchingMode to be used. * This option only applies for TabBoxMode DesktopTabBox. * @see desktopSwitchingMode @@ -261,6 +283,9 @@ public: static ClientSwitchingMode defaultSwitchingMode() { return FocusChainSwitching; } + static ClientMinimizedMode defaultMinimizedMode() { + return IgnoreMinimizedStatus; + } static LayoutMode defaultLayoutMode() { return VerticalLayout; }