Commit the following patch from Bug 1499:

tdebase: fix kdesktop resize bug
pull/2/head
Timothy Pearson 11 years ago
parent d9227036c7
commit 4d21a120d2

@ -118,6 +118,7 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule
/*CrossFade's config*/ /*CrossFade's config*/
m_crossTimer = new TQTimer(this); m_crossTimer = new TQTimer(this);
connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout())); connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout()));
resizingDesktop = true;
/*Ends here*/ /*Ends here*/
@ -351,6 +352,7 @@ void KBackgroundManager::slotChangeNumberOfDesktops(int num)
*/ */
void KBackgroundManager::slotChangeDesktop(int desk) void KBackgroundManager::slotChangeDesktop(int desk)
{ {
resizingDesktop = true;
TQSize s(m_pKwinmodule->numberOfViewports(m_pKwinmodule->currentDesktop())); TQSize s(m_pKwinmodule->numberOfViewports(m_pKwinmodule->currentDesktop()));
m_numberOfViewports = s.width() * s.height(); m_numberOfViewports = s.width() * s.height();
if (m_numberOfViewports < 1) { if (m_numberOfViewports < 1) {
@ -631,11 +633,11 @@ void KBackgroundManager::slotImageDone(int desk)
m_numberOfViewports = 1; m_numberOfViewports = 1;
t_useViewports = 0; t_useViewports = 0;
} }
KPixmap *pm = new KPixmap(); KPixmap *pm = new KPixmap();
KVirtualBGRenderer *r = m_Renderer[desk]; KVirtualBGRenderer *r = m_Renderer[desk];
bool do_cleanup = true; bool do_cleanup = true;
fadeDesk = desk; fadeDesk = desk;
mAlpha = 1.0; mAlpha = 1.0;
int width,height; int width,height;
@ -646,7 +648,7 @@ void KBackgroundManager::slotImageDone(int desk)
if (current) if (current)
{ {
//START //START
if (m_Renderer[effectiveDesktop()]->renderer(0)->crossFadeBg() && !m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){ if (m_Renderer[effectiveDesktop()]->renderer(0)->crossFadeBg() && !m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml() && !resizingDesktop) {
int mode = m_Renderer[effectiveDesktop()]->renderer(0)->wallpaperMode(); int mode = m_Renderer[effectiveDesktop()]->renderer(0)->wallpaperMode();
width = TQApplication::desktop()->screenGeometry().width(); width = TQApplication::desktop()->screenGeometry().width();
height = TQApplication::desktop()->screenGeometry().height(); height = TQApplication::desktop()->screenGeometry().height();
@ -654,7 +656,7 @@ void KBackgroundManager::slotImageDone(int desk)
if (mode == KBackgroundSettings::NoWallpaper || mode == KBackgroundSettings::Tiled || mode == KBackgroundSettings::CenterTiled ){ if (mode == KBackgroundSettings::NoWallpaper || mode == KBackgroundSettings::Tiled || mode == KBackgroundSettings::CenterTiled ){
mNextScreen = TQPixmap(width,height); mNextScreen = TQPixmap(width,height);
TQPainter p (&mNextScreen); TQPainter p (&mNextScreen);
p.drawTiledPixmap(0,0,width,height,*pm); p.drawTiledPixmap(0,0,width,height,*pm);
} else { } else {
mNextScreen = TQPixmap(*pm); mNextScreen = TQPixmap(*pm);
} }
@ -700,6 +702,8 @@ void KBackgroundManager::slotImageDone(int desk)
r->saveCacheFile(); r->saveCacheFile();
r->cleanup(); r->cleanup();
} }
resizingDesktop = false;
} }
@ -1004,6 +1008,7 @@ void KBackgroundManager::repaintBackground()
void KBackgroundManager::desktopResized() void KBackgroundManager::desktopResized()
{ {
resizingDesktop = true;
for (unsigned i=0; i<m_Renderer.size(); i++) for (unsigned i=0; i<m_Renderer.size(); i++)
{ {
KVirtualBGRenderer * r = m_Renderer[i]; KVirtualBGRenderer * r = m_Renderer[i];
@ -1025,8 +1030,12 @@ void KBackgroundManager::desktopResized()
#endif #endif
m_Hash = 0; m_Hash = 0;
if( m_pDesktop ) if( m_pDesktop ) {
m_pDesktop->resize( kapp->desktop()->geometry().size()); m_pDesktop->resize( kapp->desktop()->geometry().size());
if (m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){
m_Renderer[effectiveDesktop()]->renderer(0)->changeWallpaper();
}
}
// Repaint desktop // Repaint desktop
slotChangeDesktop(0); slotChangeDesktop(0);
repaintBackground(); repaintBackground();

@ -142,6 +142,7 @@ private:
int fadeDesk; int fadeDesk;
TQTime mBenchmark; TQTime mBenchmark;
bool crossInit; bool crossInit;
bool resizingDesktop; // is True if desktop is resizing
}; };
#endif // __BGMANAGER_H__ #endif // __BGMANAGER_H__

Loading…
Cancel
Save