SVN commit 916726 by aseigo: this fixes the pager from consta-painting ;) and chewing cpu; not resizing directly probably isn't always correct and may need a more involved fix, but at least now you can have your cpu back ;) M +25 -13 pager.cpp M +1 -0 pager.h --- trunk/KDE/kdebase/workspace/plasma/applets/pager/pager.cpp #916725:916726 @@ -67,7 +67,8 @@ m_dirtyDesktop(-1), m_dragStartDesktop(-1), m_dragHighlightedDesktop(-1), - m_dragSwitchDesktop(-1) + m_dragSwitchDesktop(-1), + m_ignoreNextSizeConstraint(false) { setAcceptsHoverEvents(true); setAcceptDrops(true); @@ -141,13 +142,19 @@ void Pager::constraintsEvent(Plasma::Constraints constraints) { if (constraints & Plasma::SizeConstraint) { - recalculateGeometry(); - recalculateWindowRects(); - if (m_background->hasElementPrefix(QString())) { - m_background->setElementPrefix(QString()); - m_background->resizeFrame(size()); + if (m_ignoreNextSizeConstraint) { + kDebug() << "ignoring size constraint"; + m_ignoreNextSizeConstraint = false; + } else { + recalculateGeometry(); + recalculateWindowRects(); + if (m_background->hasElementPrefix(QString())) { + m_background->setElementPrefix(QString()); + m_background->resizeFrame(size()); + } } } + if (constraints & Plasma::FormFactorConstraint) { if (formFactor() == Plasma::Horizontal) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); @@ -325,7 +332,7 @@ //kDebug() << "new size set" << m_size << m_rows << m_columns << columns << itemWidth; - resize(m_size); + //resize(m_size); setPreferredSize(m_size); if (m_desktopLayoutOwner && columns != m_columns) { // must own manager selection before setting global desktop layout @@ -334,6 +341,8 @@ NETRootInfo i( QX11Info::display(), 0 ); i.setDesktopLayout( orient, columns, rows, NET::DesktopLayoutCornerTopLeft ); } + + m_ignoreNextSizeConstraint = true; } void Pager::recalculateWindowRects() @@ -343,10 +352,14 @@ for (int i = 0; i < m_desktopCount; i++) { m_windowRects.append(QList >()); } + m_activeWindows.clear(); m_windowInfo.clear(); - foreach(WId window, windows) { - KWindowInfo info = KWindowSystem::windowInfo(window, NET::WMGeometry | NET::WMFrameExtents | NET::WMWindowType | NET::WMDesktop | NET::WMState | NET::XAWMState | NET::WMVisibleName); + + foreach (WId window, windows) { + KWindowInfo info = KWindowSystem::windowInfo(window, NET::WMGeometry | NET::WMFrameExtents | + NET::WMWindowType | NET::WMDesktop | + NET::WMState | NET::XAWMState | NET::WMVisibleName); NET::WindowType type = info.windowType(NET::NormalMask | NET::DialogMask | NET::OverrideMask | NET::UtilityMask | NET::DesktopMask | NET::DockMask | NET::TopMenuMask | NET::SplashMask | NET::ToolbarMask | @@ -395,13 +408,12 @@ DisplayedText displayedText; - if (ui.desktopNumberRadioButton->isChecked()){ + if (ui.desktopNumberRadioButton->isChecked()) { displayedText = Number; - }else if (ui.desktopNameRadioButton->isChecked()){ + } else if (ui.desktopNameRadioButton->isChecked()) { displayedText = Name; - - }else{ + } else { displayedText = None; } --- trunk/KDE/kdebase/workspace/plasma/applets/pager/pager.h #916725:916726 @@ -146,6 +146,7 @@ // desktop switching on drop event int m_dragSwitchDesktop; QTimer* m_dragSwitchTimer; + bool m_ignoreNextSizeConstraint; static const int s_FadeInDuration = 50; static const int s_FadeOutDuration = 100;