CVS commit by puetzk: Since we can add strings again now, add a choice "All Screens" for those who wanted kicker to spann all screens in an Xinerama setup (as we did pre-KDE 3.1). I've had a few requests for this back, so here goes. M +8 -1 kcontrol/kicker/positiontab_impl.cpp 1.23 M +8 -4 kicker/core/container_panel.cpp 1.77 --- kdebase/kicker/core/container_panel.cpp #1.76:1.77 @@ -226,9 +226,10 @@ int PanelContainer::xineramaScreen() con // turn it on and off and don't want kicker to lose their configs - if(_settings._xineramaScreen < 0 || _settings._xineramaScreen >= QApplication::desktop()->numScreens()) + /* -2 means all screens, -1 primary screens, the rest are valid screen numbers */ + if(-2 >= _settings._xineramaScreen < QApplication::desktop()->numScreens()) + return _settings._xineramaScreen; + else /* force invalid screen locations onto the primary screen */ return QApplication::desktop()->primaryScreen(); - else - return _settings._xineramaScreen; } @@ -1197,4 +1198,7 @@ QRect PanelContainer::workArea(int Xiner } + if(XineramaScreen == -2) /* special value for all screens */ + return kWinModule->workArea(list); + else return kWinModule->workArea(list).intersect(QApplication::desktop()->screenGeometry(XineramaScreen)); } --- kdebase/kcontrol/kicker/positiontab_impl.cpp #1.22:1.23 @@ -120,4 +120,5 @@ PositionTab::PositionTab(KickerConfig *k m_xineramaScreenComboBox->insertItem(QString::number(s)); } + m_xineramaScreenComboBox->insertItem(i18n("All Screens")); // hide the xinerama chooser widgets if there is no need for them @@ -487,4 +488,6 @@ void PositionTab::switchPanel(QListViewI if(m_panelInfo->_xineramaScreen >= 0 && m_panelInfo->_xineramaScreen < QApplication::desktop()->numScreens()) m_xineramaScreenComboBox->setCurrentItem(m_panelInfo->_xineramaScreen); + else if(m_panelInfo->_xineramaScreen == -2) /* the All Screens option: qt uses -1 for default, so -2 for all */ + m_xineramaScreenComboBox->setCurrentItem(m_xineramaScreenComboBox->count()-1); else m_xineramaScreenComboBox->setCurrentItem(QApplication::desktop()->primaryScreen()); @@ -603,5 +606,9 @@ void PositionTab::storeInfo() m_panelInfo->_position = m_panelPos; m_panelInfo->_alignment = m_panelAlign; + if(m_xineramaScreenComboBox->currentItem() == m_xineramaScreenComboBox->count()-1) + m_panelInfo->_xineramaScreen = -2; /* all screens */ + else m_panelInfo->_xineramaScreen = m_xineramaScreenComboBox->currentItem(); + m_panelInfo->_sizePercentage = m_percentSlider->value();