From 97c65270b2d50c99da341da6c04f86a5644b4b4b Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 7 Apr 2013 16:25:16 -0500 Subject: Wait for all kicker containers to load before sending desktop size to kdesktop This resolves a long standing bug where icons would not stay put across logout / login cycles Properly handle desktop area changes when align to grid is enabled --- kdesktop/desktop.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'kdesktop/desktop.cc') diff --git a/kdesktop/desktop.cc b/kdesktop/desktop.cc index 45ae1e8e5..b3893c029 100644 --- a/kdesktop/desktop.cc +++ b/kdesktop/desktop.cc @@ -346,7 +346,8 @@ void KDesktop::slotNoKicker() kdDebug(1204) << "KDesktop::slotNoKicker ... kicker did not respond" << endl; // up till now, we got no desktopIconsArea from kicker - probably // it's not running, so use the area from KWinModule - m_pIconView->updateWorkArea(twinModule()->workArea(twinModule()->currentDesktop())); + TQRect area = twinModule()->workArea(twinModule()->currentDesktop()); + m_pIconView->updateWorkArea(area); } void @@ -908,8 +909,9 @@ void KDesktop::desktopIconsAreaChanged(const TQRect &area, int screen) // This is pretty broken, mixes Xinerama and non-Xinerama multihead // and generally doesn't seem to be required anyway => ignore screen. - if ( /*(screen == kdesktop_screen_number) &&*/ m_pIconView ) + if ( /*(screen == kdesktop_screen_number) &&*/ m_pIconView ) { m_pIconView->updateWorkArea(area); + } } void KDesktop::slotSwitchDesktops(int delta) @@ -1120,7 +1122,9 @@ void KDesktop::desktopResized() res >> area; } else + { area = twinModule()->workArea(twinModule()->currentDesktop()); + } m_pIconView->updateWorkArea(area); m_pIconView->startDirLister(); -- cgit v1.2.1