diff options
Diffstat (limited to 'redhat/tdebase')
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-bookmark_global_copy.patch | 27 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-default_menu_icon.patch | 20 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-displayconfig_translation.patch | 37 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch | 20 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch~ | 20 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch | 1002 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch~ | 1002 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kickoff_default_favs.patch | 16 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-kickoff_xdg_dirs.patch | 45 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-konsole_wordseps.patch | 48 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-open_terminal_here.patch | 11 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-suspend_unmount.patch | 151 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0-vibrate_dialog.patch | 186 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-14.0.0.spec | 49 | ||||
-rw-r--r-- | redhat/tdebase/tdebase-3.5.13.2-kdesktop_crossfade.patch | 2 |
15 files changed, 2633 insertions, 3 deletions
diff --git a/redhat/tdebase/tdebase-14.0.0-bookmark_global_copy.patch b/redhat/tdebase/tdebase-14.0.0-bookmark_global_copy.patch new file mode 100644 index 000000000..0f8a68045 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-bookmark_global_copy.patch @@ -0,0 +1,27 @@ +--- ./libkonq/konqbookmarkmanager.h.ori 2013-05-08 23:26:03.558587419 +0200 ++++ ./libkonq/konqbookmarkmanager.h 2013-05-08 23:29:25.317517880 +0200 +@@ -3,6 +3,8 @@ + + #include <kbookmarkmanager.h> + #include <kstandarddirs.h> ++#include <kurl.h> ++#include <tdeio/job.h> + #include <libkonq_export.h> + + class LIBKONQ_EXPORT KonqBookmarkManager +@@ -11,7 +13,14 @@ + static KBookmarkManager * self() { + if ( !s_bookmarkManager ) + { +- TQString bookmarksFile = locateLocal("data", TQString::fromLatin1("konqueror/bookmarks.xml")); ++ TQString globalBookmarkFile = locate( "data", TQString::fromLatin1( "konqueror/bookmarks.xml" ) ); ++ TQString bookmarksFile = locateLocal( "data", TQString::fromLatin1("konqueror/bookmarks.xml" ), true); ++ if ( globalBookmarkFile != TQString::null && bookmarksFile == TQString::null ) { ++ TDEIO::file_copy( ++ KURL::fromPathOrURL( globalBookmarkFile ), ++ KURL::fromPathOrURL( bookmarksFile ), -1, false, false ++ ); ++ } + s_bookmarkManager = KBookmarkManager::managerForFile( bookmarksFile ); + } + return s_bookmarkManager; diff --git a/redhat/tdebase/tdebase-14.0.0-default_menu_icon.patch b/redhat/tdebase/tdebase-14.0.0-default_menu_icon.patch new file mode 100644 index 000000000..d2e7bb520 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-default_menu_icon.patch @@ -0,0 +1,20 @@ +--- trinity-tdebase-14.0.0~pre737+02bf1e69/starttde.ORI 2013-07-07 20:01:47.656584924 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/starttde 2013-07-07 20:04:37.039608089 +0200 +@@ -347,6 +347,17 @@ + fi + fi + ++# Default Start Button icon for TDE ++if [ ! -e $tdehome/share/config/kickerrc ]; then ++ if [ -r "%{tde_starticon}" ]; then ++ cat <<EOF >$tdehome/share/config/kickerrc ++[KMenu] ++CustomIcon=%{tde_starticon} ++EOF ++ fi ++fi ++ ++ + # XCursor mouse theme needs to be applied here to work even for kded or ksmserver. + if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then + kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize" diff --git a/redhat/tdebase/tdebase-14.0.0-displayconfig_translation.patch b/redhat/tdebase/tdebase-14.0.0-displayconfig_translation.patch new file mode 100644 index 000000000..8440308ec --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-displayconfig_translation.patch @@ -0,0 +1,37 @@ +--- trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/displayconfig/displayconfig.desktop.ORI 2013-05-11 14:53:30.914170537 +0200 ++++ trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/displayconfig/displayconfig.desktop 2013-05-11 14:53:59.495582944 +0200 +@@ -2,6 +2,7 @@ + Categories=Qt;TDE;X-TDE-settings-system; + Comment=Configure display + Comment[en_US]=Configure display ++Comment[fr]=Configuration de l'affichage + DocPath=kcontrol/displayconfig.html + Exec=tdecmshell displayconfig + GenericName= +@@ -11,6 +12,7 @@ + MimeType= + Name=Monitor & Display + Name[en_US]=Monitor & Display ++Name[fr]=Moniteurs & Affichage + NoDisplay=false + Path= + StartupNotify=true +--- trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/iccconfig/iccconfig.desktop.ORI 2013-05-11 21:21:04.241337141 +0200 ++++ trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/iccconfig/iccconfig.desktop 2013-05-11 21:21:44.782537929 +0200 +@@ -12,6 +12,7 @@ + Categories=Qt;TDE;X-TDE-settings-hardware; + Comment=Configure display ICC profile + Comment[en_US]=Configure display ICC profile ++Comment[fr]=Configurer les profils de couleurs ICC + DocPath=kcontrol/iccconfig.html + GenericName= + GenericName[en_US]= +@@ -19,5 +20,6 @@ + MimeType= + Name=ICC Color Profile + Name[en_US]=ICC Color Profile ++Name[fr]=Profils de couleurs ICC + +-NoDisplay=false +\ Pas de fin de ligne à la fin du fichier ++NoDisplay=false diff --git a/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch b/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch new file mode 100644 index 000000000..0d73de5a4 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch @@ -0,0 +1,20 @@ +--- ./kcontrol/kcontrol/KControl.desktop~ 2013-01-09 02:12:13.000000000 +0100 ++++ ./kcontrol/kcontrol/KControl.desktop 2013-05-08 17:55:54.250733219 +0200 +@@ -5,7 +5,7 @@ + DocPath=kcontrol/index.html + X-TDE-StartupNotify=true + +-Name=Control Center ++Name=Trinity Control Center + Name[af]=Beheer Sentrum + Name[ar]=مركز التحكم + Name[az]=İdarə Mərkəzi +@@ -28,7 +28,7 @@ + Name[eu]=Kontrol gunea + Name[fa]=مرکز کنترل + Name[fi]=Ohjauskeskus +-Name[fr]=Centre de configuration de TDE ++Name[fr]=Centre de configuration de Trinity + Name[fy]=Konfiguraasjesintrum + Name[ga]=Lárionad Rialaithe + Name[gl]=Centro de Control diff --git a/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch~ b/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch~ new file mode 100644 index 000000000..cdef8e5a7 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kcontrol_menu_entry.patch~ @@ -0,0 +1,20 @@ +--- ./kcontrol/kcontrol/KControl.desktop~ 2013-01-09 02:12:13.000000000 +0100 ++++ ./kcontrol/kcontrol/KControl.desktop 2013-05-08 17:55:54.250733219 +0200 +@@ -5,7 +5,7 @@ + DocPath=kcontrol/index.html + X-KDE-StartupNotify=true + +-Name=Control Center ++Name=Trinity Control Center + Name[af]=Beheer Sentrum + Name[ar]=مركز التحكم + Name[az]=İdarə Mərkəzi +@@ -28,7 +28,7 @@ + Name[eu]=Kontrol gunea + Name[fa]=مرکز کنترل + Name[fi]=Ohjauskeskus +-Name[fr]=Centre de configuration de KDE ++Name[fr]=Centre de configuration de Trinity + Name[fy]=Konfiguraasjesintrum + Name[ga]=Lárionad Rialaithe + Name[gl]=Centro de Control diff --git a/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch b/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch new file mode 100644 index 000000000..4349589b2 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch @@ -0,0 +1,1002 @@ +diff -p -up kdebase-3.5.9/kcontrol/background/crossfade.h.crossfade-efect kdebase-3.5.9/kcontrol/background/crossfade.h +--- kdebase-3.5.9/kcontrol/background/crossfade.h.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/crossfade.h 2008-03-11 09:17:29.000000000 -0300 +@@ -0,0 +1,56 @@ ++/* vi: ts=8 sts=4 sw=4 ++ * kate: space-indent on; tab-width 8; indent-width 4; indent-mode cstyle; ++ * ++ * This file is part of the KDE project, module kdesktop. ++ * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> ++ * ++ * You can Freely distribute this program under the GNU General Public ++ * License. See the file "COPYING" for the exact licensing terms. ++ */ ++ ++#ifndef __crossfade_h_Included__ ++#define __crossfade_h_Included__ ++ ++#include <tqtimer.h> ++#include <tqpainter.h> ++#include <tqpixmap.h> ++#include <X11/X.h> ++#include <X11/Xlib.h> ++#include <X11/Xatom.h> ++#include <X11/extensions/Xrender.h> ++#include <kdebug.h> ++#include <unistd.h> ++ ++ ++ ++inline TQPixmap crossFade(const TQPixmap &pix1, const TQPixmap &pix2, double r_alpha, ++ bool sync = false){ ++ ++ TQPixmap pix = TQPixmap(1,1,8); ++ int mw,mh; ++ mw = pix1.width(); ++ mh = pix1.height(); ++ ++ int alpha = 0xffff * (1-r_alpha); ++ ++ XRenderColor clr = { 0, 0, 0, alpha }; ++ XRenderPictureAttributes pa; ++ pa.repeat = True; ++ Picture pic = XRenderCreatePicture(pix.x11Display(), pix.handle(), ++ XRenderFindStandardFormat (pix.x11Display(), PictStandardA8), ++ CPRepeat, &pa); ++ XRenderFillRectangle(pix.x11Display(), PictOpSrc, pic, ++ &clr, 0, 0, 1, 1); ++ TQPixmap dst(pix1); ++ dst.detach(); ++ XRenderComposite(pix.x11Display(), PictOpOver, pix2.x11RenderHandle(), ++ pic, dst.x11RenderHandle(),0,0, 0,0, 0,0, mw,mh); ++ ++ if (sync) { ++ XSync(pix.x11Display(), false); ++ } ++ XRenderFreePicture(pix.x11Display(), pic); ++ return dst; ++} ++ ++#endif // __crossfade_h_Included__ +--- ./kcontrol/background/CMakeLists.txt.ORI 2013-05-08 18:36:33.605165935 +0200 ++++ ./kcontrol/background/CMakeLists.txt 2013-05-08 18:37:55.448537081 +0200 +@@ -28,7 +28,7 @@ + ##### bgnd (static) ############################# + + tde_add_library( bgnd STATIC_PIC AUTOMOC +- SOURCES bgrender.cpp bgsettings.cpp ++ SOURCES bgrender.cpp bgsettings.cpp KCrossBGRender.cc + LINK ${LIBART_LIBRARIES} + ) + +--- ./kcontrol/background/bgrender.cpp.ORI 2013-05-08 18:39:20.212849124 +0200 ++++ ./kcontrol/background/bgrender.cpp 2013-05-08 18:44:04.200187009 +0200 +@@ -10,6 +10,8 @@ + + #include <config.h> + ++#include "KCrossBGRender.h" ++ + #include <time.h> + #include <stdlib.h> + #include <utime.h> +@@ -1061,7 +1063,7 @@ + } + + +-KBackgroundRenderer * KVirtualBGRenderer::renderer(unsigned screen) ++KCrossBGRender * KVirtualBGRenderer::renderer(unsigned screen) + { + return m_renderer[screen]; + } +@@ -1220,7 +1222,8 @@ + for (unsigned i=0; i<m_numRenderers; ++i) + { + int eScreen = m_bCommonScreen ? 0 : i; +- KBackgroundRenderer * r = new KBackgroundRenderer( m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig ); ++ //KBackgroundRenderer * r = new KBackgroundRenderer( m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig ); ++ KCrossBGRender *r = new KCrossBGRender(m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig); + m_renderer.insert( i, r ); + r->setSize(renderSize(i)); + connect( r, TQT_SIGNAL(imageDone(int,int)), this, TQT_SLOT(screenDone(int,int)) ); +@@ -1250,7 +1253,8 @@ + Q_UNUSED(_desk); + Q_UNUSED(_screen); + +- const KBackgroundRenderer * sender = dynamic_cast<const KBackgroundRenderer*>(this->sender()); ++ //const KBackgroundRenderer * sender = dynamic_cast<const KBackgroundRenderer*>(this->sender()); ++ const KCrossBGRender * sender = dynamic_cast<const KCrossBGRender*>(this->sender()); + int screen = m_renderer.find(sender); + if (screen == -1) + //?? +--- kdebase-3.5.9/kcontrol/background/KCrossBGRender.h.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/KCrossBGRender.h 2008-03-11 10:50:24.000000000 -0300 +@@ -0,0 +1,76 @@ ++/* ++ * Copyright (C) 2008 Danilo Cesar Lemes de Paula <danilo@mandriva.com> ++ * Copyright (C) 2008 Gustavo Boiko <boiko@mandriva.com> ++ * Mandriva Conectiva ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License version 2 as published by the Free Software Foundation. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public License ++ * along with this library; see the file COPYING.LIB. If not, write to ++ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __KCrossBGRender_h_Included__ ++#define __KCrossBGRender_h_Included__ ++ ++ ++#include <tqvaluelist.h> ++#include <tqpixmap.h> ++#include <tqvaluelist.h> ++#include <tqdatetime.h> ++ ++#include "bgrender.h" ++ ++class TQDomElement; ++ ++typedef struct crossEvent{ ++ bool transition; ++ TQString pix1; ++ TQString pix2; ++ TQTime stime; //start time ++ TQTime etime; //end time ++} KBGCrossEvent; ++ ++ ++class KCrossBGRender: public KBackgroundRenderer{ ++ ++TQ_OBJECT ++ ++public: ++ KCrossBGRender(int desk, int screen, bool drawBackgroundPerScreen, TDEConfig *config=0); ++ ~KCrossBGRender(); ++ ++ bool needWallpaperChange(); ++ void changeWallpaper(bool init=false); ++ TQPixmap pixmap(); ++ bool usingCrossXml(){return useCrossEfect;}; ++ ++ ++private: ++ TQPixmap pix; ++ int secs; ++ TQString xmlFileName; ++ bool useCrossEfect; ++ ++ int actualPhase; ++ ++ void createStartTime(TQDomElement e); ++ void createTransition(TQDomElement e); ++ void createStatic(TQDomElement e); ++ bool setCurrentEvent(bool init = false); ++ void initCrossFade(TQString xml); ++ void fixEnabled(); ++ TQPixmap getCurrentPixmap(); ++ KBGCrossEvent current; ++ TQValueList<KBGCrossEvent> timeList; ++}; ++ ++#endif // __KCrossBGRender_h_Included__ +--- ./kcontrol/background/bgrender.h.ORI 2013-05-08 18:46:41.122053931 +0200 ++++ ./kcontrol/background/bgrender.h 2013-05-08 18:49:07.510128486 +0200 +@@ -28,6 +28,7 @@ + class KTempFile; + class KShellProcess; + class TDEStandardDirs; ++class KCrossBGRender; + + /** + * This class renders a desktop background to a TQImage. The operation is +@@ -127,7 +128,7 @@ + KVirtualBGRenderer(int desk, TDEConfig *config=0l); + ~KVirtualBGRenderer(); + +- KBackgroundRenderer * renderer(unsigned screen); ++ KCrossBGRender * renderer(unsigned screen); + unsigned numRenderers() const { return m_numRenderers; } + + TQPixmap pixmap(); +@@ -173,7 +174,8 @@ + TQSize m_size; + + TQMemArray<bool> m_bFinished; +- TQPtrVector<KBackgroundRenderer> m_renderer; ++ //TQPtrVector<KBackgroundRenderer> m_renderer; ++ TQPtrVector<KCrossBGRender> m_renderer; + TQPixmap *m_pPixmap; + }; + +diff -p -up kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc.crossfade-efect kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc +--- kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc 2008-03-11 10:54:41.000000000 -0300 +@@ -0,0 +1,362 @@ ++/* ++ * Copyright (C) 2008 Danilo Cesar Lemes de Paula <danilo@mandriva.com> ++ * Copyright (C) 2008 Gustavo Boiko <boiko@mandriva.com> ++ * Mandriva Conectiva ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License version 2 as published by the Free Software Foundation. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public License ++ * along with this library; see the file COPYING.LIB. If not, write to ++ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#include <tqdom.h> ++#include <tqfile.h> ++ ++#include <kdebug.h> ++ ++#include "KCrossBGRender.h" ++//#include "crossfade.h" ++#include <tqapplication.h> ++#include <kimageeffect.h> ++ ++ ++KCrossBGRender::KCrossBGRender(int desk, int screen, bool drawBackgroundPerScreen, TDEConfig *config): KBackgroundRenderer(desk,screen,drawBackgroundPerScreen,config) ++{ ++ useCrossEfect = false; ++ if ( wallpaperList()[0].endsWith("xml",false) ) { ++ initCrossFade(wallpaperList()[0]); ++ } ++} ++ ++ ++void KCrossBGRender::initCrossFade(TQString xmlFile) ++{ ++ useCrossEfect = true; ++ if (xmlFile.isEmpty()){ ++ useCrossEfect = false; ++ return; ++ } ++ secs = 0; ++ timeList.empty(); ++ ++ // read the XMLfile ++ TQDomDocument xmldoc = TQDomDocument(xmlFile); ++ TQFile file( xmlFile ); ++ if ( !file.open( IO_ReadOnly ) ) { ++ useCrossEfect = false; ++ return; ++ } ++ if ( !xmldoc.setContent( &file ) ) { ++ useCrossEfect = false; ++ file.close(); ++ return; ++ } ++ file.close(); ++ ++ TQDomElement docElem = xmldoc.documentElement(); ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); // try to convert the node to an element. ++ if( !e.isNull() ) { ++ if (e.tagName() == "starttime") { ++ createStartTime(e); ++ } else if (e.tagName() == "transition") { ++ createTransition(e); ++ } else if (e.tagName() == "static") { ++ createStatic(e); ++ } ++ } ++ n = n.nextSibling(); ++ } ++ ++ // Setting "now" state ++ setCurrentEvent(true); ++ pix = getCurrentPixmap(); ++ ++ useCrossEfect = true; ++} ++ ++ ++KCrossBGRender::~KCrossBGRender(){ ++} ++ ++TQPixmap KCrossBGRender::pixmap() { ++ fixEnabled(); ++ if (!useCrossEfect){ ++ TQPixmap p = KBackgroundRenderer::pixmap(); ++ kdDebug() << "Inherited " << p.size() << endl; ++ if (p.width() == 0 && p.height() == 0){ ++ p.convertFromImage(image()); ++ } ++ return p; ++ } ++ ++ return pix; ++} ++ ++bool KCrossBGRender::needWallpaperChange(){ ++ if (!useCrossEfect) { ++ return KBackgroundRenderer::needWallpaperChange(); ++ } ++ ++ bool forceChange = setCurrentEvent(); // If we change the current state ++ if (forceChange){ // do not matter what hapens ++ actualPhase = 0; // we need to change background ++ return true; ++ } ++ ++ // Return false if it's not a transition ++ if (!current.transition) { ++ return false; ++ } ++ ++ double timeLeft, timeTotal; ++ TQTime now = TQTime::currentTime(); ++ ++ timeLeft = now.secsTo(current.etime); ++ if (timeLeft < 0) { ++ timeLeft += 86400; // before midnight ++ } ++ timeTotal = current.stime.secsTo(current.etime); ++ if (timeTotal < 0) { ++ timeTotal += 86400; ++ } ++ ++ double passed = timeTotal - timeLeft; ++ double timeCell = timeTotal/60; //Time cell size ++ ++ //kdDebug() << "\ntimeleft:" << timeLeft << " timeTotal:" << timeTotal ++ // << "\npassed:" << passed << " timeCell:" << timeCell ++ // << "\nactualPhase: " << actualPhase << endl; ++ ++ int aux = passed/timeCell; ++ if(actualPhase != aux){ ++ //kdDebug() << "needWallpaperChange() => returned true" << endl; ++ actualPhase = passed/timeCell; ++ return true; ++ } ++ ++ //kdDebug() << "needWallpaperChange() => returned false" << endl; ++ return false; ++} ++ ++/* ++ * This method change the enabledEffect flag to TRUE of FALSE, according ++ * with multiWallpaperMode and FileName (it needs to be a XML) ++ */ ++void KCrossBGRender::fixEnabled(){ ++ ++ ++ TQString w = wallpaperList()[0]; ++ useCrossEfect = false; ++ if(multiWallpaperMode() == Random || multiWallpaperMode() == InOrder){ ++ ++ if ( w != xmlFileName ){ ++ // New XML File ++ xmlFileName = w; ++ if (w.endsWith("xml",false)){ ++ initCrossFade(wallpaperList()[0]); ++ //useCrossEfect = true; ++ }else{ ++ // Not, it's not a xml file ++ useCrossEfect = false; ++ } ++ }else if (w.endsWith("xml",false)){ ++ //xmlFile doesn't change ++ //but it's there ++ useCrossEfect = true; ++ }else{ ++ // it's not a XML file ++ useCrossEfect = false; ++ } ++ } ++} ++ ++void KCrossBGRender::changeWallpaper(bool init){ ++ ++ ++ ++ fixEnabled(); ++ ++ if (!useCrossEfect){ ++ KBackgroundRenderer::changeWallpaper(init); ++ return; ++ } ++ ++ pix = getCurrentPixmap(); ++ ++ ++} ++ ++ ++bool KCrossBGRender::setCurrentEvent(bool init){ ++ TQTime now = TQTime::currentTime(); ++ ++ ++ //Verify if is need to change ++ if (!(init || now <= current.stime || now >= current.etime )) { ++ return false; ++ } ++ ++ TQValueList<KBGCrossEvent>::iterator it; ++ for ( it = timeList.begin(); it != timeList.end(); ++it ){ ++ ++ // Look for time ++ if ( ((*it).stime <= now && now <= (*it).etime) || //normal situation ++ ((*it).etime <= (*it).stime && (now >= (*it).stime || ++ now <= (*it).etime) ) ) ++ { ++ current = *it; ++ actualPhase = 0; ++ ++ //kdDebug() << "Cur: " << current.stime << "< now <" << current.etime << endl; ++ return true; ++ } ++ } ++} ++ ++TQPixmap KCrossBGRender::getCurrentPixmap() ++{ ++ float alpha; ++ TQPixmap ret; ++ TQImage tmp; ++ TQImage p1; ++ if (!tmp.load(current.pix1)) ++ return TQPixmap(); ++ ++ // scale the pixmap to fit in the screen ++ //p1 = TQPixmap(QApplication::desktop()->screenGeometry().size()); ++ //TQPainter p(&p1); ++ //p.drawPixmap(p1.rect(), tmp); ++ // ++ p1 = tmp.smoothScale(TQApplication::desktop()->screenGeometry().size()); ++ ++ if (current.transition){ ++ TQTime now = TQTime::currentTime(); ++ double timeLeft,timeTotal; ++ ++ TQImage p2; ++ ++ if (!tmp.load(current.pix2) ) ++ return NULL; ++ ++ p2 = tmp.smoothScale(TQApplication::desktop()->screenGeometry().size()); ++ //TQPainter p(&p2); ++ //p.drawPixmap(p2.rect(), tmp); ++ ++ timeLeft = now.secsTo(current.etime); ++ if (timeLeft < 0) ++ timeLeft += 86400; ++ timeTotal = current.stime.secsTo(current.etime); ++ if (timeTotal < 0) ++ timeTotal += 86400; ++ ++ alpha = (timeTotal - timeLeft)/timeTotal; ++ ++ //ret = crossFade(p2,p1,alpha); ++ tmp = KImageEffect::blend(p2,p1,alpha); ++ ret.convertFromImage(tmp); ++ return ret; ++ }else{ ++ ret.convertFromImage(p1); ++ return ret; ++ } ++ ++ ++} ++ ++void KCrossBGRender::createStartTime(TQDomElement docElem) ++{ ++ int hour; ++ int minutes; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "hour"){ ++ hour = e.text().toInt(); ++ }else if ( e.tagName() == "minute" ){ ++ minutes = e.text().toInt(); ++ } ++ ++ } ++ ++ n = n.nextSibling(); ++ } ++ secs = hour*60*60 + minutes*60; ++} ++void KCrossBGRender::createTransition(TQDomElement docElem) ++{ ++ int duration; ++ TQString from; ++ TQString to; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "duration"){ ++ duration = e.text().toFloat(); ++ }else if ( e.tagName() == "from" ){ ++ from = e.text(); ++ } ++ else if ( e.tagName() == "to" ){ ++ to = e.text(); ++ } ++ ++ } ++ n = n.nextSibling(); ++ } ++ TQTime startTime(0,0,0); ++ startTime = startTime.addSecs(secs); ++ TQTime endTime(0,0,0); ++ endTime = endTime.addSecs(secs+duration); ++ ++ secs += duration; ++ ++ KBGCrossEvent l = {true, from, to, startTime,endTime}; ++ ++ timeList.append(l); ++ ++} ++void KCrossBGRender::createStatic(TQDomElement docElem) ++{ ++ int duration; ++ TQString file; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "duration"){ ++ duration = e.text().toFloat(); ++ }else if ( e.tagName() == "file" ){ ++ file = e.text(); ++ } ++ ++ } ++ n = n.nextSibling(); ++ } ++ ++ TQTime startTime(0,0,0); ++ startTime = startTime.addSecs(secs); ++ TQTime endTime(0,0,0); ++ endTime = endTime.addSecs(secs+duration); ++ ++ secs += duration; ++ ++ KBGCrossEvent l = {false, file, NULL, startTime,endTime}; ++ timeList.append(l); ++} ++ ++#include "KCrossBGRender.moc" +--- ./tdm/kfrontend/krootimage.h.ORI 2013-05-08 18:54:48.631599139 +0200 ++++ ./tdm/kfrontend/krootimage.h 2013-05-08 18:55:02.365339708 +0200 +@@ -27,6 +27,7 @@ + #include <tqtimer.h> + + #include <bgrender.h> ++#include <KCrossBGRender.h> + + + class MyApplication : public TDEApplication +--- ./kdesktop/bgmanager.cc.ORI 2013-05-08 18:56:29.915684768 +0200 ++++ ./kdesktop/bgmanager.cc 2013-05-08 19:12:04.451954803 +0200 +@@ -16,10 +16,16 @@ + #include "bgsettings.h" + #include "kdesktopapp.h" + ++//FIXME ++#include "KCrossBGRender.h" ++#include "crossfade.h" ++ + #include <assert.h> + + #include <tqtimer.h> + #include <tqscrollview.h> ++#include <tqpainter.h> ++#include <tqdesktopwidget.h> + + #include <kiconloader.h> + #include <tdeconfig.h> +@@ -34,6 +40,8 @@ + #include <X11/X.h> + #include <X11/Xlib.h> + #include <X11/Xatom.h> ++#include <X11/extensions/Xrender.h> ++#include <unistd.h> + + #ifndef None + #define None 0L +@@ -47,7 +55,8 @@ + + #include "pixmapserver.h" + +-template class TQPtrVector<KBackgroundRenderer>; ++//template class TQPtrVector<KBackgroundRenderer>; ++template class TQPtrVector<KCrossBGRender>; + template class TQPtrVector<KBackgroundCacheEntry>; + template class TQMemArray<int>; + +@@ -108,6 +117,12 @@ + connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout())); + m_pTimer->start( 60000 ); + ++ /*CrossFade's config*/ ++ m_crossTimer = new TQTimer(this); ++ connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout())); ++ /*Ends here*/ ++ ++ + connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopChanged(int)), + TQT_SLOT(slotChangeDesktop(int))); + connect(m_pKwinmodule, TQT_SIGNAL(numberOfDesktopsChanged(int)), +@@ -577,6 +592,36 @@ + + + /* ++ * This slot is called when the Timeout is executed ++ */ ++void KBackgroundManager::slotCrossFadeTimeout() ++{ ++ KVirtualBGRenderer *r = m_Renderer[fadeDesk]; ++ if (crossInit) { ++ mBenchmark.start(); ++ } ++ ++ if (mAlpha <= 0.0 || mBenchmark.elapsed() > 300 ) { ++ bool do_cleanup = true; ++ mAlpha = 1; ++ m_crossTimer->stop(); ++ KPixmap pixm(mNextScreen); ++ setPixmap(&pixm, r->hash(), fadeDesk); ++ return; ++ } ++ // Reset Timer ++ mBenchmark.start(); ++ ++ TQPixmap dst = crossFade(*mOldScreen, mNextScreen, mAlpha, crossInit); ++ KPixmap pixm(dst); ++ setPixmap(&pixm, r->hash(), fadeDesk); ++ ++ mAlpha -=0.03; ++ crossInit = false; ++} ++ ++ ++/* + * This slot is called when a renderer is done. + */ + void KBackgroundManager::slotImageDone(int desk) +@@ -592,6 +637,10 @@ + KPixmap *pm = new KPixmap(); + KVirtualBGRenderer *r = m_Renderer[desk]; + bool do_cleanup = true; ++ fadeDesk = desk; ++ mAlpha = 1.0; ++ int width,height; ++ + + *pm = r->pixmap(); + // If current: paint it +@@ -603,7 +652,41 @@ + //setPixmap(viewport_background, r->hash(), desk); + //delete viewport_background; + +- setPixmap(pm, r->hash(), desk); ++ //START ++ if (m_Renderer[effectiveDesktop()]->renderer(0)->crossFadeBg() && !m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){ ++ int mode = m_Renderer[effectiveDesktop()]->renderer(0)->wallpaperMode(); ++ width = TQApplication::desktop()->screenGeometry().width(); //m_pDesktop->width(); ++ height = TQApplication::desktop()->screenGeometry().height();// m_pDesktop->height(); ++ ++ if (mode == KBackgroundSettings::NoWallpaper || mode == KBackgroundSettings::Tiled || mode == KBackgroundSettings::CenterTiled ){ ++ mNextScreen = TQPixmap(width,height); ++ TQPainter p (&mNextScreen); ++ p.drawTiledPixmap(0,0,width,height,*pm); ++ } else { ++ mNextScreen = TQPixmap(*pm); ++ } ++ ++ if (m_pDesktop){ ++ mOldScreen = const_cast<TQPixmap *>( m_pDesktop->backgroundPixmap() ); ++ }else{ ++ mOldScreen = const_cast<TQPixmap *>( ++ TQApplication::desktop()->screen()->backgroundPixmap() ); ++ } ++ ++ //TODO Find a way to discover if CrossFade effect needs to run ++ if (mOldScreen){ ++ crossInit = true; ++ m_crossTimer->start(70); ++ } else{ ++ setPixmap(pm, r->hash(), desk); ++ } ++ }else{ ++ setPixmap(pm, r->hash(), desk); ++ } ++ //ENDS HERE */ ++ ++ //setPixmap(pm, r->hash(), desk); ++ + if (!m_bBgInitDone) + { + m_bBgInitDone = true; +@@ -801,7 +884,8 @@ + TQString KBackgroundManager::currentWallpaper(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ //KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->currentWallpaper(); + } +@@ -818,7 +902,7 @@ + // DCOP exported + void KBackgroundManager::setExport(int _export) + { +- kdDebug() << "KBackgroundManager enabling exports.\n"; ++// kdDebug() << "KBackgroundManager enabling exports.\n"; + applyExport(_export); + slotChangeDesktop(0); + } +@@ -843,7 +927,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + r->setWallpaperMode(mode); + r->setMultiWallpaperMode(KBackgroundSettings::NoMulti); +@@ -856,7 +940,7 @@ + void KBackgroundManager::setWallpaper(TQString wallpaper) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(0); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(0); + int mode = r->wallpaperMode(); + if (mode == KBackgroundSettings::NoWallpaper) + mode = KBackgroundSettings::Tiled; +@@ -869,7 +953,7 @@ + TQStringList KBackgroundManager::wallpaperFiles(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->wallpaperFiles(); + } +@@ -880,7 +964,7 @@ + TQStringList KBackgroundManager::wallpaperList(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0);; ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0);; + + return r->wallpaperList(); + } +@@ -907,7 +991,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[sdesk]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[sdesk]->renderer(i); ++ KCrossBGRender *r = m_Renderer[sdesk]->renderer(i); + + setCommon(false); // Force each desktop to have it's own wallpaper + +@@ -974,7 +1058,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + + if (isColorA) +--- ./kdesktop/bgmanager.h.ORI 2013-05-08 19:13:25.120426716 +0200 ++++ ./kdesktop/bgmanager.h 2013-05-08 19:15:12.071398460 +0200 +@@ -13,6 +13,7 @@ + #include <tqstring.h> + #include <tqptrvector.h> + ++#include <tqdatetime.h> + #include <KBackgroundIface.h> + + #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +@@ -89,6 +90,7 @@ + void desktopResized(); + void clearRoot(); + void saveImages(); ++ void slotCrossFadeTimeout(); + void slotCmBackgroundChanged(bool); + + private: +@@ -131,6 +133,15 @@ + KPixmapServer *m_pPixmapServer; + + unsigned long m_xrootpmap; ++ ++ /*CrossFade vars*/ ++ TQTimer * m_crossTimer; ++ double mAlpha; ++ TQPixmap mNextScreen; ++ TQPixmap * mOldScreen; ++ int fadeDesk; ++ TQTime mBenchmark; ++ bool crossInit; + }; + + #endif // __BGManager_h_Included__ +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog_ui.ui.ORI 2013-05-15 12:13:14.000000000 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog_ui.ui 2013-05-15 12:20:25.000000000 +0000 +@@ -376,6 +376,17 @@ + </ul></qt></string> + </property> + </widget> ++ <widget class="TQCheckBox" row="8" column="1"> ++ <property name="name"> ++ <cstring>m_cbCrossFadeBg</cstring> ++ </property> ++ <property name="text"> ++ <string>Cross-fading background</string> ++ </property> ++ <property name="whatsThis" stdset="0"> ++ <string>Enables a smooth fading effect when changing background image.</string> ++ </property> ++ </widget> + <widget class="TQComboBox" row="5" column="1"> + <property name="name"> + <cstring>m_comboBlend</cstring> +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdefaults.h.ORI 2013-05-15 13:42:20.933760867 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdefaults.h 2013-05-15 13:42:38.305365721 +0000 +@@ -34,5 +34,6 @@ + #define _defBlendMode KBackgroundSettings::NoBlending + #define _defBlendBalance 100 + #define _defReverseBlending false ++#define _defCrossFadeBg false + + #endif // __BGDefaults_h_Included__ +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.h.ORI 2013-05-15 13:37:34.228282617 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.h 2013-05-15 13:39:31.884606381 +0000 +@@ -198,6 +198,9 @@ + void setReverseBlending(bool value); + bool reverseBlending() const { return m_ReverseBlending; } + ++ void setCrossFadeBg(bool value); ++ bool crossFadeBg() const { return m_CrossFadeBg; } ++ + void setBlendBalance(int value); + int blendBalance() const { return m_BlendBalance; } + +@@ -273,6 +276,7 @@ + int m_BlendMode, defBlendMode; + int m_BlendBalance, defBlendBalance; + bool m_ReverseBlending, defReverseBlending; ++ bool m_CrossFadeBg, defCrossFadeBg; + int m_MinOptimizationDepth; + bool m_bShm; + bool m_bDrawBackgroundPerScreen; +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.cpp.ORI 2013-05-15 13:39:59.408980208 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.cpp 2013-05-15 13:46:15.197432823 +0000 +@@ -437,6 +437,7 @@ + defBlendMode = _defBlendMode; + defBlendBalance = _defBlendBalance; + defReverseBlending = _defReverseBlending; ++ defCrossFadeBg = _defCrossFadeBg; + + m_MinOptimizationDepth = _defMinOptimizationDepth; + m_bShm = _defShm; +@@ -537,6 +538,7 @@ + m_BlendMode = settings->m_BlendMode; + m_BlendBalance = settings->m_BlendBalance; + m_ReverseBlending = settings->m_ReverseBlending; ++ m_CrossFadeBg = settings->m_CrossFadeBg; + m_MinOptimizationDepth = settings->m_MinOptimizationDepth; + m_bShm = settings->m_bShm; + m_MultiMode = settings->m_MultiMode; +@@ -633,6 +635,15 @@ + } + + ++void KBackgroundSettings::setCrossFadeBg(bool value) ++{ ++ if (m_CrossFadeBg == value) ++ return; ++ dirty = hashdirty = true; ++ m_CrossFadeBg = value; ++} ++ ++ + void KBackgroundSettings::setWallpaper(TQString wallpaper) + { + dirty = hashdirty = true; +@@ -774,6 +785,8 @@ + + m_ReverseBlending = m_pConfig->readBoolEntry( "ReverseBlending", defReverseBlending); + ++ m_CrossFadeBg = m_pConfig->readBoolEntry( "CrossFadeBg", defCrossFadeBg); ++ + // Multiple wallpaper config + m_WallpaperList = m_pConfig->readPathListEntry("WallpaperList"); + +@@ -834,6 +847,7 @@ + m_pConfig->writeEntry("BlendMode", m_BlMRevMap[m_BlendMode]); + m_pConfig->writeEntry("BlendBalance", m_BlendBalance); + m_pConfig->writeEntry("ReverseBlending", m_ReverseBlending); ++ m_pConfig->writeEntry("CrossFadeBg", m_CrossFadeBg); + m_pConfig->writeEntry("MinOptimizationDepth", m_MinOptimizationDepth); + m_pConfig->writeEntry("UseSHM", m_bShm); + +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.h.ORI 2013-05-15 13:56:09.397921090 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.h 2013-05-15 13:56:17.377739605 +0000 +@@ -80,6 +80,7 @@ + void slotBlendReverse(bool b); + void desktopResized(); + void setBlendingEnabled(bool); ++ void slotCrossFadeBg(bool); + + protected: + void getEScreen(); +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.cpp.ORI 2013-05-15 13:53:49.809095324 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.cpp 2013-05-15 13:53:54.636985486 +0000 +@@ -174,6 +174,10 @@ + connect(m_cbBlendReverse, TQT_SIGNAL(toggled(bool)), + TQT_SLOT(slotBlendReverse(bool))); + ++ // Crossfading background ++ connect(m_cbCrossFadeBg, TQT_SIGNAL(toggled(bool)), ++ TQT_SLOT(slotCrossFadeBg(bool))); ++ + // advanced options + connect(m_buttonAdvanced, TQT_SIGNAL(clicked()), + TQT_SLOT(slotAdvanced())); +@@ -304,6 +308,7 @@ + m_cbBlendReverse->setEnabled( false ); + m_buttonAdvanced->setEnabled( false ); + m_buttonGetNew->setEnabled( false ); ++ m_cbCrossFadeBg->setEnabled( false ); + } + + void BGDialog::load( bool useDefaults ) +@@ -781,6 +786,8 @@ + m_cbBlendReverse->setChecked(r->reverseBlending()); + m_sliderBlend->setValue( r->blendBalance() / 10 ); + ++ m_cbCrossFadeBg->setChecked(r->crossFadeBg()); ++ + m_comboBlend->blockSignals(false); + m_sliderBlend->blockSignals(false); + +@@ -1295,6 +1302,17 @@ + eRenderer()->start(true); + } + ++void BGDialog::slotCrossFadeBg(bool b) ++{ ++ if (b == eRenderer()->crossFadeBg()) ++ return; ++ emit changed(true); ++ ++ eRenderer()->stop(); ++ eRenderer()->setCrossFadeBg(b); ++ eRenderer()->start(true); ++} ++ + void BGDialog::desktopResized() + { + for (unsigned i = 0; i < m_renderer.size(); ++i) diff --git a/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch~ b/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch~ new file mode 100644 index 000000000..3b4e86819 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kdesktop_crossfade.patch~ @@ -0,0 +1,1002 @@ +diff -p -up kdebase-3.5.9/kcontrol/background/crossfade.h.crossfade-efect kdebase-3.5.9/kcontrol/background/crossfade.h +--- kdebase-3.5.9/kcontrol/background/crossfade.h.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/crossfade.h 2008-03-11 09:17:29.000000000 -0300 +@@ -0,0 +1,56 @@ ++/* vi: ts=8 sts=4 sw=4 ++ * kate: space-indent on; tab-width 8; indent-width 4; indent-mode cstyle; ++ * ++ * This file is part of the KDE project, module kdesktop. ++ * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> ++ * ++ * You can Freely distribute this program under the GNU General Public ++ * License. See the file "COPYING" for the exact licensing terms. ++ */ ++ ++#ifndef __crossfade_h_Included__ ++#define __crossfade_h_Included__ ++ ++#include <tqtimer.h> ++#include <tqpainter.h> ++#include <tqpixmap.h> ++#include <X11/X.h> ++#include <X11/Xlib.h> ++#include <X11/Xatom.h> ++#include <X11/extensions/Xrender.h> ++#include <kdebug.h> ++#include <unistd.h> ++ ++ ++ ++inline TQPixmap crossFade(const TQPixmap &pix1, const TQPixmap &pix2, double r_alpha, ++ bool sync = false){ ++ ++ TQPixmap pix = TQPixmap(1,1,8); ++ int mw,mh; ++ mw = pix1.width(); ++ mh = pix1.height(); ++ ++ int alpha = 0xffff * (1-r_alpha); ++ ++ XRenderColor clr = { 0, 0, 0, alpha }; ++ XRenderPictureAttributes pa; ++ pa.repeat = True; ++ Picture pic = XRenderCreatePicture(pix.x11Display(), pix.handle(), ++ XRenderFindStandardFormat (pix.x11Display(), PictStandardA8), ++ CPRepeat, &pa); ++ XRenderFillRectangle(pix.x11Display(), PictOpSrc, pic, ++ &clr, 0, 0, 1, 1); ++ TQPixmap dst(pix1); ++ dst.detach(); ++ XRenderComposite(pix.x11Display(), PictOpOver, pix2.x11RenderHandle(), ++ pic, dst.x11RenderHandle(),0,0, 0,0, 0,0, mw,mh); ++ ++ if (sync) { ++ XSync(pix.x11Display(), false); ++ } ++ XRenderFreePicture(pix.x11Display(), pic); ++ return dst; ++} ++ ++#endif // __crossfade_h_Included__ +--- ./kcontrol/background/CMakeLists.txt.ORI 2013-05-08 18:36:33.605165935 +0200 ++++ ./kcontrol/background/CMakeLists.txt 2013-05-08 18:37:55.448537081 +0200 +@@ -28,7 +28,7 @@ + ##### bgnd (static) ############################# + + tde_add_library( bgnd STATIC_PIC AUTOMOC +- SOURCES bgrender.cpp bgsettings.cpp ++ SOURCES bgrender.cpp bgsettings.cpp KCrossBGRender.cc + LINK ${LIBART_LIBRARIES} + ) + +--- ./kcontrol/background/bgrender.cpp.ORI 2013-05-08 18:39:20.212849124 +0200 ++++ ./kcontrol/background/bgrender.cpp 2013-05-08 18:44:04.200187009 +0200 +@@ -10,6 +10,8 @@ + + #include <config.h> + ++#include "KCrossBGRender.h" ++ + #include <time.h> + #include <stdlib.h> + #include <utime.h> +@@ -1061,7 +1063,7 @@ + } + + +-KBackgroundRenderer * KVirtualBGRenderer::renderer(unsigned screen) ++KCrossBGRender * KVirtualBGRenderer::renderer(unsigned screen) + { + return m_renderer[screen]; + } +@@ -1220,7 +1222,8 @@ + for (unsigned i=0; i<m_numRenderers; ++i) + { + int eScreen = m_bCommonScreen ? 0 : i; +- KBackgroundRenderer * r = new KBackgroundRenderer( m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig ); ++ //KBackgroundRenderer * r = new KBackgroundRenderer( m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig ); ++ KCrossBGRender *r = new KCrossBGRender(m_desk, eScreen, m_bDrawBackgroundPerScreen, m_pConfig); + m_renderer.insert( i, r ); + r->setSize(renderSize(i)); + connect( r, TQT_SIGNAL(imageDone(int,int)), this, TQT_SLOT(screenDone(int,int)) ); +@@ -1250,7 +1253,8 @@ + Q_UNUSED(_desk); + Q_UNUSED(_screen); + +- const KBackgroundRenderer * sender = dynamic_cast<const KBackgroundRenderer*>(this->sender()); ++ //const KBackgroundRenderer * sender = dynamic_cast<const KBackgroundRenderer*>(this->sender()); ++ const KCrossBGRender * sender = dynamic_cast<const KCrossBGRender*>(this->sender()); + int screen = m_renderer.find(sender); + if (screen == -1) + //?? +--- kdebase-3.5.9/kcontrol/background/KCrossBGRender.h.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/KCrossBGRender.h 2008-03-11 10:50:24.000000000 -0300 +@@ -0,0 +1,76 @@ ++/* ++ * Copyright (C) 2008 Danilo Cesar Lemes de Paula <danilo@mandriva.com> ++ * Copyright (C) 2008 Gustavo Boiko <boiko@mandriva.com> ++ * Mandriva Conectiva ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License version 2 as published by the Free Software Foundation. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public License ++ * along with this library; see the file COPYING.LIB. If not, write to ++ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __KCrossBGRender_h_Included__ ++#define __KCrossBGRender_h_Included__ ++ ++ ++#include <tqvaluelist.h> ++#include <tqpixmap.h> ++#include <tqvaluelist.h> ++#include <tqdatetime.h> ++ ++#include "bgrender.h" ++ ++class TQDomElement; ++ ++typedef struct crossEvent{ ++ bool transition; ++ TQString pix1; ++ TQString pix2; ++ TQTime stime; //start time ++ TQTime etime; //end time ++} KBGCrossEvent; ++ ++ ++class KCrossBGRender: public KBackgroundRenderer{ ++ ++TQ_OBJECT ++ ++public: ++ KCrossBGRender(int desk, int screen, bool drawBackgroundPerScreen, KConfig *config=0); ++ ~KCrossBGRender(); ++ ++ bool needWallpaperChange(); ++ void changeWallpaper(bool init=false); ++ TQPixmap pixmap(); ++ bool usingCrossXml(){return useCrossEfect;}; ++ ++ ++private: ++ TQPixmap pix; ++ int secs; ++ TQString xmlFileName; ++ bool useCrossEfect; ++ ++ int actualPhase; ++ ++ void createStartTime(TQDomElement e); ++ void createTransition(TQDomElement e); ++ void createStatic(TQDomElement e); ++ bool setCurrentEvent(bool init = false); ++ void initCrossFade(TQString xml); ++ void fixEnabled(); ++ TQPixmap getCurrentPixmap(); ++ KBGCrossEvent current; ++ TQValueList<KBGCrossEvent> timeList; ++}; ++ ++#endif // __KCrossBGRender_h_Included__ +--- ./kcontrol/background/bgrender.h.ORI 2013-05-08 18:46:41.122053931 +0200 ++++ ./kcontrol/background/bgrender.h 2013-05-08 18:49:07.510128486 +0200 +@@ -28,6 +28,7 @@ + class KTempFile; + class KShellProcess; + class KStandardDirs; ++class KCrossBGRender; + + /** + * This class renders a desktop background to a TQImage. The operation is +@@ -127,7 +128,7 @@ + KVirtualBGRenderer(int desk, KConfig *config=0l); + ~KVirtualBGRenderer(); + +- KBackgroundRenderer * renderer(unsigned screen); ++ KCrossBGRender * renderer(unsigned screen); + unsigned numRenderers() const { return m_numRenderers; } + + TQPixmap pixmap(); +@@ -173,7 +174,8 @@ + TQSize m_size; + + TQMemArray<bool> m_bFinished; +- TQPtrVector<KBackgroundRenderer> m_renderer; ++ //TQPtrVector<KBackgroundRenderer> m_renderer; ++ TQPtrVector<KCrossBGRender> m_renderer; + TQPixmap *m_pPixmap; + }; + +diff -p -up kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc.crossfade-efect kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc +--- kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc.crossfade-efect 2008-03-11 09:17:29.000000000 -0300 ++++ kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc 2008-03-11 10:54:41.000000000 -0300 +@@ -0,0 +1,362 @@ ++/* ++ * Copyright (C) 2008 Danilo Cesar Lemes de Paula <danilo@mandriva.com> ++ * Copyright (C) 2008 Gustavo Boiko <boiko@mandriva.com> ++ * Mandriva Conectiva ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License version 2 as published by the Free Software Foundation. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public License ++ * along with this library; see the file COPYING.LIB. If not, write to ++ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#include <tqdom.h> ++#include <tqfile.h> ++ ++#include <kdebug.h> ++ ++#include "KCrossBGRender.h" ++//#include "crossfade.h" ++#include <tqapplication.h> ++#include <kimageeffect.h> ++ ++ ++KCrossBGRender::KCrossBGRender(int desk, int screen, bool drawBackgroundPerScreen, KConfig *config): KBackgroundRenderer(desk,screen,drawBackgroundPerScreen,config) ++{ ++ useCrossEfect = false; ++ if ( wallpaperList()[0].endsWith("xml",false) ) { ++ initCrossFade(wallpaperList()[0]); ++ } ++} ++ ++ ++void KCrossBGRender::initCrossFade(TQString xmlFile) ++{ ++ useCrossEfect = true; ++ if (xmlFile.isEmpty()){ ++ useCrossEfect = false; ++ return; ++ } ++ secs = 0; ++ timeList.empty(); ++ ++ // read the XMLfile ++ TQDomDocument xmldoc = TQDomDocument(xmlFile); ++ TQFile file( xmlFile ); ++ if ( !file.open( IO_ReadOnly ) ) { ++ useCrossEfect = false; ++ return; ++ } ++ if ( !xmldoc.setContent( &file ) ) { ++ useCrossEfect = false; ++ file.close(); ++ return; ++ } ++ file.close(); ++ ++ TQDomElement docElem = xmldoc.documentElement(); ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); // try to convert the node to an element. ++ if( !e.isNull() ) { ++ if (e.tagName() == "starttime") { ++ createStartTime(e); ++ } else if (e.tagName() == "transition") { ++ createTransition(e); ++ } else if (e.tagName() == "static") { ++ createStatic(e); ++ } ++ } ++ n = n.nextSibling(); ++ } ++ ++ // Setting "now" state ++ setCurrentEvent(true); ++ pix = getCurrentPixmap(); ++ ++ useCrossEfect = true; ++} ++ ++ ++KCrossBGRender::~KCrossBGRender(){ ++} ++ ++TQPixmap KCrossBGRender::pixmap() { ++ fixEnabled(); ++ if (!useCrossEfect){ ++ TQPixmap p = KBackgroundRenderer::pixmap(); ++ kdDebug() << "Inherited " << p.size() << endl; ++ if (p.width() == 0 && p.height() == 0){ ++ p.convertFromImage(image()); ++ } ++ return p; ++ } ++ ++ return pix; ++} ++ ++bool KCrossBGRender::needWallpaperChange(){ ++ if (!useCrossEfect) { ++ return KBackgroundRenderer::needWallpaperChange(); ++ } ++ ++ bool forceChange = setCurrentEvent(); // If we change the current state ++ if (forceChange){ // do not matter what hapens ++ actualPhase = 0; // we need to change background ++ return true; ++ } ++ ++ // Return false if it's not a transition ++ if (!current.transition) { ++ return false; ++ } ++ ++ double timeLeft, timeTotal; ++ TQTime now = TQTime::currentTime(); ++ ++ timeLeft = now.secsTo(current.etime); ++ if (timeLeft < 0) { ++ timeLeft += 86400; // before midnight ++ } ++ timeTotal = current.stime.secsTo(current.etime); ++ if (timeTotal < 0) { ++ timeTotal += 86400; ++ } ++ ++ double passed = timeTotal - timeLeft; ++ double timeCell = timeTotal/60; //Time cell size ++ ++ //kdDebug() << "\ntimeleft:" << timeLeft << " timeTotal:" << timeTotal ++ // << "\npassed:" << passed << " timeCell:" << timeCell ++ // << "\nactualPhase: " << actualPhase << endl; ++ ++ int aux = passed/timeCell; ++ if(actualPhase != aux){ ++ //kdDebug() << "needWallpaperChange() => returned true" << endl; ++ actualPhase = passed/timeCell; ++ return true; ++ } ++ ++ //kdDebug() << "needWallpaperChange() => returned false" << endl; ++ return false; ++} ++ ++/* ++ * This method change the enabledEffect flag to TRUE of FALSE, according ++ * with multiWallpaperMode and FileName (it needs to be a XML) ++ */ ++void KCrossBGRender::fixEnabled(){ ++ ++ ++ TQString w = wallpaperList()[0]; ++ useCrossEfect = false; ++ if(multiWallpaperMode() == Random || multiWallpaperMode() == InOrder){ ++ ++ if ( w != xmlFileName ){ ++ // New XML File ++ xmlFileName = w; ++ if (w.endsWith("xml",false)){ ++ initCrossFade(wallpaperList()[0]); ++ //useCrossEfect = true; ++ }else{ ++ // Not, it's not a xml file ++ useCrossEfect = false; ++ } ++ }else if (w.endsWith("xml",false)){ ++ //xmlFile doesn't change ++ //but it's there ++ useCrossEfect = true; ++ }else{ ++ // it's not a XML file ++ useCrossEfect = false; ++ } ++ } ++} ++ ++void KCrossBGRender::changeWallpaper(bool init){ ++ ++ ++ ++ fixEnabled(); ++ ++ if (!useCrossEfect){ ++ KBackgroundRenderer::changeWallpaper(init); ++ return; ++ } ++ ++ pix = getCurrentPixmap(); ++ ++ ++} ++ ++ ++bool KCrossBGRender::setCurrentEvent(bool init){ ++ TQTime now = TQTime::currentTime(); ++ ++ ++ //Verify if is need to change ++ if (!(init || now <= current.stime || now >= current.etime )) { ++ return false; ++ } ++ ++ TQValueList<KBGCrossEvent>::iterator it; ++ for ( it = timeList.begin(); it != timeList.end(); ++it ){ ++ ++ // Look for time ++ if ( ((*it).stime <= now && now <= (*it).etime) || //normal situation ++ ((*it).etime <= (*it).stime && (now >= (*it).stime || ++ now <= (*it).etime) ) ) ++ { ++ current = *it; ++ actualPhase = 0; ++ ++ //kdDebug() << "Cur: " << current.stime << "< now <" << current.etime << endl; ++ return true; ++ } ++ } ++} ++ ++TQPixmap KCrossBGRender::getCurrentPixmap() ++{ ++ float alpha; ++ TQPixmap ret; ++ TQImage tmp; ++ TQImage p1; ++ if (!tmp.load(current.pix1)) ++ return TQPixmap(); ++ ++ // scale the pixmap to fit in the screen ++ //p1 = TQPixmap(QApplication::desktop()->screenGeometry().size()); ++ //TQPainter p(&p1); ++ //p.drawPixmap(p1.rect(), tmp); ++ // ++ p1 = tmp.smoothScale(TQApplication::desktop()->screenGeometry().size()); ++ ++ if (current.transition){ ++ TQTime now = TQTime::currentTime(); ++ double timeLeft,timeTotal; ++ ++ TQImage p2; ++ ++ if (!tmp.load(current.pix2) ) ++ return NULL; ++ ++ p2 = tmp.smoothScale(TQApplication::desktop()->screenGeometry().size()); ++ //TQPainter p(&p2); ++ //p.drawPixmap(p2.rect(), tmp); ++ ++ timeLeft = now.secsTo(current.etime); ++ if (timeLeft < 0) ++ timeLeft += 86400; ++ timeTotal = current.stime.secsTo(current.etime); ++ if (timeTotal < 0) ++ timeTotal += 86400; ++ ++ alpha = (timeTotal - timeLeft)/timeTotal; ++ ++ //ret = crossFade(p2,p1,alpha); ++ tmp = KImageEffect::blend(p2,p1,alpha); ++ ret.convertFromImage(tmp); ++ return ret; ++ }else{ ++ ret.convertFromImage(p1); ++ return ret; ++ } ++ ++ ++} ++ ++void KCrossBGRender::createStartTime(TQDomElement docElem) ++{ ++ int hour; ++ int minutes; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "hour"){ ++ hour = e.text().toInt(); ++ }else if ( e.tagName() == "minute" ){ ++ minutes = e.text().toInt(); ++ } ++ ++ } ++ ++ n = n.nextSibling(); ++ } ++ secs = hour*60*60 + minutes*60; ++} ++void KCrossBGRender::createTransition(TQDomElement docElem) ++{ ++ int duration; ++ TQString from; ++ TQString to; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "duration"){ ++ duration = e.text().toFloat(); ++ }else if ( e.tagName() == "from" ){ ++ from = e.text(); ++ } ++ else if ( e.tagName() == "to" ){ ++ to = e.text(); ++ } ++ ++ } ++ n = n.nextSibling(); ++ } ++ TQTime startTime(0,0,0); ++ startTime = startTime.addSecs(secs); ++ TQTime endTime(0,0,0); ++ endTime = endTime.addSecs(secs+duration); ++ ++ secs += duration; ++ ++ KBGCrossEvent l = {true, from, to, startTime,endTime}; ++ ++ timeList.append(l); ++ ++} ++void KCrossBGRender::createStatic(TQDomElement docElem) ++{ ++ int duration; ++ TQString file; ++ ++ TQDomNode n = docElem.firstChild(); ++ while( !n.isNull() ) { ++ TQDomElement e = n.toElement(); ++ if( !e.isNull() ) { ++ if (e.tagName() == "duration"){ ++ duration = e.text().toFloat(); ++ }else if ( e.tagName() == "file" ){ ++ file = e.text(); ++ } ++ ++ } ++ n = n.nextSibling(); ++ } ++ ++ TQTime startTime(0,0,0); ++ startTime = startTime.addSecs(secs); ++ TQTime endTime(0,0,0); ++ endTime = endTime.addSecs(secs+duration); ++ ++ secs += duration; ++ ++ KBGCrossEvent l = {false, file, NULL, startTime,endTime}; ++ timeList.append(l); ++} ++ ++#include "KCrossBGRender.moc" +--- ./kdm/kfrontend/krootimage.h.ORI 2013-05-08 18:54:48.631599139 +0200 ++++ ./kdm/kfrontend/krootimage.h 2013-05-08 18:55:02.365339708 +0200 +@@ -27,6 +27,7 @@ + #include <tqtimer.h> + + #include <bgrender.h> ++#include <KCrossBGRender.h> + + + class MyApplication : public KApplication +--- ./kdesktop/bgmanager.cc.ORI 2013-05-08 18:56:29.915684768 +0200 ++++ ./kdesktop/bgmanager.cc 2013-05-08 19:12:04.451954803 +0200 +@@ -16,10 +16,16 @@ + #include "bgsettings.h" + #include "kdesktopapp.h" + ++//FIXME ++#include "KCrossBGRender.h" ++#include "crossfade.h" ++ + #include <assert.h> + + #include <tqtimer.h> + #include <tqscrollview.h> ++#include <tqpainter.h> ++#include <tqdesktopwidget.h> + + #include <kiconloader.h> + #include <kconfig.h> +@@ -34,6 +40,8 @@ + #include <X11/X.h> + #include <X11/Xlib.h> + #include <X11/Xatom.h> ++#include <X11/extensions/Xrender.h> ++#include <unistd.h> + + #ifndef None + #define None 0L +@@ -47,7 +55,8 @@ + + #include "pixmapserver.h" + +-template class TQPtrVector<KBackgroundRenderer>; ++//template class TQPtrVector<KBackgroundRenderer>; ++template class TQPtrVector<KCrossBGRender>; + template class TQPtrVector<KBackgroundCacheEntry>; + template class TQMemArray<int>; + +@@ -108,6 +117,12 @@ + connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout())); + m_pTimer->start( 60000 ); + ++ /*CrossFade's config*/ ++ m_crossTimer = new TQTimer(this); ++ connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout())); ++ /*Ends here*/ ++ ++ + connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopChanged(int)), + TQT_SLOT(slotChangeDesktop(int))); + connect(m_pKwinmodule, TQT_SIGNAL(numberOfDesktopsChanged(int)), +@@ -577,6 +592,36 @@ + + + /* ++ * This slot is called when the Timeout is executed ++ */ ++void KBackgroundManager::slotCrossFadeTimeout() ++{ ++ KVirtualBGRenderer *r = m_Renderer[fadeDesk]; ++ if (crossInit) { ++ mBenchmark.start(); ++ } ++ ++ if (mAlpha <= 0.0 || mBenchmark.elapsed() > 300 ) { ++ bool do_cleanup = true; ++ mAlpha = 1; ++ m_crossTimer->stop(); ++ KPixmap pixm(mNextScreen); ++ setPixmap(&pixm, r->hash(), fadeDesk); ++ return; ++ } ++ // Reset Timer ++ mBenchmark.start(); ++ ++ TQPixmap dst = crossFade(*mOldScreen, mNextScreen, mAlpha, crossInit); ++ KPixmap pixm(dst); ++ setPixmap(&pixm, r->hash(), fadeDesk); ++ ++ mAlpha -=0.03; ++ crossInit = false; ++} ++ ++ ++/* + * This slot is called when a renderer is done. + */ + void KBackgroundManager::slotImageDone(int desk) +@@ -592,6 +637,10 @@ + KPixmap *pm = new KPixmap(); + KVirtualBGRenderer *r = m_Renderer[desk]; + bool do_cleanup = true; ++ fadeDesk = desk; ++ mAlpha = 1.0; ++ int width,height; ++ + + *pm = r->pixmap(); + // If current: paint it +@@ -603,7 +652,41 @@ + //setPixmap(viewport_background, r->hash(), desk); + //delete viewport_background; + +- setPixmap(pm, r->hash(), desk); ++ //START ++ if (m_Renderer[effectiveDesktop()]->renderer(0)->crossFadeBg() && !m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){ ++ int mode = m_Renderer[effectiveDesktop()]->renderer(0)->wallpaperMode(); ++ width = TQApplication::desktop()->screenGeometry().width(); //m_pDesktop->width(); ++ height = TQApplication::desktop()->screenGeometry().height();// m_pDesktop->height(); ++ ++ if (mode == KBackgroundSettings::NoWallpaper || mode == KBackgroundSettings::Tiled || mode == KBackgroundSettings::CenterTiled ){ ++ mNextScreen = TQPixmap(width,height); ++ TQPainter p (&mNextScreen); ++ p.drawTiledPixmap(0,0,width,height,*pm); ++ } else { ++ mNextScreen = TQPixmap(*pm); ++ } ++ ++ if (m_pDesktop){ ++ mOldScreen = const_cast<TQPixmap *>( m_pDesktop->backgroundPixmap() ); ++ }else{ ++ mOldScreen = const_cast<TQPixmap *>( ++ TQApplication::desktop()->screen()->backgroundPixmap() ); ++ } ++ ++ //TODO Find a way to discover if CrossFade effect needs to run ++ if (mOldScreen){ ++ crossInit = true; ++ m_crossTimer->start(70); ++ } else{ ++ setPixmap(pm, r->hash(), desk); ++ } ++ }else{ ++ setPixmap(pm, r->hash(), desk); ++ } ++ //ENDS HERE */ ++ ++ //setPixmap(pm, r->hash(), desk); ++ + if (!m_bBgInitDone) + { + m_bBgInitDone = true; +@@ -801,7 +884,8 @@ + TQString KBackgroundManager::currentWallpaper(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ //KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->currentWallpaper(); + } +@@ -818,7 +902,7 @@ + // DCOP exported + void KBackgroundManager::setExport(int _export) + { +- kdDebug() << "KBackgroundManager enabling exports.\n"; ++// kdDebug() << "KBackgroundManager enabling exports.\n"; + applyExport(_export); + slotChangeDesktop(0); + } +@@ -843,7 +927,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + r->setWallpaperMode(mode); + r->setMultiWallpaperMode(KBackgroundSettings::NoMulti); +@@ -856,7 +940,7 @@ + void KBackgroundManager::setWallpaper(TQString wallpaper) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(0); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(0); + int mode = r->wallpaperMode(); + if (mode == KBackgroundSettings::NoWallpaper) + mode = KBackgroundSettings::Tiled; +@@ -869,7 +953,7 @@ + TQStringList KBackgroundManager::wallpaperFiles(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0); ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0); + + return r->wallpaperFiles(); + } +@@ -880,7 +964,7 @@ + TQStringList KBackgroundManager::wallpaperList(int desk) + { + //TODO Is the behaviour of this function appropriate for multiple screens? +- KBackgroundRenderer *r = m_Renderer[validateDesk(desk)]->renderer(0);; ++ KCrossBGRender *r = m_Renderer[validateDesk(desk)]->renderer(0);; + + return r->wallpaperList(); + } +@@ -907,7 +991,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[sdesk]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[sdesk]->renderer(i); ++ KCrossBGRender *r = m_Renderer[sdesk]->renderer(i); + + setCommon(false); // Force each desktop to have it's own wallpaper + +@@ -974,7 +1058,7 @@ + //TODO Is the behaviour of this function appropriate for multiple screens? + for (unsigned i=0; i < m_Renderer[effectiveDesktop()]->numRenderers(); ++i) + { +- KBackgroundRenderer *r = m_Renderer[effectiveDesktop()]->renderer(i); ++ KCrossBGRender *r = m_Renderer[effectiveDesktop()]->renderer(i); + r->stop(); + + if (isColorA) +--- ./kdesktop/bgmanager.h.ORI 2013-05-08 19:13:25.120426716 +0200 ++++ ./kdesktop/bgmanager.h 2013-05-08 19:15:12.071398460 +0200 +@@ -13,6 +13,7 @@ + #include <tqstring.h> + #include <tqptrvector.h> + ++#include <qdatetime.h> + #include <KBackgroundIface.h> + + #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300 +@@ -89,6 +90,7 @@ + void desktopResized(); + void clearRoot(); + void saveImages(); ++ void slotCrossFadeTimeout(); + void slotCmBackgroundChanged(bool); + + private: +@@ -131,6 +133,15 @@ + KPixmapServer *m_pPixmapServer; + + unsigned long m_xrootpmap; ++ ++ /*CrossFade vars*/ ++ TQTimer * m_crossTimer; ++ double mAlpha; ++ TQPixmap mNextScreen; ++ TQPixmap * mOldScreen; ++ int fadeDesk; ++ TQTime mBenchmark; ++ bool crossInit; + }; + + #endif // __BGManager_h_Included__ +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog_ui.ui.ORI 2013-05-15 12:13:14.000000000 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog_ui.ui 2013-05-15 12:20:25.000000000 +0000 +@@ -376,6 +376,17 @@ + </ul></qt></string> + </property> + </widget> ++ <widget class="TQCheckBox" row="8" column="1"> ++ <property name="name"> ++ <cstring>m_cbCrossFadeBg</cstring> ++ </property> ++ <property name="text"> ++ <string>Cross-fading background</string> ++ </property> ++ <property name="whatsThis" stdset="0"> ++ <string>Enables a smooth fading effect when changing background image.</string> ++ </property> ++ </widget> + <widget class="TQComboBox" row="5" column="1"> + <property name="name"> + <cstring>m_comboBlend</cstring> +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdefaults.h.ORI 2013-05-15 13:42:20.933760867 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdefaults.h 2013-05-15 13:42:38.305365721 +0000 +@@ -34,5 +34,6 @@ + #define _defBlendMode KBackgroundSettings::NoBlending + #define _defBlendBalance 100 + #define _defReverseBlending false ++#define _defCrossFadeBg false + + #endif // __BGDefaults_h_Included__ +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.h.ORI 2013-05-15 13:37:34.228282617 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.h 2013-05-15 13:39:31.884606381 +0000 +@@ -198,6 +198,9 @@ + void setReverseBlending(bool value); + bool reverseBlending() const { return m_ReverseBlending; } + ++ void setCrossFadeBg(bool value); ++ bool crossFadeBg() const { return m_CrossFadeBg; } ++ + void setBlendBalance(int value); + int blendBalance() const { return m_BlendBalance; } + +@@ -273,6 +276,7 @@ + int m_BlendMode, defBlendMode; + int m_BlendBalance, defBlendBalance; + bool m_ReverseBlending, defReverseBlending; ++ bool m_CrossFadeBg, defCrossFadeBg; + int m_MinOptimizationDepth; + bool m_bShm; + bool m_bDrawBackgroundPerScreen; +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.cpp.ORI 2013-05-15 13:39:59.408980208 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgsettings.cpp 2013-05-15 13:46:15.197432823 +0000 +@@ -437,6 +437,7 @@ + defBlendMode = _defBlendMode; + defBlendBalance = _defBlendBalance; + defReverseBlending = _defReverseBlending; ++ defCrossFadeBg = _defCrossFadeBg; + + m_MinOptimizationDepth = _defMinOptimizationDepth; + m_bShm = _defShm; +@@ -537,6 +538,7 @@ + m_BlendMode = settings->m_BlendMode; + m_BlendBalance = settings->m_BlendBalance; + m_ReverseBlending = settings->m_ReverseBlending; ++ m_CrossFadeBg = settings->m_CrossFadeBg; + m_MinOptimizationDepth = settings->m_MinOptimizationDepth; + m_bShm = settings->m_bShm; + m_MultiMode = settings->m_MultiMode; +@@ -633,6 +635,15 @@ + } + + ++void KBackgroundSettings::setCrossFadeBg(bool value) ++{ ++ if (m_CrossFadeBg == value) ++ return; ++ dirty = hashdirty = true; ++ m_CrossFadeBg = value; ++} ++ ++ + void KBackgroundSettings::setWallpaper(TQString wallpaper) + { + dirty = hashdirty = true; +@@ -774,6 +785,8 @@ + + m_ReverseBlending = m_pConfig->readBoolEntry( "ReverseBlending", defReverseBlending); + ++ m_CrossFadeBg = m_pConfig->readBoolEntry( "CrossFadeBg", defCrossFadeBg); ++ + // Multiple wallpaper config + m_WallpaperList = m_pConfig->readPathListEntry("WallpaperList"); + +@@ -834,6 +847,7 @@ + m_pConfig->writeEntry("BlendMode", m_BlMRevMap[m_BlendMode]); + m_pConfig->writeEntry("BlendBalance", m_BlendBalance); + m_pConfig->writeEntry("ReverseBlending", m_ReverseBlending); ++ m_pConfig->writeEntry("CrossFadeBg", m_CrossFadeBg); + m_pConfig->writeEntry("MinOptimizationDepth", m_MinOptimizationDepth); + m_pConfig->writeEntry("UseSHM", m_bShm); + +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.h.ORI 2013-05-15 13:56:09.397921090 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.h 2013-05-15 13:56:17.377739605 +0000 +@@ -80,6 +80,7 @@ + void slotBlendReverse(bool b); + void desktopResized(); + void setBlendingEnabled(bool); ++ void slotCrossFadeBg(bool); + + protected: + void getEScreen(); +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.cpp.ORI 2013-05-15 13:53:49.809095324 +0000 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/background/bgdialog.cpp 2013-05-15 13:53:54.636985486 +0000 +@@ -174,6 +174,10 @@ + connect(m_cbBlendReverse, TQT_SIGNAL(toggled(bool)), + TQT_SLOT(slotBlendReverse(bool))); + ++ // Crossfading background ++ connect(m_cbCrossFadeBg, TQT_SIGNAL(toggled(bool)), ++ TQT_SLOT(slotCrossFadeBg(bool))); ++ + // advanced options + connect(m_buttonAdvanced, TQT_SIGNAL(clicked()), + TQT_SLOT(slotAdvanced())); +@@ -304,6 +308,7 @@ + m_cbBlendReverse->setEnabled( false ); + m_buttonAdvanced->setEnabled( false ); + m_buttonGetNew->setEnabled( false ); ++ m_cbCrossFadeBg->setEnabled( false ); + } + + void BGDialog::load( bool useDefaults ) +@@ -781,6 +786,8 @@ + m_cbBlendReverse->setChecked(r->reverseBlending()); + m_sliderBlend->setValue( r->blendBalance() / 10 ); + ++ m_cbCrossFadeBg->setChecked(r->crossFadeBg()); ++ + m_comboBlend->blockSignals(false); + m_sliderBlend->blockSignals(false); + +@@ -1295,6 +1302,17 @@ + eRenderer()->start(true); + } + ++void BGDialog::slotCrossFadeBg(bool b) ++{ ++ if (b == eRenderer()->crossFadeBg()) ++ return; ++ emit changed(true); ++ ++ eRenderer()->stop(); ++ eRenderer()->setCrossFadeBg(b); ++ eRenderer()->start(true); ++} ++ + void BGDialog::desktopResized() + { + for (unsigned i = 0; i < m_renderer.size(); ++i) diff --git a/redhat/tdebase/tdebase-14.0.0-kickoff_default_favs.patch b/redhat/tdebase/tdebase-14.0.0-kickoff_default_favs.patch new file mode 100644 index 000000000..4b6d5d6c8 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kickoff_default_favs.patch @@ -0,0 +1,16 @@ +--- trinity-tdebase-3.5.13.2~pre86+807a5445/kicker/kicker/ui/default-favs.ORI 2013-05-09 22:50:36.607264087 +0200 ++++ trinity-tdebase-3.5.13.2~pre86+807a5445/kicker/kicker/ui/default-favs 2013-05-09 22:50:46.935039753 +0200 +@@ -1,9 +1,7 @@ +-MozillaFirefox.desktop +-tde-Kontact.desktop +-writer.desktop +-tde-amarok.desktop +-tde-digikam.desktop + tde-Home.desktop ++tde-konqbrowser.desktop ++tde-Kfind.desktop ++tde-kate.desktop ++tde-konsole.desktop + tde-KControl.desktop + tde-Help.desktop +-tde-konsole.desktop diff --git a/redhat/tdebase/tdebase-14.0.0-kickoff_xdg_dirs.patch b/redhat/tdebase/tdebase-14.0.0-kickoff_xdg_dirs.patch new file mode 100644 index 000000000..0a692c42b --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-kickoff_xdg_dirs.patch @@ -0,0 +1,45 @@ +--- ./kicker/kicker/ui/k_new_mnu.cpp.ori 2013-05-08 21:56:01.084691260 +0200 ++++ ./kicker/kicker/ui/k_new_mnu.cpp 2013-05-08 21:58:02.086130445 +0200 +@@ -1428,6 +1428,42 @@ + m_systemView->insertItem( "folder_man", i18n( "My Documents" ), documentPath, documentPath, nId++, index++ ); + } + ++ if ( TDEStandardDirs::exists( TDEGlobalSettings::picturesPath() + "/" ) ) ++ { ++ TQString picturesPath = TDEGlobalSettings::picturesPath(); ++ if ( picturesPath.endsWith( "/" ) ) ++ picturesPath = picturesPath.left( picturesPath.length() - 1 ); ++ if (picturesPath!=TQDir::homeDirPath()) ++ m_systemView->insertItem( "folder_image", i18n( "My Images" ), picturesPath, picturesPath, nId++, index++ ); ++ } ++ ++ if ( TDEStandardDirs::exists( TDEGlobalSettings::musicPath() + "/" ) ) ++ { ++ TQString musicPath = TDEGlobalSettings::musicPath(); ++ if ( musicPath.endsWith( "/" ) ) ++ musicPath = musicPath.left( musicPath.length() - 1 ); ++ if (musicPath!=TQDir::homeDirPath()) ++ m_systemView->insertItem( "folder_sound", i18n( "My Music" ), musicPath, musicPath, nId++, index++ ); ++ } ++ ++ if ( TDEStandardDirs::exists( TDEGlobalSettings::videosPath() + "/" ) ) ++ { ++ TQString videosPath = TDEGlobalSettings::videosPath(); ++ if ( videosPath.endsWith( "/" ) ) ++ videosPath = videosPath.left( videosPath.length() - 1 ); ++ if (videosPath!=TQDir::homeDirPath()) ++ m_systemView->insertItem( "folder_video", i18n( "My Videos" ), videosPath, videosPath, nId++, index++ ); ++ } ++ ++ if ( TDEStandardDirs::exists( TDEGlobalSettings::downloadPath() + "/" ) ) ++ { ++ TQString downloadPath = TDEGlobalSettings::downloadPath(); ++ if ( downloadPath.endsWith( "/" ) ) ++ downloadPath = downloadPath.left( downloadPath.length() - 1 ); ++ if (downloadPath!=TQDir::homeDirPath()) ++ m_systemView->insertItem( "folder_inbox", i18n( "My Downloads" ), downloadPath, downloadPath, nId++, index++ ); ++ } ++ + m_systemView->insertItem( "network", i18n( "Network Folders" ), + "remote:/", "remote:/", nId++, index++ ); + diff --git a/redhat/tdebase/tdebase-14.0.0-konsole_wordseps.patch b/redhat/tdebase/tdebase-14.0.0-konsole_wordseps.patch new file mode 100644 index 000000000..8bec27061 --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-konsole_wordseps.patch @@ -0,0 +1,48 @@ +diff -Nuar trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/kcontrol/konsole/kcmkonsole.cpp trinity-tdebase-14.0.0~pre737+02bf1e69/kcontrol/konsole/kcmkonsole.cpp +--- trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/kcontrol/konsole/kcmkonsole.cpp 2013-07-10 07:56:40.070802259 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/kcontrol/konsole/kcmkonsole.cpp 2013-07-10 07:58:53.680465150 +0200 +@@ -107,7 +107,7 @@ + dialog->frameCB->setChecked(config.readBoolEntry("has frame",true)); + dialog->line_spacingSB->setValue(config.readUnsignedNumEntry( "LineSpacing", 0 )); + dialog->silence_secondsSB->setValue(config.readUnsignedNumEntry( "SilenceSeconds", 10 )); +- dialog->word_connectorLE->setText(config.readEntry("wordseps",":@-./_~")); ++ dialog->word_connectorLE->setText(config.readEntry("wordseps",":@-./_~+")); + + dialog->SchemaEditor1->setSchema(config.readEntry("schema")); + +diff -Nuar trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/konsole.cpp trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/konsole.cpp +--- trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/konsole.cpp 2013-07-10 07:56:40.112802782 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/konsole.cpp 2013-07-10 07:58:53.698465376 +0200 +@@ -1573,7 +1573,7 @@ + b_warnQuit=config->readBoolEntry( "WarnQuit", true ); + b_allowResize=config->readBoolEntry( "AllowResize", false); + b_bidiEnabled = config->readBoolEntry("EnableBidi",false); +- s_word_seps= config->readEntry("wordseps",":@-./_~"); ++ s_word_seps= config->readEntry("wordseps",":@-./_~+"); + b_framevis = config->readBoolEntry("has frame",true); + TQPtrList<TEWidget> tes = activeTEs(); + for (TEWidget *_te = tes.first(); _te; _te = tes.next()) { +diff -Nuar trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/konsole_part.cpp trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/konsole_part.cpp +--- trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/konsole_part.cpp 2013-07-10 07:56:40.112802782 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/konsole_part.cpp 2013-07-10 07:58:53.684465202 +0200 +@@ -565,7 +565,7 @@ + n_keytab=config->readNumEntry("keytab",0); // act. the keytab for this session + n_scroll = TQMIN(config->readUnsignedNumEntry("scrollbar",TEWidget::SCRRIGHT),2); + m_histSize = config->readNumEntry("history",DEFAULT_HISTORY_SIZE); +- s_word_seps= config->readEntry("wordseps",":@-./_~"); ++ s_word_seps= config->readEntry("wordseps",":@-./_~+"); + + n_encoding = config->readNumEntry("encoding",0); + +diff -Nuar trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/TEWidget.cpp trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/TEWidget.cpp +--- trinity-tdebase-14.0.0~pre737+02bf1e69.ORI/konsole/konsole/TEWidget.cpp 2013-07-10 07:56:40.112802782 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/konsole/konsole/TEWidget.cpp 2013-07-10 07:58:53.690465276 +0200 +@@ -352,7 +352,7 @@ + ,preserve_line_breaks(true) + ,column_selection_mode(false) + ,scrollLoc(SCRNONE) +-,word_characters(":@-./_~") ++,word_characters(":@-./_~+") + ,m_bellMode(BELLSYSTEM) + ,blinking(false) + ,cursorBlinking(false) diff --git a/redhat/tdebase/tdebase-14.0.0-open_terminal_here.patch b/redhat/tdebase/tdebase-14.0.0-open_terminal_here.patch new file mode 100644 index 000000000..503d1543e --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-open_terminal_here.patch @@ -0,0 +1,11 @@ +--- trinity-tdebase-14.0.0~pre737+02bf1e69/kdesktop/krootwm.c.ORI 2013-07-07 19:52:01.913986986 +0200 ++++ trinity-tdebase-14.0.0~pre737+02bf1e69/kdesktop/krootwm.cc 2013-07-07 19:52:49.676516510 +0200 +@@ -760,7 +760,7 @@ + TDEConfigGroupSaver gs(TDEGlobal::config(), "General"); + TQString terminal = TDEGlobal::config()->readPathEntry("TerminalApplication", "konsole"); + +- *p << terminal << "--workdir=" + TDEGlobalSettings::desktopPath() + "/"; ++ *p << terminal; + + p->start(TDEProcess::DontCare); + diff --git a/redhat/tdebase/tdebase-14.0.0-suspend_unmount.patch b/redhat/tdebase/tdebase-14.0.0-suspend_unmount.patch new file mode 100644 index 000000000..01d9e479b --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-suspend_unmount.patch @@ -0,0 +1,151 @@ +--- ./tdeioslave/media/libmediacommon/medium.cpp.ori 2013-05-08 22:57:09.317384423 +0200 ++++ ./tdeioslave/media/libmediacommon/medium.cpp 2013-05-08 22:57:36.730837358 +0200 +@@ -46,6 +46,7 @@ + loadUserLabel(); + + m_halmounted = false; ++ m_isHotplug = false; + } + + Medium::Medium() +@@ -69,6 +70,7 @@ + m_properties+= "false"; /* HIDDEN */ + + m_halmounted = false; ++ m_isHotplug = false; + } + + const Medium Medium::create(const TQStringList &properties) +--- ./tdeioslave/media/libmediacommon/medium.h.ORI 2013-05-08 22:59:10.772959829 +0200 ++++ ./tdeioslave/media/libmediacommon/medium.h 2013-05-08 22:59:56.602044404 +0200 +@@ -92,6 +92,9 @@ + void setHalMounted(bool flag) const { m_halmounted = flag; } + bool halMounted() const { return m_halmounted; } + ++ void setIsHotplug( bool state ) { m_isHotplug = state; } ++ bool isHotplug() const { return m_isHotplug; } ++ + //private: + Medium(); + +@@ -100,6 +103,8 @@ + + TQStringList m_properties; + mutable bool m_halmounted; ++ ++ bool m_isHotplug; + + friend class TQValueListNode<const Medium>; + }; +--- ./tdeioslave/media/mediamanager/mediamanager.cpp.ori 2013-05-08 23:00:39.673183801 +0200 ++++ ./tdeioslave/media/mediamanager/mediamanager.cpp 2013-05-08 23:04:47.639224260 +0200 +@@ -354,6 +354,57 @@ + emit mediumChanged(name); + } + ++TQString MediaManager::unmountAllSuspend() ++{ ++ TQPtrList<Medium> list = m_mediaList.list(); ++ ++ TQPtrList<Medium>::const_iterator it = list.begin(); ++ TQPtrList<Medium>::const_iterator end = list.end(); ++ ++ TQString result; ++ ++ for (; it!=end; ++it) ++ { ++ if ( (*it)->isMounted() && (*it)->isHotplug() ) ++ { ++ TQString tmp = unmount( (*it)->id() ); ++ if ( !tmp.isEmpty() ) { // umount failed ++ result = tmp; ++ } else { ++ m_suspendResumeMountList.append( (*it)->id() ); ++ } ++ } ++ } ++ ++ // return last error ++ return result; ++} ++ ++TQString MediaManager::remountAllResume() ++{ ++ TQString result; ++ ++ for (TQStringList::const_iterator it = m_suspendResumeMountList.begin(); ++ it != m_suspendResumeMountList.end(); ++ ++it) ++ { ++ const Medium *m = m_mediaList.findById(*it); ++ ++ if ( m && m->needMounting() ) ++ { ++ TQString tmp = mount( *it ); ++ if ( !tmp.isEmpty() ) { // mount failed ++ result = tmp; ++ } ++ } ++ } ++ ++ m_suspendResumeMountList.clear(); ++ ++ // return last error ++ return result; ++} ++ + + extern "C" { + KDE_EXPORT KDEDModule *create_mediamanager(const TQCString &obj) +--- ./tdeioslave/media/mediamanager/mediamanager.h.ORI 2013-05-08 23:05:36.250251036 +0200 ++++ ./tdeioslave/media/mediamanager/mediamanager.h 2013-05-08 23:07:27.650019601 +0200 +@@ -60,6 +60,20 @@ + bool removableUnplug(const TQString &devNode); + bool removableCamera(const TQString &devNode); + ++ /** ++ * Unmount manually all partitions when going to suspend ++ * ++ * @return last error if any ++ */ ++ TQString unmountAllSuspend(); ++ ++ /** ++ * Remount previously unmounted partitions in unmountAllSuspend() ++ * ++ * @return last error if any ++ */ ++ TQString remountAllResume(); ++ + k_dcop_signals: + void mediumAdded(const TQString &name, bool allowNotification); + void mediumRemoved(const TQString &name, bool allowNotification); +@@ -89,6 +103,7 @@ + TDEBackend *m_tdebackend; + MediaDirNotify m_dirNotify; + FstabBackend *m_fstabbackend; ++ TQStringList m_suspendResumeMountList; + }; + + #endif +--- ./tdeioslave/media/mediamanager/halbackend.cpp.ori 2013-05-08 23:08:12.196126863 +0200 ++++ ./tdeioslave/media/mediamanager/halbackend.cpp 2013-05-08 23:08:51.096347073 +0200 +@@ -541,6 +541,7 @@ + libhal_volume_is_mounted(halVolume) ); /* Mounted ? */ + } + ++ medium->setIsHotplug( libhal_drive_is_hotpluggable(halDrive) ); + + char* name = libhal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy); + TQString volume_name = TQString::fromUtf8(name); +--- ./tdeioslave/media/mediamanager/halbackend.h.ORI 2013-05-08 23:09:35.761451488 +0200 ++++ ./tdeioslave/media/mediamanager/halbackend.h 2013-05-08 23:10:21.608531952 +0200 +@@ -89,6 +89,8 @@ + TQString decrypt(const TQString &id, const TQString &password); + TQString undecrypt(const TQString &id); + ++ static bool isHotplug( const TQString & id ); ++ + private: + /** + * Append a device in the media list. This function will check if the device diff --git a/redhat/tdebase/tdebase-14.0.0-vibrate_dialog.patch b/redhat/tdebase/tdebase-14.0.0-vibrate_dialog.patch new file mode 100644 index 000000000..881de1d5c --- /dev/null +++ b/redhat/tdebase/tdebase-14.0.0-vibrate_dialog.patch @@ -0,0 +1,186 @@ +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.h.ORI 2013-05-14 22:12:18.159235590 +0200 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.h 2013-05-14 22:12:56.657422259 +0200 +@@ -58,6 +58,7 @@ + void slotLock( bool ); + void slotDelaySaverStart( bool ); + void slotUseTSAK( bool ); ++ void slotVibrateUnlock( bool ); + void slotUseUnmanagedLockWindows( bool ); + void slotHideActiveWindowsFromSaver( bool ); + void processLockouts(); +@@ -101,6 +102,7 @@ + TQGroupBox *mSettingsGroup; + TQCheckBox *mDelaySaverStartCheckBox; + TQCheckBox *mUseTSAKCheckBox; ++ TQCheckBox *mVibrateUnlockCheckBox; + TQCheckBox *mUseUnmanagedLockWindowsCheckBox; + TQCheckBox *mHideActiveWindowsFromSaverCheckBox; + +@@ -119,6 +121,7 @@ + bool mImmutable; + bool mDelaySaverStart; + bool mUseTSAK; ++ bool mVibrateUnlock; + bool mUseUnmanagedLockWindows; + bool mHideActiveWindowsFromSaver; + +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.cpp.vibrate_dialog 2013-04-26 22:15:23.000000000 +0200 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.cpp 2013-05-14 22:24:37.354375502 +0200 +@@ -270,6 +270,13 @@ + settingsGroupLayout->addWidget(mHideActiveWindowsFromSaverCheckBox, 3, 1); + TQWhatsThis::add( mHideActiveWindowsFromSaverCheckBox, i18n("Hide all active windows from the screen saver and use the desktop background as the screen saver input.") ); + ++ mVibrateUnlockCheckBox = new TQCheckBox( i18n("&Vibrate unlock dialog box on failure"), mSettingsGroup ); ++ mVibrateUnlockCheckBox->setEnabled( true ); ++ mVibrateUnlockCheckBox->setChecked( mVibrateUnlock ); ++ connect( mVibrateUnlockCheckBox, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotVibrateUnlock( bool ) ) ); ++ settingsGroupLayout->addWidget(mVibrateUnlockCheckBox, 4, 1); ++ TQWhatsThis::add( mVibrateUnlockCheckBox, i18n("Makes the unlock dialog box vibrate when entering an incorrect password.") ); ++ + // right column + TQBoxLayout* rightColumnLayout = new TQVBoxLayout(topLayout, KDialog::spacingHint()); + +@@ -429,6 +436,7 @@ + mLock = config->readBoolEntry("Lock", false); + mDelaySaverStart = config->readBoolEntry("DelaySaverStart", true); + mUseTSAK = config->readBoolEntry("UseTDESAK", true); ++ mVibrateUnlock = config->readBoolEntry("VibrateUnlock", true); + mUseUnmanagedLockWindows = config->readBoolEntry("UseUnmanagedLockWindows", false); + mHideActiveWindowsFromSaver = config->readBoolEntry("HideActiveWindowsFromSaver", true); + mSaver = config->readEntry("Saver"); +@@ -481,6 +489,7 @@ + config->writeEntry("Lock", mLock); + config->writeEntry("DelaySaverStart", mDelaySaverStart); + config->writeEntry("UseTDESAK", mUseTSAK); ++ config->writeEntry("VibrateUnlock", mVibrateUnlock); + config->writeEntry("UseUnmanagedLockWindows", mUseUnmanagedLockWindows); + config->writeEntry("HideActiveWindowsFromSaver", mHideActiveWindowsFromSaver); + +@@ -688,10 +697,14 @@ + mUseTSAKCheckBox->setChecked( false ); + } + if (!mUseUnmanagedLockWindows) { ++ mVibrateUnlockCheckBox->setEnabled( true ); ++ mVibrateUnlockCheckBox->setChecked( mVibrateUnlock ); + mHideActiveWindowsFromSaverCheckBox->setEnabled( true ); + mHideActiveWindowsFromSaverCheckBox->setChecked( mHideActiveWindowsFromSaver ); + } + else { ++ mVibrateUnlockCheckBox->setEnabled( false ); ++ mVibrateUnlockCheckBox->setChecked( false ); + mHideActiveWindowsFromSaverCheckBox->setEnabled( false ); + mHideActiveWindowsFromSaverCheckBox->setChecked( false ); + } +@@ -936,6 +949,16 @@ + processLockouts(); + mChanged = true; + emit changed(true); ++} ++ ++//--------------------------------------------------------------------------- ++// ++void KScreenSaver::slotVibrateUnlock( bool u ) ++{ ++ if (mVibrateUnlockCheckBox->isEnabled()) mVibrateUnlock = u; ++ processLockouts(); ++ mChanged = true; ++ emit changed(true); + } + + //--------------------------------------------------------------------------- +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.h.vibrate_dialog 2013-01-09 02:12:13.000000000 +0100 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.h 2013-05-14 22:42:50.562878532 +0200 +@@ -60,6 +60,7 @@ + void slotOK(); + void layoutClicked(); + void slotActivity(); ++ void moveTimerDone(); + + protected slots: + virtual void reject(); +@@ -79,6 +80,8 @@ + void handleVerify(); + void reapVerify(); + void cantCheck(); ++ void movedialog( int _move ); ++ void badPasswordLogin(); + GreeterPluginHandle *mPlugin; + KGreeterPlugin *greet; + TQFrame *frame; +@@ -95,6 +98,8 @@ + int sPid, sFd; + TQListView *lv; + TQDateTime m_lockStartDT; ++ bool waitMoveDialog; ++ bool VibrateUnlock; + }; + + #endif +--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.cc.vibrate_dialog 2013-01-09 02:12:13.000000000 +0100 ++++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.cc 2013-05-14 22:42:12.809621715 +0200 +@@ -55,6 +55,7 @@ + #include <X11/keysym.h> + #include <X11/Xatom.h> + #include <fixx11h.h> ++#include <tdeapplication.h> + + #ifndef AF_LOCAL + # define AF_LOCAL AF_UNIX +@@ -246,6 +247,11 @@ + mLayoutButton->hide(); // no kxkb running + } + capsLocked(); ++ ++ TDEConfig* config = new TDEConfig("kdesktoprc"); ++ config->setGroup("ScreenSaver"); ++ VibrateUnlock = config->readBoolEntry("VibrateUnlock", true); ++ delete config; + } + + PasswordDlg::~PasswordDlg() +@@ -302,6 +308,37 @@ + } + } + ++void PasswordDlg::movedialog( int _move ) ++{ ++ waitMoveDialog = true; ++ this->move(pos().x()+_move, pos().y()); ++ TQTimer::singleShot( 50, this, TQT_SLOT(moveTimerDone()) ); ++ while (waitMoveDialog) { ++ kapp->processEvents(); ++ } ++} ++ ++void PasswordDlg::moveTimerDone() ++{ ++ waitMoveDialog = false; ++} ++ ++void PasswordDlg::badPasswordLogin() ++{ ++ if ( VibrateUnlock && mUnlockingFailed ) ++ { ++ for ( int i = 0 ; i<2 ; i++) ++ { ++ movedialog( 10 ); ++ movedialog( -20 ); ++ movedialog( 20 ); ++ movedialog( -20 ); ++ movedialog( 20 ); ++ movedialog( -10 ); ++ } ++ } ++} ++ + //--------------------------------------------------------------------------- + // + // Handle timer events. +@@ -442,6 +479,7 @@ + ok->setEnabled(false); + cancel->setEnabled(false); + mNewSessButton->setEnabled( false ); ++ badPasswordLogin(); + return; + case AuthAbort: + return; diff --git a/redhat/tdebase/tdebase-14.0.0.spec b/redhat/tdebase/tdebase-14.0.0.spec index f79c76b5a..662e11f80 100644 --- a/redhat/tdebase/tdebase-14.0.0.spec +++ b/redhat/tdebase/tdebase-14.0.0.spec @@ -71,6 +71,26 @@ Source8: tdm%{?dist}.pp Source9: mgabutton.svg %endif +# Patch party ! +## [tdebase/kdesktop] Modifies 'open terminal here' on desktop [RHEL/Fedora] +Patch1: tdebase-14.0.0-open_terminal_here.patch +## [tdebase/starttde] Sets default Start Icon in 'kickerrc' [RHEL/Fedora] +Patch2: tdebase-14.0.0-default_menu_icon.patch +## [kdebase/kcontrol] Adds FR translation for KCM ICC +Patch3: tdebase-14.0.0-displayconfig_translation.patch +## [kdebase/kcontrol] Adds FR translation for KCM ICC +Patch4: tdebase-14.0.0-kickoff_default_favs.patch +## [kdebase] Changes konsole default word separator +Patch5: tdebase-14.0.0-konsole_wordseps.patch + +# Patches from Mandriva +Patch101: tdebase-14.0.0-vibrate_dialog.patch +Patch102: tdebase-14.0.0-kcontrol_menu_entry.patch +Patch103: tdebase-14.0.0-kdesktop_crossfade.patch +Patch104: tdebase-14.0.0-kickoff_xdg_dirs.patch +Patch105: tdebase-14.0.0-suspend_unmount.patch +Patch106: tdebase-14.0.0-bookmark_global_copy.patch + ### Distribution-specific settings ### @@ -2774,9 +2794,15 @@ TDE will start, but many good defaults will not be set. %post -n trinity-ksmserver /sbin/ldconfig || : +%if 0%{?mdkversion} || 0%{?mgaversion} +fndSession +%endif %postun -n trinity-ksmserver /sbin/ldconfig || : +%if 0%{?mdkversion} || 0%{?mgaversion} +fndSession +%endif ########## @@ -3173,7 +3199,18 @@ Windows and Samba shares. %prep %setup -q -n %{name}-%{version}%{?preversion:~%{preversion}} %patch0 -p1 -b .ftbfs - +%patch1 -p1 -b .openterminalhere +%patch2 -p1 -b .startmenuicon +%patch3 -p1 -b .displayconfigtranslation +%patch4 -p1 -b .kickoffdefaultsfav +%patch5 -p1 -b .konsolewordseps + +%patch101 -p1 -b .vibrate_dialog +%patch102 -p1 -b .kcontrol_menu_entry +%patch103 -p1 -b .kdesktop_crossfade +%patch104 -p1 -b .kickoff_xdg +%patch105 -p1 -b .suspend_unmount +%patch106 -p1 -b .bookmark_global_copy # Applies an optional distro-specific graphical theme %if "%{?tde_bg}" != "" @@ -3206,6 +3243,14 @@ Windows and Samba shares. -e "s|/opt/trinity|%{tde_prefix}|g" \ -e "s|%%{tde_starticon}|%{tde_starticon}|g" +# Xsession script location may vary on some distro +%if 0%{?rhel} || 0%{?fedora} +%__sed -i "tdm/kfrontend/gentdmconf.c" -e "s|/etc/X11/Xsession|/etc/X11/xinit/Xsession|" +%endif +%if 0%{?suse_version} +%__sed -i "tdm/kfrontend/gentdmconf.c" -e "s|/etc/X11/Xsession|/etc/X11/xdm/Xsession|" +%endif + %build unset QTDIR @@ -3381,7 +3426,7 @@ EOF # Mageia icon %if 0%{?mgaversion} >= 3 -%__install -D -m 644 %{SOURCE9} %{?buildroot}%{tde_datadir}/oxygen/scalable/mgabutton.svg +%__install -D -m 644 "%{SOURCE9}" "%{?buildroot}%{tde_datadir}/oxygen/scalable/mgabutton.svg" %endif diff --git a/redhat/tdebase/tdebase-3.5.13.2-kdesktop_crossfade.patch b/redhat/tdebase/tdebase-3.5.13.2-kdesktop_crossfade.patch index 3b4e86819..0d6e5cf83 100644 --- a/redhat/tdebase/tdebase-3.5.13.2-kdesktop_crossfade.patch +++ b/redhat/tdebase/tdebase-3.5.13.2-kdesktop_crossfade.patch @@ -814,7 +814,7 @@ diff -p -up kdebase-3.5.9/kcontrol/background/KCrossBGRender.cc.crossfade-efect #include <tqstring.h> #include <tqptrvector.h> -+#include <qdatetime.h> ++#include <tqdatetime.h> #include <KBackgroundIface.h> #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300 |