Use Show desktop item instead of empty text in TabBox
If there are no windows for Alt+Tab the Show Desktop entry is shown. This works better with both layouts and effects. Before this change effects were not activated at all but a fallback to the layouts was used. Concerning the layouts some looked rather bad. E.g. Thumbnails did not show a thumbnail but a legacy text had been shown. When a window gets added to the empty list, the show desktop window is removed and consequently when the last window goes away the show desktop entry is added again. There is a not considered corner case: if there is no desktop window, the show desktop functionality is not available and the behavior is unfortunately undefined. It is a corner case as we can expect that there is always a desktop window when using KWin. E.g. there is either Plasma Desktop or Netbook and on PA there is always at least one window. BUG: 260938 FIXED-IN: 4.9.0 REVIEW: 104379
This commit is contained in:
parent
d03c73a223
commit
c2ebd35cad
4 changed files with 4 additions and 14 deletions
|
@ -57,10 +57,7 @@ QVariant ClientModel::data(const QModelIndex& index, int role) const
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
if (m_clientList.isEmpty()) {
|
if (m_clientList.isEmpty()) {
|
||||||
if (role == EmptyRole)
|
return QVariant();
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return i18n("*** No Windows ***");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int clientIndex = index.row() * columnCount() + index.column();
|
int clientIndex = index.row() * columnCount() + index.column();
|
||||||
|
@ -75,8 +72,6 @@ QVariant ClientModel::data(const QModelIndex& index, int role) const
|
||||||
case DesktopNameRole: {
|
case DesktopNameRole: {
|
||||||
return tabBox->desktopName(m_clientList[ clientIndex ]);
|
return tabBox->desktopName(m_clientList[ clientIndex ]);
|
||||||
}
|
}
|
||||||
case EmptyRole:
|
|
||||||
return false;
|
|
||||||
case WIdRole:
|
case WIdRole:
|
||||||
return qulonglong(m_clientList[ clientIndex ]->window());
|
return qulonglong(m_clientList[ clientIndex ]->window());
|
||||||
case MinimizedRole:
|
case MinimizedRole:
|
||||||
|
@ -235,7 +230,7 @@ void ClientModel::createClientList(int desktop, bool partialReset)
|
||||||
m_clientList.removeAll(c);
|
m_clientList.removeAll(c);
|
||||||
m_clientList.prepend(c);
|
m_clientList.prepend(c);
|
||||||
}
|
}
|
||||||
if (tabBox->config().showDesktopMode() == TabBoxConfig::ShowDesktopClient) {
|
if (tabBox->config().showDesktopMode() == TabBoxConfig::ShowDesktopClient || m_clientList.isEmpty()) {
|
||||||
TabBoxClient* desktopClient = tabBox->desktopClient();
|
TabBoxClient* desktopClient = tabBox->desktopClient();
|
||||||
if (desktopClient)
|
if (desktopClient)
|
||||||
m_clientList.append(desktopClient);
|
m_clientList.append(desktopClient);
|
||||||
|
|
|
@ -53,7 +53,6 @@ public:
|
||||||
CaptionRole = Qt::UserRole + 1, ///< The caption of TabBoxClient
|
CaptionRole = Qt::UserRole + 1, ///< The caption of TabBoxClient
|
||||||
DesktopNameRole = Qt::UserRole + 2, ///< The name of the desktop the TabBoxClient is on
|
DesktopNameRole = Qt::UserRole + 2, ///< The name of the desktop the TabBoxClient is on
|
||||||
IconRole = Qt::UserRole + 3, // TODO: to be removed
|
IconRole = Qt::UserRole + 3, // TODO: to be removed
|
||||||
EmptyRole = Qt::UserRole + 4, ///< Indicates if the model contains TabBoxClients
|
|
||||||
WIdRole = Qt::UserRole + 5, ///< The window ID of TabBoxClient
|
WIdRole = Qt::UserRole + 5, ///< The window ID of TabBoxClient
|
||||||
MinimizedRole = Qt::UserRole + 6, ///< TabBoxClient is minimized
|
MinimizedRole = Qt::UserRole + 6, ///< TabBoxClient is minimized
|
||||||
CloseableRole = Qt::UserRole + 7 ///< TabBoxClient can be closed
|
CloseableRole = Qt::UserRole + 7 ///< TabBoxClient can be closed
|
||||||
|
|
|
@ -69,9 +69,6 @@ QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize
|
||||||
if (!index.isValid()) {
|
if (!index.isValid()) {
|
||||||
return QDeclarativeImageProvider::requestPixmap(id, size, requestedSize);
|
return QDeclarativeImageProvider::requestPixmap(id, size, requestedSize);
|
||||||
}
|
}
|
||||||
if (index.model()->data(index, ClientModel::EmptyRole).toBool()) {
|
|
||||||
return QDeclarativeImageProvider::requestPixmap(id, size, requestedSize);
|
|
||||||
}
|
|
||||||
TabBoxClient* client = static_cast< TabBoxClient* >(index.model()->data(index, ClientModel::ClientRole).value<void *>());
|
TabBoxClient* client = static_cast< TabBoxClient* >(index.model()->data(index, ClientModel::ClientRole).value<void *>());
|
||||||
if (!client) {
|
if (!client) {
|
||||||
return QDeclarativeImageProvider::requestPixmap(id, size, requestedSize);
|
return QDeclarativeImageProvider::requestPixmap(id, size, requestedSize);
|
||||||
|
|
|
@ -119,7 +119,7 @@ void TabBoxHandlerPrivate::updateOutline()
|
||||||
if (config.tabBoxMode() != TabBoxConfig::ClientTabBox)
|
if (config.tabBoxMode() != TabBoxConfig::ClientTabBox)
|
||||||
return;
|
return;
|
||||||
// if ( c == NULL || !m_isShown || !c->isShown( true ) || !c->isOnCurrentDesktop())
|
// if ( c == NULL || !m_isShown || !c->isShown( true ) || !c->isOnCurrentDesktop())
|
||||||
if (!isShown || clientModel()->data(index, ClientModel::EmptyRole).toBool()) {
|
if (!isShown) {
|
||||||
q->hideOutline();
|
q->hideOutline();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -410,8 +410,7 @@ TabBoxClientList TabBoxHandler::clientList() const
|
||||||
TabBoxClient* TabBoxHandler::client(const QModelIndex& index) const
|
TabBoxClient* TabBoxHandler::client(const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
if ((!index.isValid()) ||
|
if ((!index.isValid()) ||
|
||||||
(d->config.tabBoxMode() != TabBoxConfig::ClientTabBox) ||
|
(d->config.tabBoxMode() != TabBoxConfig::ClientTabBox))
|
||||||
(d->clientModel()->data(index, ClientModel::EmptyRole).toBool()))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
TabBoxClient* c = static_cast< TabBoxClient* >(
|
TabBoxClient* c = static_cast< TabBoxClient* >(
|
||||||
d->clientModel()->data(index, ClientModel::ClientRole).value<void *>());
|
d->clientModel()->data(index, ClientModel::ClientRole).value<void *>());
|
||||||
|
|
Loading…
Reference in a new issue