diff --git a/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-ftbfs.patch b/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-ftbfs.patch new file mode 100644 index 000000000..8c4b63482 --- /dev/null +++ b/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-ftbfs.patch @@ -0,0 +1,10 @@ +--- trinity-gtk3-tqt-engine-14.0.0~pre82+f0afd14d/tdegtk/Makefile.am.ORI 2013-07-07 15:07:12.912770044 +0200 ++++ trinity-gtk3-tqt-engine-14.0.0~pre82+f0afd14d/tdegtk/Makefile.am 2013-07-07 15:11:43.224706604 +0200 +@@ -55,6 +55,6 @@ + libtqtcairo_la_CFLAGS = $(TDEGTK_CFLAGS) $(CAIRO_CFLAGS) $(GTK3_CFLAGS) + libtqtcairo_la_CXXFLAGS = $(TDEGTK_CXXFLAGS) $(TDEGTK_CFLAGS) $(CAIRO_CFLAGS) $(GTK3_CFLAGS) + +-libtqtcairo_la_LIBADD = $(TDEGTK_LIBADD) ++libtqtcairo_la_LIBADD = $(TDEGTK_LIBADD) $(LIB_QT) $(LIB_TDEUI) + + libtqtcairo_la_LDFLAGS = $(TDEGTK_LDFLAGS) $(CAIRO_LIBS) $(GTK3_LIBS) diff --git a/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-libsuffix.patch b/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-libsuffix.patch new file mode 100644 index 000000000..ce8bffee9 --- /dev/null +++ b/redhat/applications/gtk3-tqt-engine/gtk3-tqt-engine-14.0.0-libsuffix.patch @@ -0,0 +1,11 @@ +--- trinity-gtk3-tqt-engine-14.0.0~pre82+f0afd14d/tdegtk/Makefile.am 2013-07-07 15:16:58.922069997 +0200 ++++ trinity-gtk3-tqt-engine-14.0.0~pre82+f0afd14d/tdegtk/Makefile.am.libsuffix 2013-07-07 15:23:35.272293968 +0200 +@@ -36,7 +36,7 @@ + $(srcdir)/tdegtk-baseengine.cpp \ + $(srcdir)/tdegtk-theme.cpp + +-enginedir = $(GTK3_PREFIX)/lib/gtk-3.0/$(GTK3_VERSION)/theming-engines ++enginedir = $(GTK3_PREFIX)/lib64/gtk-3.0/$(GTK3_VERSION)/theming-engines + engine_LTLIBRARIES = libtdegtk.la + + libtdegtk_la_SOURCES = $(source_h) $(source_c) diff --git a/redhat/applications/kbiff/kbiff-14.0.0-ftbfs.patch b/redhat/applications/kbiff/kbiff-14.0.0-ftbfs.patch new file mode 100644 index 000000000..789918cdc --- /dev/null +++ b/redhat/applications/kbiff/kbiff-14.0.0-ftbfs.patch @@ -0,0 +1,11 @@ +--- trinity-kbiff-14.0.0~pre6+b63c54d4/kbiff/Makefile.am.ORI 2013-07-07 13:17:16.270257111 +0200 ++++ trinity-kbiff-14.0.0~pre6+b63c54d4/kbiff/Makefile.am 2013-07-07 13:17:41.911536825 +0200 +@@ -24,7 +24,7 @@ + + # the libraries to link against. Be aware of the order. First the libraries, + # that depend on the following ones. +-kbiff_la_LIBADD = $(LIB_KFILE) $(LIB_KIO) ++kbiff_la_LIBADD = $(LIB_KFILE) $(LIB_KIO) $(LIB_QT) $(LIB_TDECORE) -lDCOP $(LIB_TDEUI) + + # this option you can leave out. Just, if you use "make dist", you need it + noinst_HEADERS = setupdlg.h kbiff.h kbiffmonitor.h notify.h kbiffurl.h \ diff --git a/redhat/applications/kdbg/kdbg-14.0.0.spec b/redhat/applications/kdbg/kdbg-14.0.0.spec new file mode 100644 index 000000000..a3553ff45 --- /dev/null +++ b/redhat/applications/kdbg/kdbg-14.0.0.spec @@ -0,0 +1,152 @@ +# Default version for this component +%define tde_pkg kdbg +%define tde_version 14.0.0 + +# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt". +%if "%{?tde_prefix}" != "/usr" +%define _variant .opt +%endif + +# TDE specific building variables +%define tde_bindir %{tde_prefix}/bin +%define tde_datadir %{tde_prefix}/share +%define tde_docdir %{tde_datadir}/doc +%define tde_includedir %{tde_prefix}/include +%define tde_libdir %{tde_prefix}/%{_lib} +%define tde_mandir %{tde_datadir}/man + +%define tde_tdeappdir %{tde_datadir}/applications/tde +%define tde_tdedocdir %{tde_docdir}/tde +%define tde_tdeincludedir %{tde_includedir}/tde +%define tde_tdelibdir %{tde_libdir}/trinity + +%define _docdir %{tde_docdir} + + +Name: trinity-%{tde_pkg} +Summary: graphical debugger interface [Trinity] +Version: 2.2.2 +Release: %{?!preversion:1}%{?preversion:0_%{preversion}}%{?dist}%{?_variant} + +License: GPLv2+ +Group: Applications/Utilities + +Vendor: Trinity Project +Packager: Francois Andriot +URL: http://www.trinitydesktop.org/ + +Prefix: %{_prefix} +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +#Source0: %{name}-%{tde_version}%{?preversion:~%{preversion}}.tar.gz +Source0: kdbg-master.tar.gz +Source1: admin-master.tar.gz + +BuildRequires: trinity-tqtinterface-devel >= %{tde_version} +BuildRequires: trinity-tdelibs-devel >= %{tde_version} +BuildRequires: trinity-tdebase-devel >= %{tde_version} +BuildRequires: desktop-file-utils +BuildRequires: gettext + + +%description +KDbg is a graphical user interface to gdb, the GNU debugger. It provides +an intuitive interface for setting breakpoints, inspecting variables, +stepping through code and much more. KDbg requires TDE but you can of +course debug any program. + +KDbg can also debug XSLT (XML stylesheet translation) scripts by +interfacing with xsldbg. For this the package kxsldbg must be installed. + +Features include the following: +* Inspection of variable values in a tree structure. +* Direct member: For certain compound data types the most important + member values are displayed next to the variable name, so that it is + not necessary to expand the subtree of that variable in order to see + the member value. KDbg can also display Qt's QString values, which + are Unicode strings. +* Debugger at your finger tips: The basic debugger functions (step, + next, run, finish, until, set/clear/enable/disable breakpoint) are + bound to function keys F5 through F10. Quick and easy. +* View source code, search text, set program arguments and environment + variables, display arbitrary expressions. +* Debugging of core dumps, attaching to running processes is possible. +* Conditional breakpoints. + +%if 0%{?suse_version} || 0%{?pclinuxos} +%debug_package +%endif + +########## + +%prep +#setup -q -n %{name}-%{tde_version}%{?preversion:~%{preversion}} +%setup -q -a 1 -n kdbg-master +rmdir admin +mv admin-master admin + +%__cp -f "/usr/share/aclocal/libtool.m4" "admin/libtool.m4.in" +%__cp -f "/usr/share/libtool/config/ltmain.sh" "admin/ltmain.sh" || %__cp -f "/usr/share/libtool/ltmain.sh" "admin/ltmain.sh" +%__make -f "admin/Makefile.common" + + +%build +unset QTDIR QTINC QTLIB +export PATH="%{tde_bindir}:${PATH}" +export LDFLAGS="-L%{tde_libdir} -I%{tde_includedir}" + +%configure \ + --prefix=%{tde_prefix} \ + --exec-prefix=%{tde_prefix} \ + --bindir=%{tde_bindir} \ + --datadir=%{tde_datadir} \ + --includedir=%{tde_tdeincludedir} \ + --docdir=%{tde_tdedocdir} \ + --libdir=%{tde_libdir} \ + --disable-rpath + +%__make %{?_smp_mflags} + + +%install +export PATH="%{tde_bindir}:${PATH}" +%__rm -rf %{buildroot} +%__make install DESTDIR=%{buildroot} + +%find_lang %{tde_pkg} + + +%clean +%__rm -rf %{buildroot} + + +%post +update-desktop-database %{tde_appdir} > /dev/null +touch --no-create %{tde_datadir}/icons/hicolor || : +gtk-update-icon-cache --quiet %{tde_datadir}/icons/hicolor || : +gtk-update-icon-cache --quiet %{tde_datadir}/icons/locolor || : + + +%postun +update-desktop-database %{tde_appdir} > /dev/null +touch --no-create %{tde_datadir}/icons/hicolor || : +gtk-update-icon-cache --quiet %{tde_datadir}/icons/hicolor || : +gtk-update-icon-cache --quiet %{tde_datadir}/icons/locolor || : + + +%files -f %{tde_pkg}.lang +%defattr(-,root,root,-) +%{tde_bindir}/kdbg +%{tde_tdeappdir}/kdbg.desktop +%{tde_datadir}/apps/kdbg/ +%{tde_datadir}/config/kdbgrc +%lang(de) %{tde_tdedocdir}/HTML/de/kdbg/ +%lang(en) %{tde_tdedocdir}/HTML/en/kdbg/ +%lang(ru) %{tde_tdedocdir}/HTML/ru/kdbg/ +%{tde_datadir}/icons/hicolor/*/apps/kdbg.png +%{tde_datadir}/icons/locolor/*/apps/kdbg.png + + +%changelog +* Fri Jul 05 2013 Francois Andriot - 2.2.2-1 +- Initial release for TDE 14.0.0 diff --git a/redhat/applications/knetworkmanager9/knetworkmanager9-14.0.0.spec b/redhat/applications/tdenetworkmanager/tdenetworkmanager-14.0.0.spec similarity index 94% rename from redhat/applications/knetworkmanager9/knetworkmanager9-14.0.0.spec rename to redhat/applications/tdenetworkmanager/tdenetworkmanager-14.0.0.spec index 6dbe572f5..ed472f8f4 100644 --- a/redhat/applications/knetworkmanager9/knetworkmanager9-14.0.0.spec +++ b/redhat/applications/tdenetworkmanager/tdenetworkmanager-14.0.0.spec @@ -1,5 +1,5 @@ # Default version for this component -%define tde_pkg knetworkmanager9 +%define tde_pkg tdenetworkmanager %define tde_version 14.0.0 # If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt". @@ -32,7 +32,8 @@ Summary: Trinity applet for Network Manager Group: Applications/Internet License: GPLv2+ -URL: http://en.opensuse.org/Projects/KNetworkManager +#URL: http://en.opensuse.org/Projects/KNetworkManager +URL: http://www.trinitydesktop.org/ Source0: %{name}-%{tde_version}%{?preversion:~%{preversion}}.tar.gz @@ -44,6 +45,10 @@ BuildRequires: trinity-tdebase-devel >= %{tde_version} BuildRequires: desktop-file-utils BuildRequires: gettext + +Obsoletes: trinity-knetworkmanager < %{version}-%{release} +Provides: trinity-knetworkmanager = %{version}-%{release} + %if 0%{?rhel} || 0%{?fedora} Requires: NetworkManager-gnome %else diff --git a/redhat/applications/kpowersave-nohal/kpowersave-nohal-14.0.0.spec b/redhat/applications/tdepowersave/tdepowersave-14.0.0.spec similarity index 94% rename from redhat/applications/kpowersave-nohal/kpowersave-nohal-14.0.0.spec rename to redhat/applications/tdepowersave/tdepowersave-14.0.0.spec index c32f525e0..070ee3021 100644 --- a/redhat/applications/kpowersave-nohal/kpowersave-nohal-14.0.0.spec +++ b/redhat/applications/tdepowersave/tdepowersave-14.0.0.spec @@ -1,5 +1,5 @@ # Default version for this component -%define tdecomp kpowersave-nohal +%define tdecomp tdepowersave %define tde_version 14.0.0 # If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt". @@ -48,9 +48,11 @@ BuildRequires: trinity-tdelibs-devel >= %{tde_version} BuildRequires: trinity-tdebase-devel >= %{tde_version} BuildRequires: desktop-file-utils +Obsoletes: trinity-kpowersave < %{version}-%{release} +Provides: trinity-kpowersave = %{version}-%{release} %description -KPowersave is a TDE systray applet which allows to control the power +TDEPowersave is a TDE systray applet which allows to control the power management settings and policies of your computer. Current feature list: @@ -87,6 +89,7 @@ settings for: %prep %setup -q -n %{name}-%{tde_version}%{?preversion:~%{preversion}} + %build unset QTDIR QTINC QTLIB export PATH="%{tde_bindir}:${PATH}" @@ -125,6 +128,7 @@ update-desktop-database %{tde_appdir} > /dev/null touch --no-create %{tde_datadir}/icons/hicolor || : gtk-update-icon-cache --quiet %{tde_datadir}/icons/hicolor || : + %postun update-desktop-database %{tde_appdir} > /dev/null /sbin/ldconfig @@ -147,6 +151,7 @@ gtk-update-icon-cache --quiet %{tde_datadir}/icons/hicolor || : %{tde_datadir}/autostart/kpowersave-autostart.desktop %{tde_datadir}/config/kpowersaverc + %changelog * Thu Jul 04 2013 Francois Andriot - 0.7.3-5 - Initial release for TDE 14.0.0 @@ -155,7 +160,7 @@ gtk-update-icon-cache --quiet %{tde_datadir}/icons/hicolor || : - Initial release for TDE 3.5.13.2 * Wed Oct 03 2012 Francois Andriot - 0.7.3-3 -- Initial build for TDE 3.5.13.1 +- Initial release for TDE 3.5.13.1 * Sat Nov 26 2011 Francois Andriot - 0.7.3-2 - Add missing /sbin/ldconfig diff --git a/redhat/dependencies/avahi-tqt/avahi-tqt-14.0.0.spec b/redhat/dependencies/avahi-tqt/avahi-tqt-14.0.0.spec index 2e09f82b3..17acc05e1 100644 --- a/redhat/dependencies/avahi-tqt/avahi-tqt-14.0.0.spec +++ b/redhat/dependencies/avahi-tqt/avahi-tqt-14.0.0.spec @@ -33,6 +33,8 @@ BuildRequires: trinity-tqt3-devel >= 3.5.0 BuildRequires: trinity-tqtinterface-devel >= %{version} BuildRequires: gettext-devel BuildRequires: libtool + +# DBUS support %if 0%{?suse_version} BuildRequires: dbus-1-devel %else diff --git a/redhat/dependencies/sip4-tqt/sip4-tqt.spec b/redhat/dependencies/sip4-tqt/sip4-tqt.spec new file mode 100644 index 000000000..2de637176 --- /dev/null +++ b/redhat/dependencies/sip4-tqt/sip4-tqt.spec @@ -0,0 +1,136 @@ +# Some distribution already provides this package. +# Mageia 3 + +%{!?python_sitearch:%global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} + +# Always install under standard prefix +%define tde_prefix /usr + +%define tde_includedir %{tde_prefix}/include +%define tde_libdir %{tde_prefix}/%{_lib} + +Name: trinity-sip4-tqt +Epoch: 2 +Version: 14.0.0 +Release: %{?!preversion:1}%{?preversion:0_%{preversion}}%{?dist}%{?_variant} +License: GPL +Summary: Python/C++ bindings generator runtime library +Group: System Environment/Libraries + +Vendor: Trinity Project +Packager: Francois Andriot + +Prefix: %{tde_prefix} +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +Source0: %{name}-%{version}%{?preversion:~%{preversion}}.tar.gz + +BuildRequires: trinity-tqtinterface-devel >= %{version} + +# TDE specific building variables +BuildRequires: cmake >= 2.8 +BuildRequires: trinity-tqt3-devel >= %{version} + +%description + +########## + +%package -n python-sip +Summary: Python/C++ bindings generator runtime library +Epoch: 2 + +%description -n python-sip +SIP is a tool for generating bindings for C++ classes with some ideas +borrowed from SWIG, but capable of tighter bindings because of its +specificity towards C++ and Python. + +%post -n python-sip +/sbin/ldconfig || : + +%postun -n python-sip +/sbin/ldconfig || : + +%files -n python-sip +%defattr(-,root,root,-) +%{python_sitearch}/sip.so +%{python_sitearch}/sipconfig.py +%{python_sitearch}/sipdistutils.py + + +########## + +%package -n python-sip-devel +Summary: Python/C++ bindings generator development files +Group: Development/Libraries +Requires: python-sip = %{version}-%{release} + +%description -n python-sip-devel +SIP is a tool for generating bindings for C++ classes with some ideas +borrowed from SWIG, but capable of tighter bindings because of its +specificity towards C++ and Python. + +SIP was originally designed to generate Python bindings for KDE and so +has explicit support for the signal slot mechanism used by the Qt/KDE +class libraries. + +Features: +- connecting Qt signals to Python functions and class methods +- connecting Python signals to Qt slots +- overloading virtual member functions with Python class methods +- protected member functions +- abstract classes +- enumerated types +- global class instances +- static member functions. + +This package contains the code generator tool and the development headers +needed to develop Python bindings with sip. + +%post -n python-sip-devel +/sbin/ldconfig || : + +%postun -n python-sip-devel +/sbin/ldconfig || : + +%files -n python-sip-devel +%defattr(-,root,root,-) +%{_bindir}/sip +%{_includedir}/python*/sip.h + +########## + +%if 0%{?suse_version} || 0%{?pclinuxos} +%debug_package +%endif + + +%prep +%setup -q -n %{name}-%{version}%{?preversion:~%{preversion}} + + +%build +unset QTDIR QTINC QTLIB +export PKG_CONFIG_PATH="%{tde_libdir}/pkgconfig" + +mkdir build +cd build +python ../configure.py \ + -d %{python_sitearch} \ + -u STRIP="" \ + CFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/tqt -I%{_includedir}/tqt3" \ + CFLAGS_RELEASE="" \ + CXXFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/tqt -I%{_includedir}/tqt3" \ + CXXFLAGS_RELEASE="" + + +%install +%__rm -rf %{?buildroot} +%__make install DESTDIR=%{?buildroot} -C build + +%clean +%__rm -rf %{?buildroot} + + +%changelog +* Thu Feb 16 2012 Francois Andriot - 14.0.0-1 +- Initial build for TDE R14, using 'tqt3' instead of 'qt3' diff --git a/redhat/extras/trinity-desktop/trinity-desktop-14.0.0.spec b/redhat/extras/trinity-desktop/trinity-desktop-14.0.0.spec index ad8a60b9e..eb7a65689 100644 --- a/redhat/extras/trinity-desktop/trinity-desktop-14.0.0.spec +++ b/redhat/extras/trinity-desktop/trinity-desktop-14.0.0.spec @@ -125,6 +125,7 @@ Requires: trinity-kcmldap Requires: trinity-kcmldapcontroller Requires: trinity-kcmldapmanager Requires: trinity-kcpuload +Requires: trinity-kdbg Requires: trinity-kdiff3 Requires: trinity-kdirstat Requires: trinity-keep @@ -159,8 +160,6 @@ Requires: trinity-potracegui Requires: trinity-smb4k Requires: trinity-smartcardauth Requires: trinity-soundkonverter -Requires: trinity-tde-guidance -Requires: trinity-tde-guidance-powermanager Requires: trinity-tde-style-lipstik Requires: trinity-tde-style-qtcurve Requires: trinity-tde-systemsettings @@ -180,7 +179,7 @@ Requires: trinity-gtk3-tqt-engine # Disabled applications for RHEL5 %if 0%{?rhel} >= 6 || 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version} # On RHEL 5, HAL version is too old for kpowersave . -Requires: trinity-kpowersave-nohal +Requires: trinity-tdekpowersave # On RHEL 5, GTK2 version is too old for GTK stuff ... Requires: trinity-gtk-qt-engine # On RHEL 5, lilypond is not available, so no rosegarden :'-( @@ -189,6 +188,14 @@ Requires: trinity-rosegarden Requires: trinity-kpilot %endif +# These python stuff have not been ported to TQT3 and still rely on HAL +#Requires: trinity-tde-guidance +#Requires: trinity-tde-guidance-powermanager +Obsoletes: trinity-guidance +Obsoletes: trinity-guidance-powermanager +Obsoletes: trinity-tde-guidance +Obsoletes: trinity-tde-guidance-powermanager + # This one causes several crashes . Obsolete. #Requires: trinity-kgtk-qt3 Obsoletes: trinity-kgtk-qt3 @@ -198,11 +205,13 @@ Obsoletes: trinity-kgtk-qt3 Obsoletes: trinity-kerry # RHEL 6 only: knetworkmanager8 -# knetworkmanager9 is too unstable for now. %if 0%{?rhel} == 6 Requires: trinity-knetworkmanager8 %endif -Requires: trinity-knetworkmanager9 +# Other distros: tdenetworkmanager (knetworkmanager9) +%if 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version} || 0%{?fedora} +Requires: trinity-tdenetworkmanager +%endif # RHEL 4 %if 0%{?rhel} >= 5 || 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version} 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 + #include ++#include ++#include + #include + + 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 <$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 ++ * ++ * 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 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++ ++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 + ++#include "KCrossBGRender.h" ++ + #include + #include + #include +@@ -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; isetSize(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(this->sender()); ++ //const KBackgroundRenderer * sender = dynamic_cast(this->sender()); ++ const KCrossBGRender * sender = dynamic_cast(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 ++ * Copyright (C) 2008 Gustavo Boiko ++ * 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 ++#include ++#include ++#include ++ ++#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 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 m_bFinished; +- TQPtrVector m_renderer; ++ //TQPtrVector m_renderer; ++ TQPtrVector 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 ++ * Copyright (C) 2008 Gustavo Boiko ++ * 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 ++#include ++ ++#include ++ ++#include "KCrossBGRender.h" ++//#include "crossfade.h" ++#include ++#include ++ ++ ++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::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 + + #include ++#include + + + 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 + + #include + #include ++#include ++#include + + #include + #include +@@ -34,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #ifndef None + #define None 0L +@@ -47,7 +55,8 @@ + + #include "pixmapserver.h" + +-template class TQPtrVector; ++//template class TQPtrVector; ++template class TQPtrVector; + template class TQPtrVector; + template class TQMemArray; + +@@ -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( m_pDesktop->backgroundPixmap() ); ++ }else{ ++ mOldScreen = const_cast( ++ 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 + #include + ++#include + #include + + #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> + + ++ ++ ++ m_cbCrossFadeBg ++ ++ ++ Cross-fading background ++ ++ ++ Enables a smooth fading effect when changing background image. ++ ++ + + + m_comboBlend +--- 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 ++ * ++ * 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 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++ ++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 + ++#include "KCrossBGRender.h" ++ + #include + #include + #include +@@ -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; isetSize(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(this->sender()); ++ //const KBackgroundRenderer * sender = dynamic_cast(this->sender()); ++ const KCrossBGRender * sender = dynamic_cast(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 ++ * Copyright (C) 2008 Gustavo Boiko ++ * 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 ++#include ++#include ++#include ++ ++#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 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 m_bFinished; +- TQPtrVector m_renderer; ++ //TQPtrVector m_renderer; ++ TQPtrVector 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 ++ * Copyright (C) 2008 Gustavo Boiko ++ * 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 ++#include ++ ++#include ++ ++#include "KCrossBGRender.h" ++//#include "crossfade.h" ++#include ++#include ++ ++ ++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::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 + + #include ++#include + + + 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 + + #include + #include ++#include ++#include + + #include + #include +@@ -34,6 +40,8 @@ + #include + #include + #include ++#include ++#include + + #ifndef None + #define None 0L +@@ -47,7 +55,8 @@ + + #include "pixmapserver.h" + +-template class TQPtrVector; ++//template class TQPtrVector; ++template class TQPtrVector; + template class TQPtrVector; + template class TQMemArray; + +@@ -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( m_pDesktop->backgroundPixmap() ); ++ }else{ ++ mOldScreen = const_cast( ++ 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 + #include + ++#include + #include + + #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> + + ++ ++ ++ m_cbCrossFadeBg ++ ++ ++ Cross-fading background ++ ++ ++ Enables a smooth fading effect when changing background image. ++ ++ + + + m_comboBlend +--- 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 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; + }; +--- ./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 list = m_mediaList.list(); ++ ++ TQPtrList::const_iterator it = list.begin(); ++ TQPtrList::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 + #include + #include ++#include + + #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 8c1104287..f239819f5 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 ### @@ -2793,9 +2813,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 ########## @@ -3191,7 +3217,18 @@ Windows and Samba shares. %prep %setup -q -n %{name}-%{version}%{?preversion:~%{preversion}} - +%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}" != "" @@ -3224,6 +3261,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 @@ -3410,7 +3455,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 #include -+#include ++#include #include #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300 diff --git a/redhat/tdelibs/tdelibs-14.0.0-cups_by_default.patch b/redhat/tdelibs/tdelibs-14.0.0-cups_by_default.patch new file mode 100644 index 000000000..2f281cf04 --- /dev/null +++ b/redhat/tdelibs/tdelibs-14.0.0-cups_by_default.patch @@ -0,0 +1,33 @@ +--- ./tdeprint/kmfactory.cpp.ORI 2013-05-09 00:14:51.664045869 +0200 ++++ ./tdeprint/kmfactory.cpp 2013-05-09 00:16:59.154367127 +0200 +@@ -249,8 +249,21 @@ + conf->writeEntry("PrintSystem", sys); + conf->sync(); + } +- else if ( sys.length()==1 && sys[0].isDigit() ) // discard old-style settings ++ else if ( sys.length()==1 && sys[0].isDigit() ) { // discard old-style settings + sys = "lpdunix"; ++ } else { ++ //Always Autodetect ++ //it will not try autodetect if user changes any option ++ //when user force some option, AlwaysSearch will be "no" and then ++ //kprinter will not to try autodetect again. ++ if(conf->readEntry("AlwaysSearch") != "no" ) { ++ sys = autoDetect(); ++ conf->writeEntry("PrintSystem",sys); ++ conf->writeEntry("AlwaysSearch","yes"); ++ conf->sync(); ++ } ++ } ++ + return sys; + } + +@@ -278,6 +291,7 @@ + { + TDEConfig *conf = printConfig(); + conf->setGroup("General"); ++ conf->writeEntry("AlwaysSearch","no"); + conf->writeEntry("PrintSystem", syst); + conf->sync(); + diff --git a/redhat/tdelibs/tdelibs-14.0.0-fix_battery_charge.patch b/redhat/tdelibs/tdelibs-14.0.0-fix_battery_charge.patch new file mode 100644 index 000000000..2b09620bb --- /dev/null +++ b/redhat/tdelibs/tdelibs-14.0.0-fix_battery_charge.patch @@ -0,0 +1,18 @@ +--- trinity-tdelibs-14.0.0~pre596+d6816283/tdecore/tdehardwaredevices.cpp.batterycharge 2013-07-07 11:55:57.000000000 +0200 ++++ trinity-tdelibs-14.0.0~pre596+d6816283/tdecore/tdehardwaredevices.cpp 2013-07-08 20:21:00.196653825 +0200 +@@ -4704,6 +4704,15 @@ + if (nodename == "alarm") { + bdevice->internalSetAlarmEnergy(line.toDouble()/1000000.0); + } ++ if (nodename == "charge_full") { ++ bdevice->internalSetMaximumEnergy(line.toDouble()/1000000.0); ++ } ++ if (nodename == "charge_full_design") { ++ bdevice->internalSetMaximumDesignEnergy(line.toDouble()/1000000.0); ++ } ++ if (nodename == "charge_now") { ++ bdevice->internalSetEnergy(line.toDouble()/1000000.0); ++ } + if (nodename == "energy_full") { + bdevice->internalSetMaximumEnergy(line.toDouble()/1000000.0); + } diff --git a/redhat/tdelibs/tdelibs-14.0.0-xdg_dirs_set_path.patch b/redhat/tdelibs/tdelibs-14.0.0-xdg_dirs_set_path.patch new file mode 100644 index 000000000..f32dec25b --- /dev/null +++ b/redhat/tdelibs/tdelibs-14.0.0-xdg_dirs_set_path.patch @@ -0,0 +1,150 @@ +--- ./tdecore/tdeglobalsettings.h.Ori 2013-05-08 22:16:42.771982104 +0200 ++++ ./tdecore/tdeglobalsettings.h 2013-05-08 22:18:33.882577602 +0200 +@@ -253,6 +253,29 @@ + */ + static TQString documentPath() { initStatic(); return *s_documentPath; } + ++ /** ++ * The path where documents are stored of the current user. ++ * @return the path of the videos directory ++ */ ++ static TQString videosPath() { initStatic(); return *s_videosPath; } ++ ++ /** ++ * The path where documents are stored of the current user. ++ * @return the path of the music directory ++ */ ++ static TQString musicPath() { initStatic(); return *s_musicPath; } ++ ++ /** ++ * The path where documents are stored of the current user. ++ * @return the path of the downloads directory ++ */ ++ static TQString downloadPath() { initStatic(); return *s_downloadPath; } ++ ++ /** ++ * The path where documents are stored of the current user. ++ * @return the path of the pictures directory ++ */ ++ static TQString picturesPath() { initStatic(); return *s_picturesPath; } + + /** + * The default color to use when highlighting toolbar buttons. +@@ -560,6 +583,10 @@ + static TQString* s_autostartPath; + static TQString* s_trashPath; + static TQString* s_documentPath; ++ static TQString* s_picturesPath; ++ static TQString* s_downloadPath; ++ static TQString* s_musicPath; ++ static TQString* s_videosPath; + static TQFont *_generalFont; + static TQFont *_fixedFont; + static TQFont *_toolBarFont; +--- ./tdecore/tdeglobalsettings.cpp.xdg_path 2013-01-09 19:23:09.000000000 +0100 ++++ ./tdecore/tdeglobalsettings.cpp 2013-05-08 22:26:26.451376166 +0200 +@@ -62,6 +62,10 @@ + TQString* TDEGlobalSettings::s_autostartPath = 0; + TQString* TDEGlobalSettings::s_trashPath = 0; + TQString* TDEGlobalSettings::s_documentPath = 0; ++TQString* TDEGlobalSettings::s_videosPath = 0; ++TQString* TDEGlobalSettings::s_musicPath = 0; ++TQString* TDEGlobalSettings::s_downloadPath = 0; ++TQString* TDEGlobalSettings::s_picturesPath = 0; + TQFont *TDEGlobalSettings::_generalFont = 0; + TQFont *TDEGlobalSettings::_fixedFont = 0; + TQFont *TDEGlobalSettings::_toolBarFont = 0; +@@ -83,7 +87,7 @@ + + // helper function for reading xdg user dirs: it is required in order to take + // care of locale stuff +-void readXdgUserDirs(TQString *desktop, TQString *documents) ++void readXdgUserDirs(TQString *desktop, TQString *documents, TQString *videos, TQString *music, TQString *download, TQString *pictures) + { + TQFile f( TQDir::homeDirPath() + "/.config/user-dirs.dirs" ); + +@@ -101,6 +105,14 @@ + *desktop = line.remove("XDG_DESKTOP_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + else if (line.startsWith("XDG_DOCUMENTS_DIR=")) + *documents = line.remove("XDG_DOCUMENTS_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); ++ else if (line.startsWith("XDG_MUSIC_DIR=")) ++ *videos = line.remove("XDG_MUSIC_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); ++ else if (line.startsWith("XDG_DOWNLOAD_DIR=")) ++ *download = line.remove("XDG_DOWNLOAD_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); ++ else if (line.startsWith("XDG_VIDEOS_DIR=")) ++ *music = line.remove("XDG_VIDEOS_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); ++ else if (line.startsWith("XDG_PICTURES_DIR=")) ++ *pictures = line.remove("XDG_PICTURES_DIR=").remove("\"").replace("$HOME", TQDir::homeDirPath()); + + line = s.readLine(); + } +@@ -515,30 +527,45 @@ + s_autostartPath = new TQString(); + s_trashPath = new TQString(); + s_documentPath = new TQString(); ++ s_videosPath = new TQString(); ++ s_musicPath = new TQString(); ++ s_downloadPath = new TQString(); ++ s_picturesPath = new TQString(); ++ + + TDEConfigGroup g( TDEGlobal::config(), "Paths" ); + +- // Read desktop and documents path using XDG_USER_DIRS +- readXdgUserDirs(s_desktopPath, s_documentPath); ++ // Read desktop and documents path using XDG_USER_DIRS ++ readXdgUserDirs(s_desktopPath, s_documentPath, s_musicPath, s_videosPath, s_downloadPath, s_picturesPath); + + if (s_desktopPath->isEmpty() == true) { + *s_desktopPath = TQDir::homeDirPath() + "/Desktop/"; + } ++ + *s_desktopPath = TQDir::cleanDirPath( *s_desktopPath ); + if ( !s_desktopPath->endsWith("/") ) + s_desktopPath->append('/'); + +- if (s_documentPath->isEmpty() == true) { +-#ifdef Q_WS_WIN +- *s_documentPath = getWin32ShellFoldersPath("Personal"); +-#else +- *s_documentPath = TQDir::homeDirPath() + "/Documents/"; +-#endif +- } + *s_documentPath = TQDir::cleanDirPath( *s_documentPath ); + if ( !s_documentPath->endsWith("/")) + s_documentPath->append('/'); + ++ *s_musicPath = TQDir::cleanDirPath( *s_musicPath ); ++ if ( !s_musicPath->endsWith("/")) ++ s_musicPath->append('/'); ++ ++ *s_videosPath = TQDir::cleanDirPath( *s_videosPath ); ++ if ( !s_videosPath->endsWith("/")) ++ s_videosPath->append('/'); ++ ++ *s_downloadPath = TQDir::cleanDirPath( *s_downloadPath ); ++ if ( !s_downloadPath->endsWith("/")) ++ s_downloadPath->append('/'); ++ ++ *s_picturesPath = TQDir::cleanDirPath( *s_picturesPath ); ++ if ( !s_picturesPath->endsWith("/")) ++ s_picturesPath->append('/'); ++ + // Trash Path - TODO remove in KDE4 (tdeio_trash can't use it for interoperability reasons) + *s_trashPath = *s_desktopPath + i18n("Trash") + "/"; + *s_trashPath = g.readPathEntry( "Trash" , *s_trashPath); +@@ -603,6 +630,14 @@ + s_desktopPath = 0L; + delete s_documentPath; + s_documentPath = 0L; ++ delete s_videosPath; ++ s_videosPath = 0L; ++ delete s_picturesPath; ++ s_picturesPath = 0L; ++ delete s_downloadPath; ++ s_downloadPath = 0L; ++ delete s_musicPath; ++ s_musicPath = 0L; + } + + TDEGlobalSettings::KMouseSettings & TDEGlobalSettings::mouseSettings() diff --git a/redhat/tdelibs/tdelibs-14.0.0.spec b/redhat/tdelibs/tdelibs-14.0.0.spec index 37d2bf0ff..f301dae6a 100644 --- a/redhat/tdelibs/tdelibs-14.0.0.spec +++ b/redhat/tdelibs/tdelibs-14.0.0.spec @@ -32,6 +32,12 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: %{name}-%{version}%{?preversion:~%{preversion}}.tar.gz +# Patches from Mandriva +Patch1: tdelibs-14.0.0-xdg_dirs_set_path.patch +Patch2: tdelibs-14.0.0-cups_by_default.patch + +# Fix battery charge detection +Patch3: tdelibs-14.0.0-fix_battery_charge.patch Obsoletes: tdelibs < %{version}-%{release} Provides: tdelibs = %{version}-%{release} @@ -232,13 +238,13 @@ kimgio (image manipulation). %{tde_bindir}/tdecmshell %{tde_bindir}/tdeconf_update %{tde_bindir}/kcookiejar -%{tde_bindir}/[kt]de-config -%{tde_bindir}/[kt]de-menu +%{tde_bindir}/tde-config +%{tde_bindir}/tde-menu %{tde_bindir}/kded -%{tde_bindir}/[kt]deinit -%{tde_bindir}/[kt]deinit_shutdown -%{tde_bindir}/[kt]deinit_wrapper -%{tde_bindir}/[kt]desu_stub +%{tde_bindir}/tdeinit +%{tde_bindir}/tdeinit_shutdown +%{tde_bindir}/tdeinit_wrapper +%{tde_bindir}/tdesu_stub %{tde_bindir}/kdetcompmgr %{tde_bindir}/kdontchangethehostname %{tde_bindir}/tdedostartupconfig @@ -265,8 +271,8 @@ kimgio (image manipulation). %{tde_bindir}/make_driver_db_lpr %{tde_bindir}/meinproc %{tde_bindir}/networkstatustestservice -%{tde_bindir}/start_[kt]deinit -%{tde_bindir}/start_[kt]deinit_wrapper +%{tde_bindir}/start_tdeinit +%{tde_bindir}/start_tdeinit_wrapper %attr(4755,root,root) %{tde_bindir}/kgrantpty %{tde_bindir}/tde_dbus_hardwarecontrol %{tde_bindir}/checkXML @@ -275,9 +281,9 @@ kimgio (image manipulation). %{tde_bindir}/preparetips %{tde_tdelibdir}/* %{tde_libdir}/lib*.so.* -%{tde_libdir}/lib[kt]deinit_*.la -%{tde_libdir}/lib[kt]deinit_*.so -%{tde_datadir}/applications/[kt]de/*.desktop +%{tde_libdir}/libtdeinit_*.la +%{tde_libdir}/libtdeinit_*.so +%{tde_datadir}/applications/tde/*.desktop %{tde_datadir}/autostart/tdeab2tdeabc.desktop %{tde_datadir}/applnk/tdeio_iso.desktop %{tde_datadir}/apps/* @@ -333,16 +339,16 @@ applications for TDE. %defattr(-,root,root,-) %{tde_bindir}/dcopidl* %{tde_bindir}/*config_compiler -%{tde_bindir}/make[kt]dewidgets +%{tde_bindir}/maketdewidgets %{tde_datadir}/apps/ksgmltools2/ %{tde_tdeincludedir}/* %{tde_libdir}/*.la %{tde_libdir}/*.so %{tde_libdir}/*.a %{tde_libdir}/pkgconfig/tdelibs.pc -%exclude %{tde_libdir}/lib[kt]deinit_*.la -%exclude %{tde_libdir}/lib[kt]deinit_*.so -%{tde_datadir}/cmake/[kt]delibs.cmake +%exclude %{tde_libdir}/libtdeinit_*.la +%exclude %{tde_libdir}/libtdeinit_*.so +%{tde_datadir}/cmake/tdelibs.cmake %post devel /sbin/ldconfig || : @@ -360,6 +366,9 @@ applications for TDE. %prep %setup -q -n %{name}-%{version}%{?preversion:~%{preversion}} +%patch1 -p1 -b .xdg_path +%patch2 -p1 -b .cups_by_default +%patch3 -p1 -b .batterycharge %build