diff options
author | Gregorio Guidi <greg_g@gentoo.org> | 2005-04-03 23:37:27 +0000 |
---|---|---|
committer | Gregorio Guidi <greg_g@gentoo.org> | 2005-04-03 23:37:27 +0000 |
commit | e4e2ea8106693983505db5806b6fda6fb4071787 (patch) | |
tree | 6bbc4d9997348840e1be7e2bef9aba4e384fcaa0 /kde-base | |
parent | Version bump (diff) | |
download | historical-e4e2ea8106693983505db5806b6fda6fb4071787.tar.gz historical-e4e2ea8106693983505db5806b6fda6fb4071787.tar.bz2 historical-e4e2ea8106693983505db5806b6fda6fb4071787.zip |
Add patches for bug #86446 (crash on logout) and for bug #87485 (handling of names with spaces).
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'kde-base')
-rw-r--r-- | kde-base/kdenetwork/ChangeLog | 10 | ||||
-rw-r--r-- | kde-base/kdenetwork/Manifest | 42 | ||||
-rw-r--r-- | kde-base/kdenetwork/files/digest-kdenetwork-3.4.0-r1 | 1 | ||||
-rw-r--r-- | kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-logout.patch | 534 | ||||
-rw-r--r-- | kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-spaces.patch | 496 | ||||
-rw-r--r-- | kde-base/kdenetwork/kdenetwork-3.4.0-r1.ebuild | 60 |
6 files changed, 1118 insertions, 25 deletions
diff --git a/kde-base/kdenetwork/ChangeLog b/kde-base/kdenetwork/ChangeLog index 52a469648a20..5199ce0c27b7 100644 --- a/kde-base/kdenetwork/ChangeLog +++ b/kde-base/kdenetwork/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for kde-base/kdenetwork # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/kde-base/kdenetwork/ChangeLog,v 1.134 2005/03/18 18:02:42 morfic Exp $ +# $Header: /var/cvsroot/gentoo-x86/kde-base/kdenetwork/ChangeLog,v 1.135 2005/04/03 23:37:27 greg_g Exp $ + +*kdenetwork-3.4.0-r1 (03 Apr 2005) + + 03 Apr 2005; Gregorio Guidi <greg_g@gentoo.org> + +files/kdenetwork-3.4.0-kopete-logout.patch, + +files/kdenetwork-3.4.0-kopete-spaces.patch, +kdenetwork-3.4.0-r1.ebuild: + Add patches for bug #86446 (crash on logout) and for bug #87485 (handling of + names with spaces). 18 Mar 2005; Daniel Goller <morfic@gentoo.org> kdenetwork-3.4.0.ebuild: Added to ~ppc diff --git a/kde-base/kdenetwork/Manifest b/kde-base/kdenetwork/Manifest index a51253e37a0d..566bd010f4a0 100644 --- a/kde-base/kdenetwork/Manifest +++ b/kde-base/kdenetwork/Manifest @@ -1,32 +1,26 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -MD5 71fccce18dbad84d8054b36d08c0ba2c kdenetwork-3.2.3.ebuild 1226 -MD5 394fa6a0f5c95931a64bd8bc86048948 kdenetwork-3.3.1.ebuild 1186 +MD5 14889ab75f97d76e58b0c1154e7683a9 metadata.xml 161 MD5 b3131524da89e63f45c41ddcf9a80bdb kdenetwork-3.3.1-r1.ebuild 1260 -MD5 fc193fdc9c2f4ed3191665ec65521aa6 kdenetwork-3.2.3-r1.ebuild 1305 +MD5 55a0e3505463c3505deee74cc8907398 kdenetwork-3.4.0-r1.ebuild 1534 +MD5 c40c0bac1cdd187a93ef5f1040477ce8 ChangeLog 17465 MD5 93f938d4747753832ab04d62c8eaf514 kdenetwork-3.4.0_rc1.ebuild 1311 -MD5 ef1e3eb9e3060247262db53c06c1e4af kdenetwork-3.3.2.ebuild 1217 +MD5 394fa6a0f5c95931a64bd8bc86048948 kdenetwork-3.3.1.ebuild 1186 MD5 9b3285644d8d99b2d51492d186317f0a kdenetwork-3.4.0.ebuild 1312 -MD5 88a9cf1f58956c0ec3d6f4ef2f171dfa ChangeLog 17154 -MD5 14889ab75f97d76e58b0c1154e7683a9 metadata.xml 161 -MD5 732cc856c1e48585781d79173f5d271b files/lisa 538 -MD5 28c3ba792f8a0ce436216062cefa7908 files/reslisa 549 -MD5 3939e85ee43aba114cc3ece4194145b6 files/reslisa.conf 340 -MD5 d97100af0cb95f733660b7a61492d71f files/lisa.conf 452 -MD5 8dcaf6114da2b32d2bce63e39a38758e files/3.3.1-kget.diff 1321 +MD5 fc193fdc9c2f4ed3191665ec65521aa6 kdenetwork-3.2.3-r1.ebuild 1305 +MD5 ef1e3eb9e3060247262db53c06c1e4af kdenetwork-3.3.2.ebuild 1217 +MD5 71fccce18dbad84d8054b36d08c0ba2c kdenetwork-3.2.3.ebuild 1226 MD5 f943d9cf7ef24546694871e6d9f2dc96 files/digest-kdenetwork-3.4.0_rc1 74 MD5 72eca9b8637e868d730399e0becc045d files/digest-kdenetwork-3.2.3-r1 70 +MD5 622d3497792334fa87e483e249da693d files/digest-kdenetwork-3.4.0-r1 70 +MD5 c72f00859a8536c527d040173f92d3f4 files/kdenetwork-3.4.0-kopete-logout.patch 20923 +MD5 8dae5eac25d478ebf23279132c4a0ead files/digest-kdenetwork-3.3.2 70 +MD5 3939e85ee43aba114cc3ece4194145b6 files/reslisa.conf 340 +MD5 72eca9b8637e868d730399e0becc045d files/digest-kdenetwork-3.2.3 70 +MD5 d272c023453f42fe190bfed26a1378e4 files/kdenetwork-3.4.0-kopete-spaces.patch 17289 +MD5 d97100af0cb95f733660b7a61492d71f files/lisa.conf 452 +MD5 622d3497792334fa87e483e249da693d files/digest-kdenetwork-3.4.0 70 MD5 a0086a72d069c5606f1e2ea81b98fea8 files/digest-kdenetwork-3.3.1-r1 70 +MD5 732cc856c1e48585781d79173f5d271b files/lisa 538 MD5 a32555833318266feb7ea1f68742fdf7 files/yahoo-fix-connect-062404.patch 1139 -MD5 72eca9b8637e868d730399e0becc045d files/digest-kdenetwork-3.2.3 70 +MD5 8dcaf6114da2b32d2bce63e39a38758e files/3.3.1-kget.diff 1321 MD5 a0086a72d069c5606f1e2ea81b98fea8 files/digest-kdenetwork-3.3.1 70 -MD5 8dae5eac25d478ebf23279132c4a0ead files/digest-kdenetwork-3.3.2 70 -MD5 622d3497792334fa87e483e249da693d files/digest-kdenetwork-3.4.0 70 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.0 (GNU/Linux) - -iD8DBQFCOxK5UpKYMelfdYERAsf0AJ4g/CdFEj/astmeQmmfRPasMUNiAQCbBOqS -DD7sSXXg1VYQO5n95ExP6J0= -=Xl0J ------END PGP SIGNATURE----- +MD5 28c3ba792f8a0ce436216062cefa7908 files/reslisa 549 diff --git a/kde-base/kdenetwork/files/digest-kdenetwork-3.4.0-r1 b/kde-base/kdenetwork/files/digest-kdenetwork-3.4.0-r1 new file mode 100644 index 000000000000..8bdd86e1c2ed --- /dev/null +++ b/kde-base/kdenetwork/files/digest-kdenetwork-3.4.0-r1 @@ -0,0 +1 @@ +MD5 47a8d21ce486426caf56bf6129ce993f kdenetwork-3.4.0.tar.bz2 7327047 diff --git a/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-logout.patch b/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-logout.patch new file mode 100644 index 000000000000..ae1d402a00da --- /dev/null +++ b/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-logout.patch @@ -0,0 +1,534 @@ +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/chatwindow/kopetechatwindow.cpp kdenetwork-3.4.0/kopete/kopete/chatwindow/kopetechatwindow.cpp +--- kdenetwork-3.4.0.orig/kopete/kopete/chatwindow/kopetechatwindow.cpp 2005-02-23 11:30:49.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/chatwindow/kopetechatwindow.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -26,6 +26,7 @@ + #include <qtooltip.h> + #include <qfileinfo.h> + ++#include <kapplication.h> + #include <kcursor.h> + #include <klocale.h> + #include <kmenubar.h> +@@ -49,6 +50,7 @@ + #include "chatmessagepart.h" + #include "chattexteditpart.h" + #include "chatview.h" ++#include "../kopeteapplication.h" + #include "kopetechatwindow.h" + #include "kopeteemoticonaction.h" + #include "kopetegroup.h" +@@ -214,6 +216,7 @@ + KGlobal::config()->setGroup( QString::fromLatin1("ChatWindowSettings") ); + m_alwaysShowTabs = KGlobal::config()->readBoolEntry( QString::fromLatin1("AlwaysShowTabs"), false ); + // kdDebug( 14010 ) << k_funcinfo << "Open Windows: " << windows.count() << endl; ++ kapp->ref(); + } + + KopeteChatWindow::~KopeteChatWindow() +@@ -261,6 +264,7 @@ + } + + delete anim; ++ kapp->deref(); + } + + void KopeteChatWindow::windowListChanged() +@@ -1030,13 +1034,8 @@ + m_activeView->addText( sm ); + } + +-void KopeteChatWindow::closeEvent( QCloseEvent *e ) ++bool KopeteChatWindow::queryClose() + { +-// kdDebug( 14010 ) << k_funcinfo << endl; +- +- // FIXME: This should only check if it *can* close +- // and not start closing if the close can be aborted halfway, it would +- // leave us with half the chats open and half of them closed. - Martijn + bool canClose = true; + + // kdDebug( 14010 ) << " Windows left open:" << endl; +@@ -1049,6 +1048,10 @@ + // move out of the way before view is removed + ++it; + ++ // FIXME: This should only check if it *can* close ++ // and not start closing if the close can be aborted halfway, it would ++ // leave us with half the chats open and half of them closed. - Martijn ++ + // if the view is closed, it is removed from chatViewList for us + if ( !view->closeView() ) + { +@@ -1056,21 +1059,44 @@ + canClose = false; + } + } ++ return canClose; ++} + +- if ( canClose ) ++bool KopeteChatWindow::queryExit() ++{ ++ KopeteApplication *app = static_cast<KopeteApplication *>( kapp ); ++ if ( app->sessionSaving() ++ || app->isShuttingDown() /* only set if KopeteApplication::quitKopete() or ++ KopeteApplication::commitData() called */ ++ || !KopetePrefs::prefs()->showTray() /* also close if our tray icon is hidden! */ ++ || !isShown() ) + { ++ Kopete::PluginManager::self()->shutdown(); ++ return true; ++ } ++ else ++ return false; ++} ++ ++void KopeteChatWindow::closeEvent( QCloseEvent * e ) ++{ ++ // if there's a system tray applet and we are not shutting down then just do what needs to be done if a ++ // window is closed. ++ KopeteApplication *app = static_cast<KopeteApplication *>( kapp ); ++ if ( KopetePrefs::prefs()->showTray() && !app->isShuttingDown() && !app->sessionSaving() ) { ++ hide(); ++/* // BEGIN of code borrowed from KMainWindow::closeEvent + // Save settings if auto-save is enabled, and settings have changed + if ( settingsDirty() && autoSaveSettings() ) + saveAutoSaveSettings(); +- +- e->accept(); +- +- // DO NOT call base class's closeEvent - see comment in KopeteApplication constructor for reason ++ ++ if ( queryClose() ) { ++ e->accept(); ++ } ++ // END of code borrowed from KMainWindow::closeEvent*/ + } + else +- { +- e->ignore(); +- } ++ KMainWindow::closeEvent( e ); + } + + void KopeteChatWindow::slotConfKeys() +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/chatwindow/kopetechatwindow.h kdenetwork-3.4.0/kopete/kopete/chatwindow/kopetechatwindow.h +--- kdenetwork-3.4.0.orig/kopete/kopete/chatwindow/kopetechatwindow.h 2004-11-17 13:05:31.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/chatwindow/kopetechatwindow.h 2005-04-04 00:12:30.000000000 +0200 +@@ -94,6 +94,13 @@ + void updateMembersActions(); + void setStatus( const QString & ); + ++ /** ++ * Reimplemented from KMainWindow - asks each ChatView in the window if it is ok to close the window ++ * @return true if no ChatView objects to closing. ++ */ ++ virtual bool queryClose(); ++ virtual bool queryExit(); ++ + KTempFile *backgroundFile; + QPtrList<ChatView> chatViewList; + +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/kopeteapplication.cpp kdenetwork-3.4.0/kopete/kopete/kopeteapplication.cpp +--- kdenetwork-3.4.0.orig/kopete/kopete/kopeteapplication.cpp 2005-02-03 23:52:01.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/kopeteapplication.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -55,25 +55,7 @@ + m_isShuttingDown = false; + m_mainWindow = new KopeteWindow( 0, "mainWindow" ); + +- /* KMainWindow is very broken from our point of view - it deref()'s the app +- * when the last visible KMainWindow is destroyed. This is broken for a number +- * of reasons, not least because it can happen more than once within a single +- * instance of Kopete. Also, our main window is hidden when it's in the tray, +- * and closing the last chatwindow when in that state can cause the app to quit. +- * +- * KopeteApplication's reference counting scheme is different to that of a normal +- * KDE application. It works as follows: the Kopete::PluginManager has a reference +- * to the application. No windows ever call KMainWindow::closeEvent, so KMainWindow +- * doesn't stupidly deref() our application. This ensures that the application +- * reference counting still works properly, and that the application terminates +- * neither too early (bug 75805) nor too late (bug 71657). - Richard +- */ +- +- // KApplication sets the reference count to 1 on startup. Kopete::PluginManager has a +- // reference to us once created, so create it and drop our own reference. + Kopete::PluginManager::self(); +- deref(); +- + + Kopete::UI::Global::setMainWidget( m_mainWindow ); + +@@ -106,6 +88,8 @@ + + //Create the emoticon installer + m_emoticonHandler = new Kopete::EmoticonMimeTypeHandler; ++ ++ QObject::connect( this, SIGNAL( aboutToQuit() ), SLOT( slotCleanShutdown() ) ); + } + + KopeteApplication::~KopeteApplication() +@@ -223,7 +207,6 @@ + } + } + +- + void KopeteApplication::slotAllPluginsLoaded() + { + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); +@@ -320,41 +303,28 @@ + { + kdDebug( 14000 ) << k_funcinfo << endl; + +- if ( !m_isShuttingDown ) +- { +- m_isShuttingDown = true; ++ m_isShuttingDown = true; + +-#if KDE_VERSION < KDE_MAKE_VERSION( 3, 1, 90 ) +- // When we close Kopete through KSystemTray, kdelibs will close all open +- // windows first. However, despite the destructive close the main window +- // is _NOT_ yet deleted at this point (it's a scheduled deleteLater() +- // call). +- // Due to a bug in KMainWindow prior to KDE 3.2 calling close() a second +- // time also derefs KApplication a second time, which causes a premature +- // call to KApplication::quit(), so we never go through the plugin +- // manager's shutdown process. +- // Unfortunately we can't assume close() ever being called though, +- // because the code paths not using the system tray still need this. +- // As a workaround we schedule a call to quitKopete() through a timer, +- // so the event loop is processed and the window is already deleted. +- // - Martijn +- QTimer::singleShot( 0, this, SLOT( quitKopete() ) ); +- return; +-#endif ++ // close all windows ++ QPtrListIterator<KMainWindow> it(*KMainWindow::memberList); ++ for (it.toFirst(); it.current(); ++it) ++ { ++ if ( !it.current()->close() ) ++ { ++ m_isShuttingDown = false; ++ break; ++ } + } ++} + +- if ( !m_mainWindow.isNull() ) +- m_mainWindow->close(); +- ++void KopeteApplication::slotCleanShutdown() ++{ + // save the contact list now, just in case a change was made very recently + // and it hasn't autosaved yet + Kopete::ContactList::self()->save(); + Kopete::AccountManager::self()->save(); + +- //unload plugins and shutdown +- Kopete::PluginManager::self()->shutdown(); + } +- + void KopeteApplication::commitData( QSessionManager &sm ) + { + m_isShuttingDown = true; +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/kopeteapplication.h kdenetwork-3.4.0/kopete/kopete/kopeteapplication.h +--- kdenetwork-3.4.0.orig/kopete/kopete/kopeteapplication.h 2004-02-29 04:52:59.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/kopeteapplication.h 2005-04-04 00:12:30.000000000 +0200 +@@ -58,7 +58,8 @@ + + public slots: + /** +- * Quit Kopete. This method marks Kopete as 'shutting down' to avoid ++ * Quit Kopete, closing all the windows, which causes application shutdown ++ * This method marks Kopete as 'shutting down' to avoid + * showing the message box that Kopete will be left running in the + * system tray before calling qApp->quit(). + */ +@@ -75,7 +76,7 @@ + * auto-connect + */ + void slotAllPluginsLoaded(); +- ++ void slotCleanShutdown(); + private: + // The main window might get deleted behind our back (W_DestructiveClose), + // so use a guarded pointer +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/kopetewindow.cpp kdenetwork-3.4.0/kopete/kopete/kopetewindow.cpp +--- kdenetwork-3.4.0.orig/kopete/kopete/kopetewindow.cpp 2005-02-25 11:52:29.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/kopetewindow.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -67,9 +67,32 @@ + #include "kopeteuiglobal.h" + #include "systemtray.h" + ++/* KMainWindow is very broken from our point of view - it deref()'s the app ++ * when the last visible KMainWindow is destroyed. But when our main window is ++ * hidden when it's in the tray,closing the last chatwindow would cause the app ++ * to quit. - Richard ++ * ++ * Fortunately KMainWindow checks queryExit before deref()ing the Kapplication. ++ * KopeteWindow reimplements queryExit() and only returns true if it is shutting down ++ * (either because the user quit Kopete, or the session manager did). ++ * ++ * KopeteWindow and ChatWindows are closed by session management. ++ * App shutdown is not performed by the KopeteWindow but by KopeteApplication: ++ * 1) user quit - KopeteWindow::slotQuit() was called, calls KopeteApplication::quitKopete(), ++ * which closes all chatwindows and the KopeteWindow. The last window to close ++ * shuts down the PluginManager in queryExit(). When the PluginManager has completed its ++ * shutdown, the app is finally deref()ed, and the contactlist and accountmanager ++ * are saved. ++ * and calling KApplication::quit() ++ * 2) session - KopeteWindow and all chatwindows are closed by KApplication session management. ++ * quit Then the shutdown proceeds as above. ++ * ++ * queryClose() is honoured so group chats and chats receiving recent messages can interrupt ++ * (session) quit. ++ */ + + KopeteWindow::KopeteWindow( QWidget *parent, const char *name ) +-: KMainWindow( parent, name ) ++: KMainWindow( parent, name, WType_TopLevel ) + { + // Applications should ensure that their StatusBar exists before calling createGUI() + // so that the StatusBar is always correctly positioned when KDE is configured to use +@@ -446,42 +469,59 @@ + Kopete::AccountManager::self()->setAwayAll( awayReason ); + } + +-void KopeteWindow::closeEvent( QCloseEvent *e ) ++ ++bool KopeteWindow::queryClose() + { +- // Note that KSystemTray closes all windows when you select quit() +- // from it. This means that closeEvent will be called twice on exit. + KopeteApplication *app = static_cast<KopeteApplication *>( kapp ); ++ if ( !app->sessionSaving() // if we are just closing but not shutting down ++ && !app->isShuttingDown() ++ && KopetePrefs::prefs()->showTray() ++ && isShown() ) ++ // I would make this a KMessageBox::queuedMessageBox but there doesn't seem to be don'tShowAgain support for those ++ KMessageBox::information( this, ++ i18n( "<qt>Closing the main window will keep Kopete running in the " ++ "system tray. Use 'Quit' from the 'File' menu to quit the application.</qt>" ), ++ i18n( "Docking in System Tray" ), "hideOnCloseInfo" ); ++// else // we are shutting down either user initiated or session management ++// Kopete::PluginManager::self()->shutdown(); ++ ++ return true; ++} + +- // also close if our tray icon is hidden! +- if( app->isShuttingDown() || !KopetePrefs::prefs()->showTray() || !isShown() ) ++bool KopeteWindow::queryExit() ++{ ++ KopeteApplication *app = static_cast<KopeteApplication *>( kapp ); ++ if ( app->sessionSaving() ++ || app->isShuttingDown() /* only set if KopeteApplication::quitKopete() or ++ KopeteApplication::commitData() called */ ++ || !KopetePrefs::prefs()->showTray() /* also close if our tray icon is hidden! */ ++ || !isShown() ) + { +- // DO NOT call base class's closeEvent - see comment in KopeteApplication constructor for reason ++ Kopete::PluginManager::self()->shutdown(); ++ return true; ++ } ++ else ++ return false; ++} ++ ++void KopeteWindow::closeEvent( QCloseEvent *e ) ++{ ++ // if there's a system tray applet and we are not shutting down then just do what needs to be done if a ++ // window is closed. ++ KopeteApplication *app = static_cast<KopeteApplication *>( kapp ); ++ if ( KopetePrefs::prefs()->showTray() && !app->isShuttingDown() && !app->sessionSaving() ) { ++ // BEGIN of code borrowed from KMainWindow::closeEvent + // Save settings if auto-save is enabled, and settings have changed + if ( settingsDirty() && autoSaveSettings() ) + saveAutoSaveSettings(); +- +- e->accept(); +- +- //If we're not showing the tray, and they close the window (via the 'X' in the titlebar), +- //workaround the fact that accepting the close event doesn't cause kopete to shutdown +- if ( !app->isShuttingDown() ) +- { +- queryExit(); +- slotQuit(); ++ ++ if ( queryClose() ) { ++ e->accept(); + } +- +- //may never get called +- return; ++ // END of code borrowed from KMainWindow::closeEvent + } +- +- // FIXME: KDE 3.3: use queuedMessageBox +- KMessageBox::information( this, +- i18n( "<qt>Closing the main window will keep Kopete running in the " +- "system tray. Use 'Quit' from the 'File' menu to quit the application.</qt>" ), +- i18n( "Docking in System Tray" ), "hideOnCloseInfo" ); +- +- hide(); +- e->ignore(); ++ else ++ KMainWindow::closeEvent( e ); + } + + void KopeteWindow::slotQuit() +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/kopetewindow.h kdenetwork-3.4.0/kopete/kopete/kopetewindow.h +--- kdenetwork-3.4.0.orig/kopete/kopete/kopetewindow.h 2005-02-23 11:30:49.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/kopetewindow.h 2005-04-04 00:12:30.000000000 +0200 +@@ -190,6 +190,8 @@ + void makeTrayToolTip(); + void startAutoHideTimer(); + ++ virtual bool queryClose(); ++ virtual bool queryExit(); + private: + int docked; + bool hidden; +diff -Nur kdenetwork-3.4.0.orig/kopete/kopete/systemtray.cpp kdenetwork-3.4.0/kopete/kopete/systemtray.cpp +--- kdenetwork-3.4.0.orig/kopete/kopete/systemtray.cpp 2005-02-03 23:52:01.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/kopete/systemtray.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -25,6 +25,7 @@ + + #include <kwin.h> + #include <kaboutdata.h> ++#include <kactioncollection.h> + #include <kapplication.h> + #include <kdebug.h> + #include <kiconloader.h> +@@ -36,7 +37,7 @@ + #include "kopeteaccount.h" + #include "kopeteaccountmanager.h" + #include "kopetecontact.h" +- ++#include "kopetewindow.h" + + KopeteSystemTray* KopeteSystemTray::s_systemTray = 0L; + +@@ -70,6 +71,18 @@ + const Kopete::OnlineStatus &, const Kopete::OnlineStatus &)), + this, SLOT(slotReevaluateAccountStates())); + ++ // the slot called by default by the quit action, KSystemTray::maybeQuit(), ++ // just closes the parent window, which is hard to distinguish in that window's closeEvent() ++ // from a click on the window's close widget ++ // in the quit case, we want to quit the application ++ // in the close widget click case, we only want to hide the parent window ++ // so instead, we make it call our general purpose quit slot on the window, which causes a window close and everything else we need ++ // KDE4 - app will have to listen for quitSelected instead ++ KAction *quit = actionCollection()->action( "file_quit" ); ++ quit->disconnect(); ++ KopeteWindow *myParent = static_cast<KopeteWindow *>( parent ); ++ connect( quit, SIGNAL( activated() ), myParent, SLOT( slotQuit() ) ); ++ + //setPixmap(mKopeteIcon); + slotReevaluateAccountStates(); + slotConfigChanged(); +diff -Nur kdenetwork-3.4.0.orig/kopete/libkopete/kopeteaccount.cpp kdenetwork-3.4.0/kopete/libkopete/kopeteaccount.cpp +--- kdenetwork-3.4.0.orig/kopete/libkopete/kopeteaccount.cpp 2005-03-04 10:53:38.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/libkopete/kopeteaccount.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -97,6 +97,7 @@ + while ( !d->contacts.isEmpty() ) + delete *QDictIterator<Contact>( d->contacts ); + ++ kdDebug( 14010 ) << k_funcinfo << " account '" << d->id << "' about to emit accountDestroyed " << endl; + emit accountDestroyed(this); + + delete d->myself; +diff -Nur kdenetwork-3.4.0.orig/kopete/libkopete/kopetepluginmanager.cpp kdenetwork-3.4.0/kopete/libkopete/kopetepluginmanager.cpp +--- kdenetwork-3.4.0.orig/kopete/libkopete/kopetepluginmanager.cpp 2004-10-17 20:37:16.000000000 +0200 ++++ kdenetwork-3.4.0/kopete/libkopete/kopetepluginmanager.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -101,7 +101,7 @@ + PluginManager::~PluginManager() + { + if ( d->shutdownMode != Private::DoneShutdown ) +- kdWarning( 14010 ) << k_funcinfo << "Destructing plugin manager without going through the shutdown process!" << endl << kdBacktrace() << endl; ++ kdWarning( 14010 ) << k_funcinfo << "Destructing plugin manager without going through the shutdown process! Backtrace is: " << endl << kdBacktrace() << endl; + + // Quick cleanup of the remaining plugins, hope it helps + // Note that deleting it.data() causes slotPluginDestroyed to be called, which +@@ -160,7 +160,7 @@ + + void PluginManager::shutdown() + { +- //kdDebug( 14010 ) << k_funcinfo << endl; ++ kdDebug( 14010 ) << k_funcinfo << kdBacktrace() << endl; + + d->shutdownMode = Private::ShuttingDown; + +@@ -200,6 +200,7 @@ + // FIXME: I don't buy the above argument. Add a Kopete::Plugin::emitReadyForUnload(void), + // and make readyForUnload be passed a plugin. - Richard + Plugin *plugin = dynamic_cast<Plugin *>( const_cast<QObject *>( sender() ) ); ++ kdDebug( 14010 ) << k_funcinfo << plugin->pluginId() << "ready for unload" << endl; + if ( !plugin ) + { + kdWarning( 14010 ) << k_funcinfo << "Calling object is not a plugin!" << endl; +diff -Nur kdenetwork-3.4.0.orig/kopete/libkopete/kopetepluginmanager.h kdenetwork-3.4.0/kopete/libkopete/kopetepluginmanager.h +--- kdenetwork-3.4.0.orig/kopete/libkopete/kopetepluginmanager.h 2004-11-18 23:12:09.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/libkopete/kopetepluginmanager.h 2005-04-04 00:12:30.000000000 +0200 +@@ -175,7 +175,6 @@ + * is neglectable for the user. + */ + void allPluginsLoaded(); +- + private slots: + /** + * @brief Cleans up some references if the plugin is destroyed +diff -Nur kdenetwork-3.4.0.orig/kopete/libkopete/kopeteprotocol.cpp kdenetwork-3.4.0/kopete/libkopete/kopeteprotocol.cpp +--- kdenetwork-3.4.0.orig/kopete/libkopete/kopeteprotocol.cpp 2004-12-04 15:39:03.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/libkopete/kopeteprotocol.cpp 2005-04-04 00:12:30.000000000 +0200 +@@ -96,6 +96,8 @@ + {//slot connected in aboutToUnload + if ( !self || !self->account() || self->account()->isConnected()) + return; ++ // some protocols change status several times during shutdown. We should only call deleteLater() once ++ disconnect( self, 0, this, 0 ); + + connect( self->account(), SIGNAL(accountDestroyed(const Kopete::Account* )), + this, SLOT( slotAccountDestroyed( ) ) ); +@@ -105,15 +107,23 @@ + + void Protocol::slotAccountDestroyed( ) + { ++ kdDebug( 14010 ) << k_funcinfo << " an account was destroyed" << endl; + QDict<Account> dict = AccountManager::self()->accounts( this ); + if ( dict.isEmpty() ) + { ++ kdDebug( 14010 ) << "all gone, we are ready for unload" << endl; + // While at this point we are still in a stack trace from the destroyed + // account it's safe to emit readyForUnload already, because it uses a + // deleteLater rather than a delete for exactly this reason, to keep the + // API managable + emit( readyForUnload() ); + } ++ else ++ { ++ kdDebug( 14010 ) << "protocol still has " << dict.count() << " accounts:" << endl; ++ for( QDictIterator<Account> di(dict); di.current(); ++di ) ++ kdDebug( 14010 ) << " " << di.currentKey() << " : " << di.current()->accountId() << endl; ++ } + } + + void Protocol::aboutToUnload() +@@ -121,8 +131,6 @@ + + d->unloading = true; + +- bool allDisconnected = true; +- + // Disconnect all accounts + QDict<Account> accounts = AccountManager::self()->accounts( this ); + +@@ -139,8 +147,6 @@ + SIGNAL( onlineStatusChanged( Kopete::Contact *, const Kopete::OnlineStatus &, const Kopete::OnlineStatus & ) ), + this, SLOT( slotAccountOnlineStatusChanged( Kopete::Contact * ) ) ); + it.current()->disconnect(); +- +- allDisconnected = false; + } + else + { diff --git a/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-spaces.patch b/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-spaces.patch new file mode 100644 index 000000000000..6358c0947fd8 --- /dev/null +++ b/kde-base/kdenetwork/files/kdenetwork-3.4.0-kopete-spaces.patch @@ -0,0 +1,496 @@ +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/aim/aimcontact.cpp kdenetwork-3.4.0/kopete/protocols/oscar/aim/aimcontact.cpp +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/aim/aimcontact.cpp 2005-02-23 11:30:54.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/aim/aimcontact.cpp 2005-04-04 00:13:50.000000000 +0200 +@@ -145,7 +145,7 @@ + + void AIMContact::userInfoUpdated( const QString& contact, const UserDetails& details ) + { +- if ( contact.lower() != contactId().lower() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << contact << endl; +@@ -179,7 +179,7 @@ + + void AIMContact::userOnline( const QString& userId ) + { +- if ( userId.lower() == contactId().lower() ) ++ if ( Oscar::normalize( userId ) == Oscar::normalize( contactId() ) ) + { + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Getting more contact info" << endl; + setOnlineStatus( mProtocol->statusOnline ); +@@ -197,7 +197,7 @@ + + void AIMContact::updateAwayMessage( const QString& contact, const QString& message ) + { +- if ( contact.lower() != contactId().lower() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + else + { +@@ -220,7 +220,7 @@ + + void AIMContact::updateProfile( const QString& contact, const QString& profile ) + { +- if ( contact.lower() != contactId().lower() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + + setProperty( mProtocol->clientProfile, profile ); +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/aim/aimcontact.cpp.orig kdenetwork-3.4.0/kopete/protocols/oscar/aim/aimcontact.cpp.orig +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/aim/aimcontact.cpp.orig 1970-01-01 01:00:00.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/aim/aimcontact.cpp.orig 2005-02-23 11:30:54.000000000 +0100 +@@ -0,0 +1,267 @@ ++/* ++ aimcontact.cpp - Oscar Protocol Plugin ++ ++ Copyright (c) 2003 by Will Stephenson ++ Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org> ++ ++ ************************************************************************* ++ * * ++ * This program is free software; you can redistribute it and/or modify * ++ * it under the terms of the GNU General Public License as published by * ++ * the Free Software Foundation; either version 2 of the License, or * ++ * (at your option) any later version. * ++ * * ++ ************************************************************************* ++*/ ++ ++#include <time.h> ++ ++#include <qapplication.h> ++#include <qregexp.h> ++ ++#include <kactionclasses.h> ++#include <klocale.h> ++#include <kdebug.h> ++#include <kmessagebox.h> ++ ++#include "kopeteaway.h" ++#include "kopetemessagemanager.h" ++#include "kopeteuiglobal.h" ++#include "kopetemetacontact.h" ++ ++//liboscar ++#include "client.h" ++#include "oscartypes.h" ++#include "oscarutils.h" ++ ++#include "aimprotocol.h" ++#include "aimuserinfo.h" ++#include "aimcontact.h" ++#include "aimaccount.h" ++ ++AIMContact::AIMContact( Kopete::Account* account, const QString& name, Kopete::MetaContact* parent, ++ const QString& icon, const Oscar::SSI& ssiItem ) ++: OscarContact(account, name, parent, icon, ssiItem ) ++{ ++ mProtocol=static_cast<AIMProtocol *>(protocol()); ++ setOnlineStatus( mProtocol->statusOffline ); ++ ++ m_infoDialog = 0L; ++ m_warnUserAction = 0L; ++ mUserProfile=""; ++ m_haveAwayMessage = false; ++ ++ QObject::connect( mAccount->engine(), SIGNAL( receivedUserInfo( const QString&, const UserDetails& ) ), ++ this, SLOT( userInfoUpdated( const QString&, const UserDetails& ) ) ); ++ //QObject::connect( mAccount->engine(), SIGNAL( userIsOnline( const QString& ) ), this, SLOT( userOnline( const QString& ) ) ); ++ QObject::connect( mAccount->engine(), SIGNAL( userIsOffline( const QString& ) ), this, SLOT( userOffline( const QString& ) ) ); ++ QObject::connect( mAccount->engine(), SIGNAL( receivedAwayMessage( const QString&, const QString& ) ), ++ this, SLOT( updateAwayMessage( const QString&, const QString& ) ) ); ++ QObject::connect( mAccount->engine(), SIGNAL( receivedProfile( const QString&, const QString& ) ), ++ this, SLOT( updateProfile( const QString&, const QString& ) ) ); ++ QObject::connect( mAccount->engine(), SIGNAL( userWarned( const QString&, Q_UINT16, Q_UINT16 ) ), ++ this, SLOT( gotWarning( const QString&, Q_UINT16, Q_UINT16 ) ) ); ++} ++ ++AIMContact::~AIMContact() ++{ ++} ++ ++bool AIMContact::isReachable() ++{ ++ return true; ++} ++ ++QPtrList<KAction> *AIMContact::customContextMenuActions() ++{ ++ ++ QPtrList<KAction> *actionCollection = new QPtrList<KAction>(); ++ if ( !m_warnUserAction ) ++ { ++ m_warnUserAction = new KAction( i18n( "&Warn User" ), 0, this, SLOT( warnUser() ), this, "warnAction" ); ++ } ++ ++ m_warnUserAction->setEnabled( account()->isConnected() ); ++ ++ actionCollection->append( m_warnUserAction ); ++ return actionCollection; ++} ++ ++const QString AIMContact::awayMessage() ++{ ++ return property(mProtocol->awayMessage).value().toString(); ++} ++ ++void AIMContact::setAwayMessage(const QString &message) ++{ ++ kdDebug(14152) << k_funcinfo << ++ "Called for '" << contactId() << "', away msg='" << message << "'" << endl; ++ QString filteredMessage = message; ++ filteredMessage.replace( ++ QRegExp(QString::fromLatin1("<[hH][tT][mM][lL].*>(.*)</[hH][tT][mM][lL]>")), ++ QString::fromLatin1("\\1")); ++ filteredMessage.replace( ++ QRegExp(QString::fromLatin1("<[bB][oO][dD][yY].*>(.*)</[bB][oO][dD][yY]>")), ++ QString::fromLatin1("\\1") ); ++ filteredMessage.replace( ++ QRegExp(QString::fromLatin1("<[fF][oO][nN][tT].*>(.*)</[fF][oO][nN][tT]>")), ++ QString::fromLatin1("\\1") ); ++ setProperty(mProtocol->awayMessage, filteredMessage); ++} ++ ++int AIMContact::warningLevel() const ++{ ++ return m_warningLevel; ++} ++ ++void AIMContact::updateSSIItem() ++{ ++ if ( m_ssiItem.type() != 0xFFFF && m_ssiItem.waitingAuth() == false && ++ onlineStatus() == Kopete::OnlineStatus::Unknown ) ++ { ++ //make sure they're offline ++ setOnlineStatus( static_cast<AIMProtocol*>( protocol() )->statusOffline ); ++ } ++} ++ ++void AIMContact::slotUserInfo() ++{ ++ if ( !m_infoDialog) ++ { ++ m_infoDialog = new AIMUserInfoDialog( this, static_cast<AIMAccount*>( account() ), false, Kopete::UI::Global::mainWidget(), 0 ); ++ if( !m_infoDialog ) ++ return; ++ connect( m_infoDialog, SIGNAL( finished() ), this, SLOT( closeUserInfoDialog() ) ); ++ m_infoDialog->show(); ++ if ( mAccount->isConnected() ) ++ { ++ mAccount->engine()->requestAIMProfile( contactId() ); ++ mAccount->engine()->requestAIMAwayMessage( contactId() ); ++ } ++ } ++ else ++ m_infoDialog->raise(); ++} ++ ++void AIMContact::userInfoUpdated( const QString& contact, const UserDetails& details ) ++{ ++ if ( contact.lower() != contactId().lower() ) ++ return; ++ ++ kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << contact << endl; ++ ++ //if they don't have an SSI alias, make sure we use the capitalization from the ++ //server so their contact id looks all pretty. ++ QString nickname = property( Kopete::Global::Properties::self()->nickName() ).value().toString(); ++ if ( Oscar::normalize( nickname ) == Oscar::normalize( details.userId() ) ) ++ setProperty( Kopete::Global::Properties::self()->nickName(), details.userId() ); ++ ++ if ( ( details.userClass() & 32 ) == 0 ) ++ { ++ setOnlineStatus( mProtocol->statusOnline ); //we're online ++ removeProperty( mProtocol->awayMessage ); ++ m_haveAwayMessage = false; ++ } ++ else ++ { ++ setOnlineStatus( mProtocol->statusAway ); //we're away ++ if ( !m_haveAwayMessage ) //prevent cyclic away message requests ++ { ++ mAccount->engine()->requestAIMAwayMessage( contactId() ); ++ m_haveAwayMessage = true; ++ } ++ } ++ ++ OscarContact::userInfoUpdated( contact, details ); ++} ++ ++ ++ ++void AIMContact::userOnline( const QString& userId ) ++{ ++ if ( userId.lower() == contactId().lower() ) ++ { ++ kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Getting more contact info" << endl; ++ setOnlineStatus( mProtocol->statusOnline ); ++ } ++} ++ ++void AIMContact::userOffline( const QString& userId ) ++{ ++ if ( Oscar::normalize( userId ) == Oscar::normalize( contactId() ) ) ++ { ++ setOnlineStatus( mProtocol->statusOffline ); ++ removeProperty( mProtocol->awayMessage ); ++ } ++} ++ ++void AIMContact::updateAwayMessage( const QString& contact, const QString& message ) ++{ ++ if ( contact.lower() != contactId().lower() ) ++ return; ++ else ++ { ++ if ( message.isEmpty() ) ++ { ++ removeProperty( mProtocol->awayMessage ); ++ setOnlineStatus( mProtocol->statusOnline ); ++ m_haveAwayMessage = false; ++ } ++ else ++ { ++ m_haveAwayMessage = true; ++ setAwayMessage( message ); ++ setOnlineStatus( mProtocol->statusAway ); ++ } ++ } ++ ++ emit updatedProfile(); ++} ++ ++void AIMContact::updateProfile( const QString& contact, const QString& profile ) ++{ ++ if ( contact.lower() != contactId().lower() ) ++ return; ++ ++ setProperty( mProtocol->clientProfile, profile ); ++ emit updatedProfile(); ++} ++ ++void AIMContact::gotWarning( const QString& contact, Q_UINT16 increase, Q_UINT16 newLevel ) ++{ ++ //somebody just got bitchslapped! :O ++ Q_UNUSED( increase ); ++ if ( Oscar::normalize( contact ) == Oscar::normalize( contactId() ) ) ++ m_warningLevel = newLevel; ++ ++ //TODO add a KNotify event after merge to HEAD ++} ++ ++void AIMContact::closeUserInfoDialog() ++{ ++ m_infoDialog->delayedDestruct(); ++ m_infoDialog = 0L; ++} ++ ++void AIMContact::warnUser() ++{ ++ QString nick = property( Kopete::Global::Properties::self()->nickName() ).value().toString(); ++ QString message = i18n( "<qt>Would you like to warn %1 anonymously or with your name?<br>" \ ++ "(Warning a user on AIM will result in a \"Warning Level\"" \ ++ " increasing for the user you warn. Once this level has reached a" \ ++ " certain point, they will not be able to sign on. Please do not abuse" \ ++ " this function, it is meant for legitimate practices.)</qt>" ).arg( nick ); ++ ++ ++ int result = KMessageBox::questionYesNoCancel( Kopete::UI::Global::mainWidget(), message, ++ i18n( "Warn User %1?" ).arg( nick ), ++ i18n( "Warn Anonymously" ), i18n( "Warn" ) ); ++ ++ if ( result == KMessageBox::Yes ) ++ mAccount->engine()->sendWarning( contactId(), true); ++ else if ( result == KMessageBox::No ) ++ mAccount->engine()->sendWarning( contactId(), false); ++} ++ ++#include "aimcontact.moc" ++//kate: tab-width 4; indent-mode csands; +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/icq/icqcontact.cpp kdenetwork-3.4.0/kopete/protocols/oscar/icq/icqcontact.cpp +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/icq/icqcontact.cpp 2005-02-03 23:52:07.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/icq/icqcontact.cpp 2005-04-04 00:13:50.000000000 +0200 +@@ -106,7 +106,7 @@ + + void ICQContact::userOnline( const QString& userId ) + { +- if ( userId != contactId() ) ++ if ( Oscar::normalize( userId ) != Oscar::normalize( contactId() ) ) + return; + + kdDebug(OSCAR_ICQ_DEBUG) << "Setting " << userId << " online" << endl; +@@ -116,7 +116,7 @@ + + void ICQContact::userOffline( const QString& userId ) + { +- if ( userId != contactId() ) ++ if ( Oscar::normalize( userId ) != Oscar::normalize( contactId() ) ) + return; + + kdDebug(OSCAR_ICQ_DEBUG) << "Setting " << userId << " offline" << endl; +@@ -130,7 +130,7 @@ + setOnlineStatus( mProtocol->statusManager()->waitingForAuth() ); + + QString nickname = property( Kopete::Global::Properties::self()->nickName() ).value().toString(); +- if ( nickname.isEmpty() || nickname == contactId() ) ++ if ( nickname.isEmpty() || Oscar::normalize( nickname ) == Oscar::normalize( contactId() ) ) + { + int time = ( KApplication::random() % 25 ) * 1000; + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "updating nickname in " << time/1000 << " seconds" << endl; +@@ -164,7 +164,7 @@ + + void ICQContact::slotGotAuthReply( const QString& contact, const QString& reason, bool granted ) + { +- if ( contact != contactId() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << endl; +@@ -189,7 +189,7 @@ + + void ICQContact::slotGotAuthRequest( const QString& contact, const QString& reason ) + { +- if ( contact != contactId() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + + ICQAuthReplyDialog replyDialog; +@@ -202,7 +202,7 @@ + + void ICQContact::receivedLongInfo( const QString& contact ) + { +- if ( contact.lower() != contactId().lower() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + { + if ( m_infoWidget ) + m_infoWidget->delayedDestruct(); +@@ -224,7 +224,7 @@ + + void ICQContact::receivedShortInfo( const QString& contact ) + { +- if ( contact != contactId() ) ++ if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) ) + return; + + ICQShortInfo shortInfo = mAccount->engine()->getShortInfo( contact ); +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssiauthtask.cpp kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssiauthtask.cpp +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssiauthtask.cpp 2005-01-30 16:09:38.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssiauthtask.cpp 2005-04-04 00:13:50.000000000 +0200 +@@ -21,6 +21,7 @@ + #include "transfer.h" + #include "buffer.h" + #include "connection.h" ++#include "oscarutils.h" + + #include <kdebug.h> + +@@ -135,7 +136,7 @@ + { + Buffer* buf = transfer()->buffer(); + +- QString uin = buf->getBUIN(); ++ QString uin = Oscar::normalize( buf->getBUIN() ); + QString reason = buf->getBSTR(); + + buf->getWord(); // 0x0000 - Unknown +@@ -149,7 +150,7 @@ + { + Buffer* buf = transfer()->buffer(); + +- QString uin = buf->getBUIN(); ++ QString uin = Oscar::normalize( buf->getBUIN() ); + QString reason = buf->getBSTR(); + + buf->getWord(); // 0x0000 - Unknown +@@ -164,7 +165,7 @@ + { + Buffer* buf = transfer()->buffer(); + +- QString uin = buf->getBUIN(); ++ QString uin = Oscar::normalize( buf->getBUIN() ); + bool accepted = buf->getByte(); + QString reason = buf->getBSTR(); + +@@ -186,7 +187,7 @@ + { + Buffer* buf = transfer()->buffer(); + +- QString uin = buf->getBUIN(); ++ QString uin = Oscar::normalize( buf->getBUIN() ); + + kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "User " << uin << " added you to the contact list" << endl; + emit contactAddedYou( uin ); +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssilisttask.cpp kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssilisttask.cpp +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssilisttask.cpp 2005-01-25 16:10:19.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssilisttask.cpp 2005-04-04 00:13:50.000000000 +0200 +@@ -110,6 +110,9 @@ + tlvList.append( t ); + } + ++ if ( itemType == ROSTER_CONTACT ) ++ itemName = Oscar::normalize( itemName ); ++ + Oscar::SSI s( itemName, groupId, itemId, itemType, tlvList ); + s.setTLVListLength( tlvLength ); + +diff -Nur kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssimodifytask.cpp kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssimodifytask.cpp +--- kdenetwork-3.4.0.orig/kopete/protocols/oscar/liboscar/ssimodifytask.cpp 2005-02-01 20:41:08.000000000 +0100 ++++ kdenetwork-3.4.0/kopete/protocols/oscar/liboscar/ssimodifytask.cpp 2005-04-04 00:13:50.000000000 +0200 +@@ -41,7 +41,7 @@ + { + } + +-void SSIModifyTask::onGo( ) ++void SSIModifyTask::onGo() + { + sendSSIUpdate(); + } +@@ -62,7 +62,10 @@ + { + m_opType = Add; + m_opSubject = Contact; +- Oscar::SSI oldItem = m_ssiManager->findContact( contact ); ++ ++ QString newContact = Oscar::normalize( contact ); ++ ++ Oscar::SSI oldItem = m_ssiManager->findContact( newContact ); + Oscar::SSI groupItem = m_ssiManager->findGroup( group ); + + if ( !groupItem ) +@@ -81,7 +84,7 @@ + } + + kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "creating new SSI item for " << contact << " in group " << group << endl; +- Oscar::SSI newItem( contact, groupItem.gid(), m_ssiManager->nextContactId(), ROSTER_CONTACT, tlvList ); ++ Oscar::SSI newItem( newContact, groupItem.gid(), m_ssiManager->nextContactId(), ROSTER_CONTACT, tlvList ); + m_newItem = newItem; + return true; + } +@@ -90,7 +93,7 @@ + { + m_opType = Remove; + m_opSubject = Contact; +- m_oldItem = m_ssiManager->findContact( contact ); ++ m_oldItem = m_ssiManager->findContact( Oscar::normalize( contact ) ); + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Scheduling" << m_oldItem.name() << " for removal" << endl; + return true; + } +@@ -99,7 +102,7 @@ + { + m_opType = Change; + m_opSubject = Group; +- m_oldItem = m_ssiManager->findContact( contact ); ++ m_oldItem = m_ssiManager->findContact( Oscar::normalize( contact ) ); + Oscar::SSI oldGroupItem; + if ( m_oldItem.isValid() ) + oldGroupItem = m_ssiManager->findGroup( newGroup ); +@@ -138,7 +141,7 @@ + return true; + } + +-bool SSIModifyTask::removeGroup( const QString & groupName ) ++bool SSIModifyTask::removeGroup( const QString& groupName ) + { + m_opType = Remove; + m_opSubject = Group; diff --git a/kde-base/kdenetwork/kdenetwork-3.4.0-r1.ebuild b/kde-base/kdenetwork/kdenetwork-3.4.0-r1.ebuild new file mode 100644 index 000000000000..a0b2eedc4928 --- /dev/null +++ b/kde-base/kdenetwork/kdenetwork-3.4.0-r1.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/kde-base/kdenetwork/kdenetwork-3.4.0-r1.ebuild,v 1.1 2005/04/03 23:37:27 greg_g Exp $ + +inherit kde-dist eutils + +DESCRIPTION="KDE network apps: kopete, kppp, kget..." + +KEYWORDS="~x86 ~amd64 ~sparc ~ppc" +IUSE="rdesktop slp ssl wifi" + +DEPEND="~kde-base/kdebase-${PV} + slp? ( net-libs/openslp ) + wifi? ( net-wireless/wireless-tools )" + +RDEPEND="${DEPEND} + rdesktop? ( >=net-misc/rdesktop-1.3.1-r1 ) + dev-lang/perl + ssl? ( app-crypt/qca-tls + dev-perl/IO-Socket-SSL )" +# perl: for KSirc +# qca-tls: for Kopete jabber plugin. +# IO-Socket-SSL: for SSL support in KSirc. + +src_unpack() { + kde_src_unpack + + # fix kde bug 91288. Applied for 3.4.1. + epatch "${FILESDIR}/${P}-kopete-logout.patch" + + # fix kde bug 99671. Applied for 3.4.1. + epatch "${FILESDIR}/${P}-kopete-spaces.patch" +} + +src_compile() { + myconf="$(use_enable slp)" + use wifi || export DO_NOT_COMPILE="${DO_NOT_COMPILE} wifi" + + kde_src_compile +} + +src_install() { + kde_src_install + + chmod u+s ${D}/${KDEDIR}/bin/reslisa + + # empty config file needed for lisa to work with default settings + dodir /etc + touch ${D}/etc/lisarc + + # lisa, reslisa initscripts + sed -e "s:_KDEDIR_:${KDEDIR}:g" ${FILESDIR}/lisa > ${T}/lisa + sed -e "s:_KDEDIR_:${KDEDIR}:g" ${FILESDIR}/reslisa > ${T}/reslisa + exeinto /etc/init.d + doexe ${T}/lisa ${T}/reslisa + + insinto /etc/conf.d + newins ${FILESDIR}/lisa.conf lisa + newins ${FILESDIR}/reslisa.conf reslisa +} |