diff options
Diffstat (limited to 'opensuse/tdebase/systray_order.diff')
-rw-r--r-- | opensuse/tdebase/systray_order.diff | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/opensuse/tdebase/systray_order.diff b/opensuse/tdebase/systray_order.diff deleted file mode 100644 index b864afc8e..000000000 --- a/opensuse/tdebase/systray_order.diff +++ /dev/null @@ -1,162 +0,0 @@ -Index: kicker/applets/systemtray/systemtrayapplet.cpp -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.cpp.orig -+++ kicker/applets/systemtray/systemtrayapplet.cpp -@@ -187,6 +187,7 @@ bool SystemTrayApplet::x11Event( XEvent - if( isWinManaged( (WId)e->xclient.data.l[2] ) ) // we already manage it - return true; - embedWindow( e->xclient.data.l[2], false ); -+ updateVisibleWins(); - layoutTray(); - return true; - } -@@ -213,13 +214,12 @@ void SystemTrayApplet::preferences() - connect(m_settingsDialog, SIGNAL(finished()), this, SLOT(settingsDialogFinished())); - - m_iconSelector = new KActionSelector(m_settingsDialog); -- m_iconSelector->setAvailableLabel(i18n("Visible icons:")); -- m_iconSelector->setSelectedLabel(i18n("Hidden icons:")); -- m_iconSelector->setShowUpDownButtons(false); -+ m_iconSelector->setAvailableLabel(i18n("Hidden icons:")); -+ m_iconSelector->setSelectedLabel(i18n("Visible icons:")); - m_settingsDialog->setMainWidget(m_iconSelector); - -- QListBox *shownListBox = m_iconSelector->availableListBox(); -- QListBox *hiddenListBox = m_iconSelector->selectedListBox(); -+ QListBox *hiddenListBox = m_iconSelector->availableListBox(); -+ QListBox *shownListBox = m_iconSelector->selectedListBox(); - - TrayEmbedList::const_iterator it = m_shownWins.begin(); - TrayEmbedList::const_iterator itEnd = m_shownWins.end(); -@@ -261,26 +261,48 @@ void SystemTrayApplet::applySettings() - } - - KConfig *conf = config(); -- conf->setGroup("HiddenTrayIcons"); -- QString name; - -- // use the following snippet of code someday to implement ordering -- // of icons -- /* -- m_visibleIconList.clear(); -- QListBoxItem* item = m_iconSelector->availableListBox()->firstItem(); -- for (; item; item = item->next()) -+ // Save the sort order and hidden status using the window class (WM_CLASS) rather -+ // than window name (caption) - window name is i18n-ed, so it's for example -+ // not possible to create default settings. -+ // For backwards compatibility, name is kept as it is, class is preceded by '!'. -+ QMap< QString, QString > windowNameToClass; -+ for( TrayEmbedList::ConstIterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo( (*it)->embeddedWinId(), NET::WMName, NET::WM2WindowClass); -+ windowNameToClass[ info.name() ] = '!' + info.windowClassClass(); -+ } -+ for( TrayEmbedList::ConstIterator it = m_hiddenWins.begin(); -+ it != m_hiddenWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo( (*it)->embeddedWinId(), NET::WMName, NET::WM2WindowClass); -+ windowNameToClass[ info.name() ] = '!' + info.windowClassClass(); -+ } -+ -+ conf->setGroup("SortedTrayIcons"); -+ m_sortOrderIconList.clear(); -+ for(QListBoxItem* item = m_iconSelector->selectedListBox()->firstItem(); -+ item; -+ item = item->next()) - { -- m_visibleIconList.append(item->text()); -+ if( windowNameToClass.contains(item->text())) -+ m_sortOrderIconList.append(windowNameToClass[item->text()]); -+ else -+ m_sortOrderIconList.append(item->text()); - } -- conf->writeEntry("Visible", m_visibleIconList); -- selection.clear();*/ -+ conf->writeEntry("SortOrder", m_sortOrderIconList); - -+ conf->setGroup("HiddenTrayIcons"); - m_hiddenIconList.clear(); -- QListBoxItem* item = m_iconSelector->selectedListBox()->firstItem(); -- for (; item; item = item->next()) -+ for(QListBoxItem* item = m_iconSelector->availableListBox()->firstItem(); -+ item; -+ item = item->next()) - { -- m_hiddenIconList.append(item->text()); -+ if( windowNameToClass.contains(item->text())) -+ m_hiddenIconList.append(windowNameToClass[item->text()]); -+ else -+ m_hiddenIconList.append(item->text()); - } - conf->writeEntry("Hidden", m_hiddenIconList); - conf->sync(); -@@ -416,6 +438,9 @@ void SystemTrayApplet::loadSettings() - conf->setGroup("HiddenTrayIcons"); - m_hiddenIconList = conf->readListEntry("Hidden"); - -+ conf->setGroup("SortedTrayIcons"); -+ m_sortOrderIconList = conf->readListEntry("SortOrder"); -+ - //Note This setting comes from kdeglobal. - conf->setGroup("System Tray"); - m_iconSize = conf->readNumEntry("systrayIconWidth", 22); -@@ -505,7 +530,9 @@ bool SystemTrayApplet::isWinManaged(WId - - bool SystemTrayApplet::shouldHide(WId w) - { -- return m_hiddenIconList.find(KWin::windowInfo(w).name()) != m_hiddenIconList.end(); -+ return m_hiddenIconList.find(KWin::windowInfo(w).name()) != m_hiddenIconList.end() -+ || m_hiddenIconList.find('!'+KWin::windowInfo(w,0,NET::WM2WindowClass).windowClassClass()) -+ != m_hiddenIconList.end(); - } - - void SystemTrayApplet::updateVisibleWins() -@@ -529,6 +556,35 @@ void SystemTrayApplet::updateVisibleWins - (*emb)->hide(); - } - } -+ -+ QMap< QXEmbed*, QString > names; // cache window names and classes -+ QMap< QXEmbed*, QString > classes; -+ for( TrayEmbedList::const_iterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo((*it)->embeddedWinId(),NET::WMName,NET::WM2WindowClass); -+ names[ *it ] = info.name(); -+ classes[ *it ] = '!'+info.windowClassClass(); -+ } -+ TrayEmbedList newList; -+ for( QStringList::const_iterator it1 = m_sortOrderIconList.begin(); -+ it1 != m_sortOrderIconList.end(); -+ ++it1 ) { -+ for( TrayEmbedList::iterator it2 = m_shownWins.begin(); -+ it2 != m_shownWins.end(); -+ ) { -+ if( (*it1).startsWith("!") ? classes[ *it2 ] == *it1 : names[ *it2 ] == *it1 ) { -+ newList.append( *it2 ); // don't bail out, there may be multiple ones -+ it2 = m_shownWins.erase( it2 ); -+ } else -+ ++it2; -+ } -+ } -+ for( TrayEmbedList::const_iterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) -+ newList.append( *it ); // append unsorted items -+ m_shownWins = newList; - } - - void SystemTrayApplet::toggleExpanded() -Index: kicker/applets/systemtray/systemtrayapplet.h -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.h.orig -+++ kicker/applets/systemtray/systemtrayapplet.h -@@ -97,6 +97,7 @@ private: - TrayEmbedList m_shownWins; - TrayEmbedList m_hiddenWins; - QStringList m_hiddenIconList; -+ QStringList m_sortOrderIconList; - KWinModule *kwin_module; - Atom net_system_tray_selection; - Atom net_system_tray_opcode; |