From: <arn...@us...> - 2006-06-03 11:15:04
|
Revision: 609 Author: arnetheduck Date: 2006-06-03 04:12:22 -0700 (Sat, 03 Jun 2006) ViewCVS: http://svn.sourceforge.net/dcplusplus/?rev=609&view=rev Log Message: ----------- Patches & adc fixes Modified Paths: -------------- dcplusplus/trunk/DCPlusPlus.vcproj dcplusplus/trunk/Example.xml dcplusplus/trunk/changelog.txt dcplusplus/trunk/client/AdcCommand.cpp dcplusplus/trunk/client/AdcCommand.h dcplusplus/trunk/client/AdcHub.cpp dcplusplus/trunk/client/CID.h dcplusplus/trunk/client/ClientManager.cpp dcplusplus/trunk/client/QueueManager.cpp dcplusplus/trunk/client/SearchManager.cpp dcplusplus/trunk/client/StringDefs.cpp dcplusplus/trunk/client/StringDefs.h dcplusplus/trunk/client/Util.cpp dcplusplus/trunk/client/Util.h dcplusplus/trunk/help/changelog.html dcplusplus/trunk/help/gen_changelog.py dcplusplus/trunk/windows/ADLSearchFrame.cpp dcplusplus/trunk/windows/ADLSearchFrame.h dcplusplus/trunk/windows/DirectoryListingFrm.cpp dcplusplus/trunk/windows/DirectoryListingFrm.h dcplusplus/trunk/windows/FavoriteDirsPage.cpp dcplusplus/trunk/windows/FavoriteDirsPage.h dcplusplus/trunk/windows/FavoritesFrm.cpp dcplusplus/trunk/windows/FavoritesFrm.h dcplusplus/trunk/windows/HubFrame.cpp dcplusplus/trunk/windows/HubFrame.h dcplusplus/trunk/windows/MainFrm.cpp dcplusplus/trunk/windows/MainFrm.h dcplusplus/trunk/windows/PrivateFrame.cpp dcplusplus/trunk/windows/PrivateFrame.h dcplusplus/trunk/windows/PropertiesDlg.cpp dcplusplus/trunk/windows/SearchFrm.cpp dcplusplus/trunk/windows/SearchFrm.h dcplusplus/trunk/windows/TransferView.cpp dcplusplus/trunk/windows/TransferView.h dcplusplus/trunk/windows/TypedListViewCtrl.h dcplusplus/trunk/windows/UCPage.cpp dcplusplus/trunk/windows/UCPage.h dcplusplus/trunk/windows/UploadPage.cpp dcplusplus/trunk/windows/UploadPage.h dcplusplus/trunk/windows/UsersFrame.cpp dcplusplus/trunk/windows/UsersFrame.h dcplusplus/trunk/windows/WinUtil.cpp dcplusplus/trunk/windows/resource.h Added Paths: ----------- dcplusplus/trunk/windows/MemDC.h Modified: dcplusplus/trunk/DCPlusPlus.vcproj =================================================================== --- dcplusplus/trunk/DCPlusPlus.vcproj 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/DCPlusPlus.vcproj 2006-06-03 11:12:22 UTC (rev 609) @@ -487,6 +487,9 @@ RelativePath=".\windows\MainFrm.h"> </File> <File + RelativePath=".\windows\memdc.h"> + </File> + <File RelativePath=".\windows\NetworkPage.h"> </File> <File Modified: dcplusplus/trunk/Example.xml =================================================================== --- dcplusplus/trunk/Example.xml 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/Example.xml 2006-06-03 11:12:22 UTC (rev 609) @@ -226,6 +226,10 @@ <String Name="MenuArrange">Arrange icons</String> <String Name="MenuCascade">Cascade</String> <String Name="MenuChangelog">Change Log</String> + <String Name="MenuCloseAllDirList">Close all file list windows</String> + <String Name="MenuCloseAllOfflinePm">Close all offline PM windows</String> + <String Name="MenuCloseAllPm">Close all PM windows</String> + <String Name="MenuCloseAllSearchframe">Close all search windows</String> <String Name="MenuCloseDisconnected">Close disconnected</String> <String Name="MenuContents">Help &Contents F1</String> <String Name="MenuDiscuss">DC++ discussion forum</String> Modified: dcplusplus/trunk/changelog.txt =================================================================== --- dcplusplus/trunk/changelog.txt 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/changelog.txt 2006-06-03 11:12:22 UTC (rev 609) @@ -1,4 +1,18 @@ --- 0.69 2006-05-21 -- +-- 0.691 -- +* Links to bugzilla in html changelog +* [bug 122] Added userlist filter (thanks trem) +* [bug 578] Added search for alternates to transfers menu (thanks trem) +* [bug 861] Fixed auto-prio not being set correctly (thanks trem) +* [bug 878] Added close all ... to window menu (thanks trem) +* [bug 903] Holding shift while minimizing will use opposite tray setting (thanks joakim tosteberg) +* [bug 923] PM history always read (thanks trem) +* [bug 927] Fixed OP detection bug (thanks pothead) +* [bug 929] Fixed list view flicker issues (thanks trem) +* [bug 931] Improved keyboard navigation (thanks trem) +* Fixed bug when sending active ADC search results +* Updated to ADC 0.11 + +-- 0.69 2006-05-21 -- * Small linux / old gcc fixes (thanks jens oknelid) * Fixed an issue where client could be crashed from remote * Fixed an issue bad nicks could cause directories to be created in log / file list download folder @@ -10,7 +24,7 @@ * Fixed ADC hubname display (thanks ullner) * Advanced TTH rollback no longer performed if tree is invalid (thanks garg) * Option not to auto-disconnect favorite users (thanks ullner) -* Fixed auto-disconnect delay (thanks uller) +* Fixed auto-disconnect delay (thanks ullner) * Another fix for opencow * Fixed user command parameters not being remembered * Fixed ADC op commands Modified: dcplusplus/trunk/client/AdcCommand.cpp =================================================================== --- dcplusplus/trunk/client/AdcCommand.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/AdcCommand.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -25,7 +25,7 @@ AdcCommand::AdcCommand(u_int32_t aCmd, char aType /* = TYPE_CLIENT */) : cmdInt(aCmd), from(0), type(aType) { } AdcCommand::AdcCommand(u_int32_t aCmd, const u_int32_t aTarget) : cmdInt(aCmd), from(0), to(aTarget), type(TYPE_DIRECT) { } AdcCommand::AdcCommand(Severity sev, Error err, const string& desc, char aType /* = TYPE_CLIENT */) : cmdInt(CMD_STA), from(0), type(aType) { - addParam(Util::toString(sev) + Util::toString(err)); + addParam(Util::toString(sev * 100 + err)); addParam(desc); } AdcCommand::AdcCommand(const string& aLine, bool nmdc /* = false */) throw(ParseException) : cmdInt(0), type(TYPE_CLIENT) { Modified: dcplusplus/trunk/client/AdcCommand.h =================================================================== --- dcplusplus/trunk/client/AdcCommand.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/AdcCommand.h 2006-06-03 11:12:22 UTC (rev 609) @@ -49,6 +49,7 @@ ERROR_CID_TAKEN = 24, ERROR_COMMAND_ACCESS = 25, ERROR_REGGED_ONLY = 26, + ERROR_INVALID_PID = 27, ERROR_BANNED_GENERIC = 30, ERROR_PERM_BANNED = 31, ERROR_TEMP_BANNED = 32, @@ -56,6 +57,8 @@ ERROR_PROTOCOL_UNSUPPORTED = 41, ERROR_INF_MISSING = 42, ERROR_BAD_STATE = 43, + ERROR_FEATURE_MISSING = 44, + ERROR_BAD_IP = 45, ERROR_TRANSFER_GENERIC = 50, ERROR_FILE_NOT_AVAILABLE = 51, ERROR_FILE_PART_NOT_AVAILABLE = 52, Modified: dcplusplus/trunk/client/AdcHub.cpp =================================================================== --- dcplusplus/trunk/client/AdcHub.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/AdcHub.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -404,8 +404,8 @@ AutoArray<u_int8_t> buf(saltBytes); Encoder::fromBase32(salt.c_str(), buf, saltBytes); TigerHash th; - string cid = getMyIdentity().getUser()->getCID().toBase32(); - th.update(cid.c_str(), cid.length()); + CID cid = getMyIdentity().getUser()->getCID(); + th.update(cid.data(), CID::SIZE); th.update(pwd.data(), pwd.length()); th.update(buf, saltBytes); send(AdcCommand(AdcCommand::CMD_PAS, AdcCommand::TYPE_HUB).addParam(Encoder::toBase32(th.finalize(), TigerHash::HASH_SIZE))); Modified: dcplusplus/trunk/client/CID.h =================================================================== --- dcplusplus/trunk/client/CID.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/CID.h 2006-06-03 11:12:22 UTC (rev 609) @@ -44,7 +44,7 @@ string& toBase32(string& tmp) const { return Encoder::toBase32(cid, sizeof(cid), tmp); } size_t toHash() const { return *reinterpret_cast<const size_t*>(cid); } - const u_int8_t* getData() const { return cid; } + const u_int8_t* data() const { return cid; } bool isZero() const { return find_if(cid, cid+SIZE, bind2nd(not_equal_to<u_int8_t>(), 0)) == (cid+SIZE); } Modified: dcplusplus/trunk/client/ClientManager.cpp =================================================================== --- dcplusplus/trunk/client/ClientManager.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/ClientManager.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -312,12 +312,18 @@ Lock l(cs); OnlineIter i = onlineUsers.find(cid); if(i != onlineUsers.end()) { - OnlineUser* u = i->second; - if(cmd.getType() == AdcCommand::TYPE_UDP && !u->getIdentity().isUdpActive()) { + OnlineUser& u = *i->second; + if(cmd.getType() == AdcCommand::TYPE_UDP && !u.getIdentity().isUdpActive()) { cmd.setType(AdcCommand::TYPE_DIRECT); + cmd.setTo(u.getIdentity().getSID()); + u.getClient().send(cmd); + } else { + try { + s.writeTo(u.getIdentity().getIp(), static_cast<short>(Util::toInt(u.getIdentity().getUdpPort())), cmd.toString(getMe()->getCID())); + } catch(const SocketException&) { + dcdebug("Socket exception sending ADC UDP command\n"); + } } - cmd.setTo(u->getIdentity().getSID()); - u->getClient().send(cmd); } } @@ -509,7 +515,7 @@ CID ClientManager::getMyCID() { TigerHash tiger; - tiger.update(getMyPID().getData(), CID::SIZE); + tiger.update(getMyPID().data(), CID::SIZE); return CID(tiger.finalize()); } Modified: dcplusplus/trunk/client/QueueManager.cpp =================================================================== --- dcplusplus/trunk/client/QueueManager.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/QueueManager.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -484,7 +484,7 @@ QueueItem* q = fileQueue.find(target); if(q == NULL) { - q = fileQueue.add(target, aSize, aFlags, QueueItem::NORMAL, Util::emptyString, 0, GET_TIME(), root); + q = fileQueue.add(target, aSize, aFlags, QueueItem::DEFAULT, Util::emptyString, 0, GET_TIME(), root); fire(QueueManagerListener::Added(), q); } else { if(q->getSize() != aSize) { Modified: dcplusplus/trunk/client/SearchManager.cpp =================================================================== --- dcplusplus/trunk/client/SearchManager.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/SearchManager.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -344,7 +344,6 @@ for(SearchResult::Iter i = results.begin(); i != results.end(); ++i) { AdcCommand cmd = (*i)->toRES(AdcCommand::TYPE_UDP); - cmd.setTo(adc.getFrom()); if(!token.empty()) cmd.addParam("TO", token); ClientManager::getInstance()->send(cmd, from); Modified: dcplusplus/trunk/client/StringDefs.cpp =================================================================== --- dcplusplus/trunk/client/StringDefs.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/StringDefs.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -227,6 +227,10 @@ "Arrange icons", "Cascade", "Change Log", +"Close all file list windows", +"Close all offline PM windows", +"Close all PM windows", +"Close all search windows", "Close disconnected", "Help &Contents\tF1", "DC++ discussion forum", @@ -832,6 +836,10 @@ "MenuArrange", "MenuCascade", "MenuChangelog", +"MenuCloseAllDirList", +"MenuCloseAllOfflinePm", +"MenuCloseAllPm", +"MenuCloseAllSearchframe", "MenuCloseDisconnected", "MenuContents", "MenuDiscuss", Modified: dcplusplus/trunk/client/StringDefs.h =================================================================== --- dcplusplus/trunk/client/StringDefs.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/StringDefs.h 2006-06-03 11:12:22 UTC (rev 609) @@ -230,6 +230,10 @@ MENU_ARRANGE, // "Arrange icons" MENU_CASCADE, // "Cascade" MENU_CHANGELOG, // "Change Log" + MENU_CLOSE_ALL_DIR_LIST, // "Close all file list windows" + MENU_CLOSE_ALL_OFFLINE_PM, // "Close all offline PM windows" + MENU_CLOSE_ALL_PM, // "Close all PM windows" + MENU_CLOSE_ALL_SEARCHFRAME, // "Close all search windows" MENU_CLOSE_DISCONNECTED, // "Close disconnected" MENU_CONTENTS, // "Help &Contents\tF1" MENU_DISCUSS, // "DC++ discussion forum" Modified: dcplusplus/trunk/client/Util.cpp =================================================================== --- dcplusplus/trunk/client/Util.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/Util.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -571,6 +571,38 @@ return (string::size_type)string::npos; } +wstring::size_type Util::findSubString(const wstring& aString, const wstring& aSubString, wstring::size_type pos) throw() { + if(aString.length() < pos) + return static_cast<wstring::size_type>(wstring::npos); + + if(aString.length() - pos < aSubString.length()) + return static_cast<wstring::size_type>(wstring::npos); + + if(aSubString.empty()) + return 0; + + wstring::size_type j = 0; + wstring::size_type end = aString.length() - aSubString.length() + 1; + + for(; pos < end; ++pos) { + if(Text::toLower(aString[pos]) == Text::toLower(aSubString[j])) { + wstring::size_type tmp = pos+1; + bool found = true; + for(++j; j < aSubString.length(); ++j, ++tmp) { + if(Text::toLower(aString[tmp]) != Text::toLower(aSubString[j])) { + j = 0; + found = false; + break; + } + } + + if(found) + return pos; + } + } + return static_cast<wstring::size_type>(wstring::npos); +} + int Util::stricmp(const char* a, const char* b) { while(*a) { wchar_t ca = 0, cb = 0; Modified: dcplusplus/trunk/client/Util.h =================================================================== --- dcplusplus/trunk/client/Util.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/client/Util.h 2006-06-03 11:12:22 UTC (rev 609) @@ -466,6 +466,7 @@ * @return First position found or string::npos */ static string::size_type findSubString(const string& aString, const string& aSubString, string::size_type start = 0) throw(); + static wstring::size_type findSubString(const wstring& aString, const wstring& aSubString, wstring::size_type start = 0) throw(); /* Utf-8 versions of strnicmp and stricmp, unicode char code order (!) */ static int stricmp(const char* a, const char* b); Modified: dcplusplus/trunk/help/changelog.html =================================================================== --- dcplusplus/trunk/help/changelog.html 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/help/changelog.html 2006-06-03 11:12:22 UTC (rev 609) @@ -26,17 +26,17 @@ <li>Fixed ADC hubname display (thanks ullner)</li> <li>Advanced TTH rollback no longer performed if tree is invalid (thanks garg)</li> <li>Option not to auto-disconnect favorite users (thanks ullner)</li> - <li>Fixed auto-disconnect delay (thanks uller)</li> + <li>Fixed auto-disconnect delay (thanks ullner)</li> <li>Another fix for opencow</li> <li>Fixed user command parameters not being remembered</li> <li>Fixed ADC op commands</li> - <li>[bug 464] Added option for masked password prompt (thanks ullner)</li> - <li>[bug 922] Updated help links (thanks xan)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=464">[bug 464]</a> Added option for masked password prompt (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=922">[bug 922]</a> Updated help links (thanks xan)</li> <li>Fixed op count</li> - <li>[bug 230] Added settings to tray menu</li> - <li>[bug 403] Unfinished file lists deleted since they're never resumed anyway</li> - <li>[bug 639] Separated remove user from queue menu option</li> - <li>[bug 766] Fixed broken app titlebar</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=230">[bug 230]</a> Added settings to tray menu</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=403">[bug 403]</a> Unfinished file lists deleted since they're never resumed anyway</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=639">[bug 639]</a> Separated remove user from queue menu option</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=766">[bug 766]</a> Fixed broken app titlebar</li> <li>Removed support for generating NMDC-style file lists (old clients won't be able to download from you)</li> </ul> @@ -45,18 +45,18 @@ <li>Fixed displaying of available bytes when user list is off</li> <li>Fixed a potential crash when not showing user list</li> <li>Fixed 100% CPU bug on upload</li> - <li>[bug 853] Fixed missing function in opencow</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=853">[bug 853]</a> Fixed missing function in opencow</li> </ul> <h2>0.688 <span style="color: gray;">(2006-03-18)</span></h2> <ul> <li>Fixed public hubs sorting (thanks pothead)</li> <li>Fixed a ZPipe issue (thanks jove)</li> - <li>[bug 858] Fixed a 100% cpu / crash bug</li> - <li>[bug 872] Fixed a pm issue hopefully</li> - <li>[bug 812] Fixed pm's being sent to bots</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=858">[bug 858]</a> Fixed a 100% cpu / crash bug</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=872">[bug 872]</a> Fixed a pm issue hopefully</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=812">[bug 812]</a> Fixed pm's being sent to bots</li> <li>Files with invalid crc-32, as per their sfv file, are no longer shared</li> - <li>[bug 873] Added connect to hub option (thanks joakim tosteberg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=873">[bug 873]</a> Added connect to hub option (thanks joakim tosteberg)</li> <li>Fixed an issue with linux file reading (thanks bart vullings and steven)</li> <li>Added back/forward mouse/keyboard navigation to directory listing frame</li> </ul> @@ -91,15 +91,15 @@ <li>Fixed "browse list" being available for NMDC users</li> <li>[ADC] Removed obsolete CI field</li> <li>Fixed missing upload progress</li> - <li>[bug 89] Readded dynamic compression disabling</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=89">[bug 89]</a> Readded dynamic compression disabling</li> <li>Added filelist download speed to filelist browser status bar</li> <li>Added advanced hublist filter (thanks trem)</li> - <li>[bug 579] Fixed 0-byte files not being created if directory doesn't exist</li> - <li>[bug 804] Cleaned up project files (thanks pothead)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=579">[bug 579]</a> Fixed 0-byte files not being created if directory doesn't exist</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=804">[bug 804]</a> Cleaned up project files (thanks pothead)</li> <li>Socket buffer size = 0 now means use system default</li> - <li>[bug 789] Fixed wrong nick being copied (thanks ullner)</li> - <li>[bug 794] [ADC] Fixed automatic reconnect (thanks ullner)</li> - <li>[bug 806] Fixed description for favorite hubs (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=789">[bug 789]</a> Fixed wrong nick being copied (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=794">[bug 794]</a> [ADC] Fixed automatic reconnect (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=806">[bug 806]</a> Fixed description for favorite hubs (thanks ullner)</li> <li>Updated to latest ADC specs, this will break 0.68/0.681/0.6811 queue sources and fav users (for NMDC as well)</li> <li>Fixed a bufferedsocket crash</li> <li>[ADC] Fixed quitting user processing (thanks ullner)</li> @@ -110,8 +110,8 @@ <li>Fixed an issue with nick names disappearing from hub</li> <li>Added customizable maximum user count when autosearching</li> <li>Changed to open source version unicows for win9x users, perhaps this one will work better for you (see it as a last attempt; if it doesn't work, w9x support will be phased out completely unless someone else solves the win9x issues)</li> - <li>[bug 774] Fixed invalid description being sent if hub modifies it</li> - <li>[bug 818] Fixed default exit mnemonic</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=774">[bug 774]</a> Fixed invalid description being sent if hub modifies it</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=818">[bug 818]</a> Fixed default exit mnemonic</li> <li>Fixed some more crashes (thanks bigmuscle)</li> <li>Fixed some shutdown issues</li> <li>Updated country database</li> @@ -129,12 +129,12 @@ <li>Minor user command fix (thanks garg)</li> <li>Removed some duplicate code (thanks trem)</li> <li>Ctrl-a to select all items in a list (thanks garg)</li> - <li>[bug 484] Added a check for multiple refreshes running at the same time (thanks trem)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=484">[bug 484]</a> Added a check for multiple refreshes running at the same time (thanks trem)</li> <li>Fixed a few crashes here and there</li> <li>Fixed no-slots message not being sent out always</li> <li>Fixed yassl build locations (thanks pothead)</li> <li>Added ip resolve cache when searching (thanks trem)</li> - <li>[bug 413] Failed file moves are now reported to the system log</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=413">[bug 413]</a> Failed file moves are now reported to the system log</li> </ul> <h2>0.68 <span style="color: gray;">(2006-01-08)</span></h2> @@ -143,7 +143,7 @@ <li>Removed saving of directories scheduled for download, since the individual files should appear in the queue fast enough that this will rarely be used (since file lists are free and downloaded almost instantly)</li> <li>Fixed international timestamps (thanks ullner)</li> <li>Fixed targetdrive docs (thanks ullner)</li> - <li>[bug 485] Fixed transfer list view flicker on WinXP</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=485">[bug 485]</a> Fixed transfer list view flicker on WinXP</li> <li>New connection settings, please check settings page</li> <li>Connection type strings changed</li> <li>No longer falls back to passive mode on failed UPnP</li> @@ -151,35 +151,35 @@ <li>Removed some old favorite file format compatibility code</li> <li>Added country to search frame (thanks paka)</li> <li>Strftime fix (thanks garg)</li> - <li>[bug 521] Help instead of readme shown on first startup (thanks paka)</li> - <li>[bug 553] Minimize to tray and confirm appexit default to true (thanks paka)</li> - <li>[bug 452] Fixed example.xml language file generation (thanks tpo)</li> - <li>[bug 556] Fixed last searches purge (thanks sulan)</li> - <li>[bug 73] Added option to disconnect slow sources (thanks paka)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=521">[bug 521]</a> Help instead of readme shown on first startup (thanks paka)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=553">[bug 553]</a> Minimize to tray and confirm appexit default to true (thanks paka)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=452">[bug 452]</a> Fixed example.xml language file generation (thanks tpo)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=556">[bug 556]</a> Fixed last searches purge (thanks sulan)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=73">[bug 73]</a> Added option to disconnect slow sources (thanks paka)</li> <li>ADC hub counts updated correctly (thanks ullner)</li> - <li>[bug 325] Added error message when adding dupe fav hub (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=325">[bug 325]</a> Added error message when adding dupe fav hub (thanks ullner)</li> <li>Updated bzip2 to 1.0.3 (thanks garg)</li> <li>Some small *nix fixes (thanks poison)</li> <li>Source path no longer saved for TTH enabled clients (saves memory and queue file space)</li> - <li>[bug 335] Search window settings saved automatically (thanks pothead)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=335">[bug 335]</a> Search window settings saved automatically (thanks pothead)</li> <li>Open folder selects file in explorer (thanks pothead)</li> <li>Local echo in pm window formatted as the other side should see it (thanks paka)</li> <li>Fixed debug assertion (thanks tpo)</li> <li>Dirty tabs settings improved (thanks ullner)</li> <li>ZLib upgraded to 1.2.3, possibly fixing security issues (thanks garg)</li> <li>Slot grants now last one connection instead of 10 minutes</li> - <li>[bug 632] Subtotals shown when selecting users in hub frame (thanks cologic)</li> - <li>[bug 625] /u chat command opens url (thanks pur)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=632">[bug 632]</a> Subtotals shown when selecting users in hub frame (thanks cologic)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=625">[bug 625]</a> /u chat command opens url (thanks pur)</li> <li>[NMDC] The first word of hub name is taken as short name for displaying purposes when space is limited</li> - <li>[bug 629] Waiting users frame added (thanks cologic)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=629">[bug 629]</a> Waiting users frame added (thanks cologic)</li> <li>Removed old versions check (thanks cologic)</li> - <li>[bug 635] Added option to limit maximum file list size to open (thanks paka)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=635">[bug 635]</a> Added option to limit maximum file list size to open (thanks paka)</li> <li>Filelist transfer logging default to off (thanks paka)</li> <li>Added some checks when creating fav hubs (thanks tpo)</li> <li>More settings screen updates (thanks ullner)</li> <li>Fixed linux file moving (thanks naga)</li> - <li>[bug 260] Added option to only download files with TTH (thanks ullner)</li> - <li>[bug 708] Fixed registry creation functions used (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=260">[bug 260]</a> Added option to only download files with TTH (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=708">[bug 708]</a> Fixed registry creation functions used (thanks ullner)</li> <li>Updated WTL</li> <li>Rewrote socket code to remove some old hacks and add some new (major change)</li> <li>Now using standard windows error messages for socket errors</li> @@ -197,12 +197,12 @@ <li>Improved hashing error reporting</li> <li>Fixed hash database rebuild</li> <li>Added /removefav command to remove a favorite hub (thanks ullner)</li> - <li>[bug 717] Fixed search combo box (thanks pothead)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=717">[bug 717]</a> Fixed search combo box (thanks pothead)</li> <li>Added option to change auto-refresh interval (thanks ullner)</li> - <li>[bug 740] Removed tab completion option (thanks ullner)</li> - <li>[bug 743] Added registry key creation failure notification (thanks ullner)</li> - <li>[bug 717] Fixed dropdown sizes (thanks pothead)</li> - <li>[bug 760] Fixed list subtraction issue (thanks cologic)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=740">[bug 740]</a> Removed tab completion option (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=743">[bug 743]</a> Added registry key creation failure notification (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=717">[bug 717]</a> Fixed dropdown sizes (thanks pothead)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=760">[bug 760]</a> Fixed list subtraction issue (thanks cologic)</li> <li>Added some right-to-left support, but it probably needs more work</li> <li>[NMDC] Minislots are no longer given to old DC++ clients (<0.304)</li> <li>[ADC] Directory size returned with search results</li> @@ -219,7 +219,7 @@ <li>Fixed context menu open for multi-screen setups (thanks trem)</li> <li>Changed country database to the original format so that users can update by themselves (thanks paka)</li> <li>Fixed some registry issues (thanks trem)</li> - <li>[bug 443] Fixed localised number encodings (thanks trem)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=443">[bug 443]</a> Fixed localised number encodings (thanks trem)</li> <li>Updated sorting to use a more windows-like order (thanks trem)</li> <li>Fixed an issue with restore all (thanks krzysztof tyszecki)</li> <li>Added list view tooltips</li> @@ -245,10 +245,10 @@ <h2>0.671 <span style="color: gray;">(2005-03-19)</span></h2> <ul> <li>Added possibility to set minislot size (thanks ullner)</li> - <li>[bug 22] Added possibility for multiline away messages and user commands (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=22">[bug 22]</a> Added possibility for multiline away messages and user commands (thanks ullner)</li> <li>Added file type to queue frame (thanks ullner)</li> <li>Changed stats frame to use standard colors (thanks yoji)</li> - <li>[bug 439] Fixed purge button (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=439">[bug 439]</a> Fixed purge button (thanks ullner)</li> <li>Fixed search frame only tth issue (thanks naga)</li> <li>Updated to ADC 0.9</li> <li>Fixed a crash bug (thanks trem)</li> @@ -264,8 +264,8 @@ <li>Basic ADC transfers now work</li> <li>Added option to specify bind address for sockets (thanks sed)</li> <li>Made the connection flood trigger slighly less sensitive</li> - <li>[bug 58] Fixed strange user list behaviour</li> - <li>[bug 83] Consolidated auto-open window options</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=58">[bug 58]</a> Fixed strange user list behaviour</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=83">[bug 83]</a> Consolidated auto-open window options</li> <li>Fixed some context menu stuff</li> </ul> @@ -274,30 +274,30 @@ <li>Fixed an issue with international formats of float numbers (also fixes UDP port setting)</li> <li>Fixed a minor crash log output address issue</li> <li>Split off color and sound to a new page (thanks ullner)</li> - <li>[bug 359] Fixed an issue with negative search terms (thanks naga)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=359">[bug 359]</a> Fixed an issue with negative search terms (thanks naga)</li> <li>Added option to filter TTH results in search spy (thanks joakim tosteberg)</li> - <li>[bug 184] Updated log functionality to allow users to customize log filenames (thanks naga)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=184">[bug 184]</a> Updated log functionality to allow users to customize log filenames (thanks naga)</li> <li>Fixes to log edit function (thanks naga)</li> <li>Added possibility to filter all searches without tth (thanks naga)</li> <li>More preferences splitting (thanks ullner)</li> <li>Small socket fix (thanks tremor)</li> <li>Search tab goes bold if set to (thanks naga)</li> <li>Hopefully fixed an UPnP crash</li> - <li>[bug 302] User commands in file lists (thanks joakim tosteberg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=302">[bug 302]</a> User commands in file lists (thanks joakim tosteberg)</li> <li>ADC url's clickable (thanks naga)</li> <li>[Bug 117] Improved search timer to avoid spamming hub (thanks naga)</li> <li>Redid some of the hash storage code, should be slighly more efficient</li> - <li>[bug 94] Share is cached for faster startup</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=94">[bug 94]</a> Share is cached for faster startup</li> <li>Temporary targetnames are now filled in when download starts, not when item is added to queue, which makes temp target dir changes happen for current queue items as well, plus we get a huge memory save on huge queues.</li> - <li>[bug 363] Added "Remove All Sources" to queue (thanks izzzo & garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=363">[bug 363]</a> Added "Remove All Sources" to queue (thanks izzzo & garg)</li> <li>Queue menu items greyed out when there are no items (thanks izzzo)</li> <li>Fixed a crash with certain empty lists (thanks garg)</li> <li>Added "restore all" to undo "minimize all" (thanks guitarm)</li> <li>Added optional pm history (thanks trem and ullner)</li> <li>Better log file managment (thanks trem)</li> - <li>[bug 412] Fixed a queue count issue on removal (thanks ullner)</li> - <li>[bug 9] Fixed a queue move issue (thanks paka)</li> - <li>[bug 20] Fixed upload auto-slot granting (thanks naga)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=412">[bug 412]</a> Fixed a queue count issue on removal (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=9">[bug 9]</a> Fixed a queue move issue (thanks paka)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=20">[bug 20]</a> Fixed upload auto-slot granting (thanks naga)</li> <li>Redid adl search to accomodate for partial list browsing (thanks garg)</li> <li>Added initial ADC file transfers support</li> <li>ADC hub connectivity improved</li> @@ -323,10 +323,10 @@ <li>Added exact file size to directory listings (thanks paka)</li> <li>Remove confirm fix (thanks trem)</li> <li>Added option for the new tab select behaviour (thanks trem)</li> - <li>[bug 116] Added possibility to download to temp folder on the same drive as target (thanks sed)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=116">[bug 116]</a> Added possibility to download to temp folder on the same drive as target (thanks sed)</li> <li>Fixed user command string for file list context (thanks sed)</li> - <li>[bug 290] Added more correct escaping of search strings (thanks sed)</li> - <li>[bug 432] Fixed download directory for adlsearch matches (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=290">[bug 290]</a> Added more correct escaping of search strings (thanks sed)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=432">[bug 432]</a> Fixed download directory for adlsearch matches (thanks ullner)</li> <li>Some UPnP fixes (thanks nils maier)</li> <li>ADL Search byte prefix fixes, might screw up your adl search settings on first load (thanks ullner)</li> <li>Linux download path fix (thanks jens oknelid)</li> @@ -337,7 +337,7 @@ <h2>0.668 <span style="color: gray;">(2004-11-30)</span></h2> <ul> - <li>[bug 311] Fixed crash on open own filelist (thanks sulan)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=311">[bug 311]</a> Fixed crash on open own filelist (thanks sulan)</li> <li>Added option to make /join open a new window (thanks ullner)</li> <li>Added mailto: to link-clicking (thanks ullner)</li> <li>Fixed stack overflow with excessive xml nesting (thanks farcry)</li> @@ -347,9 +347,9 @@ <li>PgUp/PgDn now scroll the chat window (thanks jonathan stone)</li> <li>Small fix with line history (thanks jonathan stone)</li> <li>Added option to use separate TCP and UDP ports</li> - <li>[bug 303] Fixed a raw command guessing bug (thanks garg)</li> - <li>[bug 345] Fixed an xml listing parsing bug</li> - <li>[bug 309] Hopefully fixed nt4 startup</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=303">[bug 303]</a> Fixed a raw command guessing bug (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=345">[bug 345]</a> Fixed an xml listing parsing bug</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=309">[bug 309]</a> Hopefully fixed nt4 startup</li> <li>Hopefully fixed an issue with downloading international search results from old clients</li> </ul> @@ -358,9 +358,9 @@ <li>Improved multiple hublist support (thanks garg)</li> <li>Fixed some favdirs issues (thanks naga)</li> <li>Fixed a status logging issue (thanks naga)</li> - <li>[bug 289] Fixed annoying login issue</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=289">[bug 289]</a> Fixed annoying login issue</li> <li>Added possibility to rename shares (thanks naga and tremor)</li> - <li>[bug 106] Fixed show joins for fav users (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=106">[bug 106]</a> Fixed show joins for fav users (thanks ullner)</li> <li>Fixed some unnecessary connects when download slots are full</li> <li>Fixed magnet registration issue (thanks garg)</li> <li>Some code documentation work (thanks jonathan jansson)</li> @@ -379,63 +379,63 @@ <h2>0.666 <span style="color: gray;">(2004-11-03)</span></h2> <ul> - <li>[bug 173] Fixed copy nick to clipboard (thanks trem)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=173">[bug 173]</a> Fixed copy nick to clipboard (thanks trem)</li> <li>Removed some old code (thanks garg)</li> <li>Added tth to log codes (thanks garg)</li> <li>Added # of locally filtered results to search frame (thanks garg)</li> <li>Fixed a crash in the upnp code</li> <li>Fixed wide formatting of time (thanks garg)</li> - <li>[bug 166] Added local filtering of searches with "-" in front of the search term (thanks cologic)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=166">[bug 166]</a> Added local filtering of searches with "-" in front of the search term (thanks cologic)</li> <li>Fixed a missing hubframe stats bug (thanks trem)</li> - <li>[bug 87] TTH's are now correctly searched for in search spy (thanks trem)</li> - <li>[bug 256] Fixed an issue with utf8 user commands (thanks trem)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=87">[bug 87]</a> TTH's are now correctly searched for in search spy (thanks trem)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=256">[bug 256]</a> Fixed an issue with utf8 user commands (thanks trem)</li> <li>Moved to a less intrusive build procedure where stlport and wtl are local to the DC++ build (see compile.txt)</li> <li>Added /log to show log for current hub / user (thanks garg)</li> <li>More internationalization (thanks garg)</li> <li>Updated some template code (thanks farcry)</li> <li>Extended log command (thanks ullner)</li> - <li>[bug 212] Fixed issue with utf-8 nicks during login to some hubs (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=212">[bug 212]</a> Fixed issue with utf-8 nicks during login to some hubs (thanks garg)</li> <li>Fixed issue with utf-8 time formatting for certain languages in certain locales</li> <li>Removed search optimisation obsoleted by tth's and bloom filters (those of you with a large number of files in your share, post on the forum if you notice any big increase in CPU usage)</li> - <li>[bug 69] Added option not to download files already in share (by TTH) (thanks TPO)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=69">[bug 69]</a> Added option not to download files already in share (by TTH) (thanks TPO)</li> <li>Help file work (garg, ullner)</li> <li>Added petabytes (PiB) (thanks garg)</li> <li>Clicking on active tab will deactivate it (thanks garg)</li> - <li>[bug 227] Fixed an issue with loading invalid virtual names when upgrading (thanks garg)</li> - <li>[bug 256] Fixed another issue with user commands (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=227">[bug 227]</a> Fixed an issue with loading invalid virtual names when upgrading (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=256">[bug 256]</a> Fixed another issue with user commands (thanks garg)</li> <li>Updated to WTL 7.5.4291</li> - <li>[bug 183] Hopefully fixed a few issues with w9x and Unicode</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=183">[bug 183]</a> Hopefully fixed a few issues with w9x and Unicode</li> <li>Fixed common control initialization</li> <li>Unix makefile now generates a shared lib (thanks jeremy huddleston)</li> <li>Slight memory save for hash database</li> - <li>[bug 130] Added favorite hub removal confirmation option (thanks ullner)</li> - <li>[bug 5] Fixed broken redirect (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=130">[bug 130]</a> Added favorite hub removal confirmation option (thanks ullner)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=5">[bug 5]</a> Fixed broken redirect (thanks garg)</li> <li>Added spy frame column saving (thanks garg)</li> <li>ADL Search autoqueue saved now (thanks garg)</li> <li>Window minimization issue fix (thanks garg)</li> - <li>[bug 129] Fixed some issues with downloading >4GiB files</li> - <li>[bug 15] ADL Search goto directory fixed (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=129">[bug 129]</a> Fixed some issues with downloading >4GiB files</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=15">[bug 15]</a> ADL Search goto directory fixed (thanks garg)</li> <li>Some fixes for compiling on osx (thanks jonathan jansson)</li> <li>Removed Makedefs in favour of a python script</li> <li>FastAlloc disabled in debug builds</li> - <li>[bug 266] Fixed a crash with offline users and user commands (thanks naga)</li> - <li>[bug 165] Fixed a case insensitivity issue (thanks farcry)</li> - <li>[bug 18] Added favorite download directories (thanks naga)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=266">[bug 266]</a> Fixed a crash with offline users and user commands (thanks naga)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=165">[bug 165]</a> Fixed a case insensitivity issue (thanks farcry)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=18">[bug 18]</a> Added favorite download directories (thanks naga)</li> <li>Fixed MyINFO spam when hashing</li> </ul> <h2>0.4034 <span style="color: gray;">(2004-10-03)</span></h2> <ul> <li>Help file additions (thanks naga & ullner)</li> - <li>[bug 170] Fixed a few issues with files not being hashed correctly (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=170">[bug 170]</a> Fixed a few issues with files not being hashed correctly (thanks garg)</li> <li>More ADC fixes (thanks sed)</li> <li>Fixed some ADLSearch stuff (thanks garg)</li> <li>Added item count to finished frames (thanks garg)</li> <li>Fixed user commands encoding (thanks garg)</li> <li>Added last search time to search spy (thanks ullner)</li> - <li>[bug 3] Fixed queue size growing on queue item move</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=3">[bug 3]</a> Fixed queue size growing on queue item move</li> <li>Fixed missing file list on 0 byte share</li> - <li>[bug 185] Fixed missing search results (thanks garg)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=185">[bug 185]</a> Fixed missing search results (thanks garg)</li> </ul> <h2>0.4033 <span style="color: gray;">(2004-09-27)</span></h2> @@ -452,7 +452,7 @@ <li>Fixed directory sorting in the file listings (thanks trem)</li> <li>Files that can't be moved to the target drive from the temp folder are now renamed to their real name</li> <li>Text with unix and mac line end encodings should now be correctly displayed</li> - <li>[bug 35] TTH Values are used for right click download menus when available</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=35">[bug 35]</a> TTH Values are used for right click download menus when available</li> <li>Upgraded to WTL 7.5.4196</li> <li>Updated license to allow others to release legal binaries compiled against WTL</li> <li>Moved the core structures to UTF-8 to allow correct internationalisation (major change)</li> @@ -462,7 +462,7 @@ <li>Removed autosearch string, it's not used any more</li> <li>Fixed a tth hash speed bug (hashing should be much faster now)</li> <li>File listings are now generated on the fly when someone needs them</li> - <li>[bug 127] Added UPnP support (thanks mark gillespie)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=127">[bug 127]</a> Added UPnP support (thanks mark gillespie)</li> <li>Ctrl-L now opens file lists (thanks garg)</li> <li>Various ADC patches (thanks sedulus)</li> <li>Slightly changed temporary download name</li> @@ -473,7 +473,7 @@ <li>Fixed a bug with autosearch repeating the same search needlessly (this should result in fewer autosearches, good for the hubs)</li> <li>Files scheduled for viewing are always set to highest prio</li> <li>Added rudimentary automake and autoconf support for the client part, perhaps this will encourage someone to finish a nice linux port</li> - <li>[bug 162] Fixed dupe usercommands on reconnect (thanks sed)</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=162">[bug 162]</a> Fixed dupe usercommands on reconnect (thanks sed)</li> <li>Links now clickable in PM's and notepad as well (thanks naga)</li> <li>Files are no longer hashed if the shared directory is removed while hashing</li> <li>Added hash progress dialog, hashing is run at a higher priority when dialog is shown</li> @@ -481,7 +481,7 @@ <li>Better strategy for removing old filelists on exit (thanks garg)</li> <li>Added Geo-IP license and fixes (thanks garg)</li> <li>Added Help file - make sure you read it (thanks garg)</li> - <li>[bug 169] Fixed a memory leak with rollback buffers under certain conditions</li> + <li><a href="http://dcpp.net/bugzilla/show_bug.cgi?id=169">[bug 169]</a> Fixed a memory leak with rollback buffers under certain conditions</li> <li>ADC INF updates only send the necessary info (thanks sed)</li> </ul> Modified: dcplusplus/trunk/help/gen_changelog.py =================================================================== --- dcplusplus/trunk/help/gen_changelog.py 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/help/gen_changelog.py 2006-06-03 11:12:22 UTC (rev 609) @@ -1,21 +1,14 @@ #!/usr/bin/env python - import os, re, cgi - - filetext = "../changelog.txt" - filehtml = "changelog.html" #os.rename(filehtml,"%s.old" % filehtml) fp_txt = open(filetext,'r') - fp_html = open(filehtml,'w') - - start_head = """<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html> <head> @@ -33,148 +26,85 @@ """ - - end_html = "</body>\n</html>" - - start_change = " <li>%(change)s" - +bug_text = " <li><a href=\"http://dcpp.net/bugzilla/show_bug.cgi?id=%(bug_id)s\">[bug %(bug_id)s]</a> %(change)s" change = " %(change)s" - end_change = "</li>\n" - - start_version = "<h2>%(version)s <span style=\"color: gray;\">(%(date)s)</span></h2>\n<ul>\n" - end_version = "</ul>\n\n" - - start_warning_end = " <li><span style=\"color: red;\">%(change)s</span></li>\n" - - new_version_pattern = re.compile("^.*?-- (?P<version>.*?) (?P<date>.*?) --") - -new_change = re.compile("^\* (?P<change>.*?)$") - +new_change = re.compile(r"^\* (?P<change>.*?)$") +bug_change = re.compile(r"^\* \[bug (?P<bug_id>\d+?)\] (?P<change>.*?)$") continue_change = re.compile("^\w*?(?P<change>.*?)$") - warning_change = re.compile("^(?P<change>[^ ].*?)$") - fp_html.write(start_head) - - open_change_state = False - close_version = False - start = False - - for line in fp_txt: - line = cgi.escape(line.strip()) - if not line: - if open_change_state: - fp_html.write(end_change) - open_change_state = False - continue - - mObj = new_version_pattern.match(line) - if mObj and mObj.groupdict()["date"] : - if close_version: - if open_change_state: - fp_html.write(end_change) - fp_html.write(end_version) - start = True - close_version = True - open_change_state = False - open_warning_state = False - fp_html.write(start_version % mObj.groupdict()) - continue - - if not start: - continue - + mObj = bug_change.match(line) + if mObj: + if open_change_state: + fp_html.write(end_change) + fp_html.write(bug_text % mObj.groupdict()) + open_change_state = True + continue mObj = new_change.match(line) - if mObj: # A new change is found: Close Open Warning or Changes. - if open_change_state: - fp_html.write(end_change) - fp_html.write(start_change % mObj.groupdict()) - open_change_state = True - continue - - mObj = continue_change.match(line) - if mObj and open_change_state: #A continutaion of an change (multiline change). - fp_html.write(change % mObj.groupdict()) - continue - - mObj = warning_change.match(line) - if mObj: - if open_change_state: - fp_html.write(end_change_state) - fp_html.write(start_warning_end % mObj.groupdict()) - continue - - if open_change_state: - fp_html.write(end_change) - if close_version: - fp_html.write(end_version) - fp_html.write(end_html) - fp_html.close() - -fp_txt.close() \ No newline at end of file +fp_txt.close() Modified: dcplusplus/trunk/windows/ADLSearchFrame.cpp =================================================================== --- dcplusplus/trunk/windows/ADLSearchFrame.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/ADLSearchFrame.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -63,7 +63,6 @@ ctrlList.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | LVS_REPORT | LVS_SHOWSELALWAYS, WS_EX_CLIENTEDGE, IDC_ADLLIST); ctrlList.SetExtendedListViewStyle(LVS_EX_LABELTIP | LVS_EX_HEADERDRAGDROP | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); - listContainer.SubclassWindow(ctrlList.m_hWnd); // Set background color ctrlList.SetBkColor(WinUtil::bgColor); @@ -197,18 +196,19 @@ } // Keyboard shortcuts -LRESULT ADLSearchFrame::onChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled) +LRESULT ADLSearchFrame::onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) { - switch(wParam) + NMLVKEYDOWN* kd = (NMLVKEYDOWN*) pnmh; + switch(kd->wVKey) { case VK_INSERT: - onAdd(0, 0, 0, bHandled); + PostMessage(WM_COMMAND, IDC_ADD, 0); break; case VK_DELETE: - onRemove(0, 0, 0, bHandled); + PostMessage(WM_COMMAND, IDC_REMOVE, 0); break; case VK_RETURN: - onEdit(0, 0, 0, bHandled); + PostMessage(WM_COMMAND, IDC_EDIT, 0); break; default: bHandled = FALSE; @@ -466,18 +466,15 @@ } // Double-click on list control -LRESULT ADLSearchFrame::onDoubleClickList(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) +LRESULT ADLSearchFrame::onDoubleClickList(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) { NMITEMACTIVATE* item = (NMITEMACTIVATE*)pnmh; - // Hit-test - LVHITTESTINFO info; - info.pt = item->ptAction; - int iItem = ctrlList.SubItemHitTest(&info); - if(iItem >= 0) - { + if(item->iItem >= 0) { // Treat as onEdit command - onEdit(0, 0, 0, bHandled); + PostMessage(WM_COMMAND, IDC_EDIT, 0); + } else if(item->iItem == -1) { + PostMessage(WM_COMMAND, IDC_ADD, 0); } return 0; Modified: dcplusplus/trunk/windows/ADLSearchFrame.h =================================================================== --- dcplusplus/trunk/windows/ADLSearchFrame.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/ADLSearchFrame.h 2006-06-03 11:12:22 UTC (rev 609) @@ -34,8 +34,6 @@ #include "../client/ADLSearch.h" -#define ADLLIST_MESSAGE_MAP 6 - /////////////////////////////////////////////////////////////////////////////// // // Class that represent an ADL search manager interface @@ -49,7 +47,7 @@ typedef MDITabChildWindowImpl<ADLSearchFrame> baseClass; // Constructor/destructor - ADLSearchFrame() : listContainer(WC_LISTBOX, this, ADLLIST_MESSAGE_MAP) {} + ADLSearchFrame() {} virtual ~ADLSearchFrame() { } // Frame window declaration @@ -71,9 +69,8 @@ COMMAND_ID_HANDLER(IDC_MOVE_DOWN, onMoveDown) NOTIFY_HANDLER(IDC_ADLLIST, NM_DBLCLK, onDoubleClickList) NOTIFY_HANDLER(IDC_ADLLIST, LVN_ITEMCHANGED, onItemChanged) + NOTIFY_HANDLER(IDC_ADLLIST, LVN_KEYDOWN, onKeyDown) CHAIN_MSG_MAP(baseClass) - ALT_MSG_MAP(ADLLIST_MESSAGE_MAP) - MESSAGE_HANDLER(WM_KEYDOWN, onChar) END_MSG_MAP() // Message handlers @@ -88,6 +85,7 @@ LRESULT onMoveDown(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); LRESULT onDoubleClickList(int idCtrl, LPNMHDR pnmh, BOOL& bHandled); LRESULT onItemChanged(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/); + LRESULT onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/); LRESULT onContextMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled); LRESULT onChar(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled); @@ -125,7 +123,6 @@ CButton ctrlMoveDown; CButton ctrlHelp; CMenu contextMenu; - CContainedWindow listContainer; // Column order enum Modified: dcplusplus/trunk/windows/DirectoryListingFrm.cpp =================================================================== --- dcplusplus/trunk/windows/DirectoryListingFrm.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/DirectoryListingFrm.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -33,6 +33,7 @@ #include "../client/User.h" #include "../client/ClientManager.h" +DirectoryListingFrame::FrameMap DirectoryListingFrame::frames; int DirectoryListingFrame::columnIndexes[] = { COLUMN_FILENAME, COLUMN_TYPE, COLUMN_EXACTSIZE, COLUMN_SIZE, COLUMN_TTH }; int DirectoryListingFrame::columnSizes[] = { 300, 60, 100, 100, 200 }; @@ -55,6 +56,7 @@ frame->CreateEx(WinUtil::mdiClient); } frame->loadFile(aFile); + frames.insert( FramePair( frame->m_hWnd, frame ) ); } } @@ -71,6 +73,7 @@ frame->CreateEx(WinUtil::mdiClient); } frame->loadXML(txt); + frames.insert( FramePair( frame->m_hWnd, frame ) ); } } @@ -779,7 +782,7 @@ string target = SETTING(DOWNLOAD_DIRECTORY); try { dcassert(newId < (int)WinUtil::lastDirs.size()); - dl->download(dir, Text::fromT(WinUtil::lastDirs[newId]), (GetKeyState(VK_SHIFT) & 0x8000) > 0); + dl->download(dir, Text::fromT(WinUtil::lastDirs[newId]), WinUtil::isShift()); } catch(const Exception& e) { ctrlStatus.SetText(STATUS_TEXT, Text::toT(e.getError()).c_str()); } @@ -1080,3 +1083,8 @@ ClientManager::getInstance()->userCommand(dl->getUser(), uc, tmp, true); } } + +void DirectoryListingFrame::closeAll(){ + for(FrameIter i = frames.begin(); i != frames.end(); ++i) + i->second->PostMessage(WM_CLOSE, 0, 0); +} Modified: dcplusplus/trunk/windows/DirectoryListingFrm.h =================================================================== --- dcplusplus/trunk/windows/DirectoryListingFrm.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/DirectoryListingFrm.h 2006-06-03 11:12:22 UTC (rev 609) @@ -44,6 +44,7 @@ public: static void openWindow(const tstring& aFile, const User::Ptr& aUser, int64_t aSpeed); static void openWindow(const User::Ptr& aUser, const string& txt, int64_t aSpeed); + static void closeAll(); typedef MDITabChildWindowImpl<DirectoryListingFrame, RGB(255, 0, 255)> baseClass; typedef UCHandler<DirectoryListingFrame> ucBase; @@ -163,6 +164,7 @@ LRESULT onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) { ctrlList.SetRedraw(FALSE); clearList(); + frames.erase(m_hWnd); WinUtil::saveHeaderOrder(ctrlList, SettingsManager::DIRECTORLISTINGFRAME_ORDER, SettingsManager::DIRECTORLISTINGFRAME_WIDTHS, COLUMN_LAST, columnIndexes, columnSizes); bHandled = FALSE; return 0; @@ -354,6 +356,12 @@ static int columnIndexes[COLUMN_LAST]; static int columnSizes[COLUMN_LAST]; + + typedef map< HWND , DirectoryListingFrame* > FrameMap; + typedef pair< HWND , DirectoryListingFrame* > FramePair; + typedef FrameMap::iterator FrameIter; + + static FrameMap frames; }; #endif // !defined(DIRECTORY_LISTING_FRM_H) Modified: dcplusplus/trunk/windows/FavoriteDirsPage.cpp =================================================================== --- dcplusplus/trunk/windows/FavoriteDirsPage.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/FavoriteDirsPage.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -88,6 +88,33 @@ return 0; } +LRESULT FavoriteDirsPage::onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) { + NMLVKEYDOWN* kd = (NMLVKEYDOWN*) pnmh; + switch(kd->wVKey) { + case VK_INSERT: + PostMessage(WM_COMMAND, IDC_ADD, 0); + break; + case VK_DELETE: + PostMessage(WM_COMMAND, IDC_REMOVE, 0); + break; + default: + bHandled = FALSE; + } + return 0; +} + +LRESULT FavoriteDirsPage::onDoubleClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) { + NMITEMACTIVATE* item = (NMITEMACTIVATE*)pnmh; + + if(item->iItem >= 0) { + PostMessage(WM_COMMAND, IDC_RENAME, 0); + } else if(item->iItem == -1) { + PostMessage(WM_COMMAND, IDC_ADD, 0); + } + + return 0; +} + LRESULT FavoriteDirsPage::onClickedAdd(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { tstring target; Modified: dcplusplus/trunk/windows/FavoriteDirsPage.h =================================================================== --- dcplusplus/trunk/windows/FavoriteDirsPage.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/FavoriteDirsPage.h 2006-06-03 11:12:22 UTC (rev 609) @@ -44,6 +44,8 @@ MESSAGE_HANDLER(WM_HELP, onHelp) MESSAGE_HANDLER(WM_DROPFILES, onDropFiles) NOTIFY_HANDLER(IDC_FAVORITE_DIRECTORIES, LVN_ITEMCHANGED, onItemchangedDirectories) + NOTIFY_HANDLER(IDC_FAVORITE_DIRECTORIES, LVN_KEYDOWN, onKeyDown) + NOTIFY_HANDLER(IDC_FAVORITE_DIRECTORIES, NM_DBLCLK, onDoubleClick) COMMAND_ID_HANDLER(IDC_ADD, onClickedAdd) COMMAND_ID_HANDLER(IDC_REMOVE, onClickedRemove) COMMAND_ID_HANDLER(IDC_RENAME, onClickedRename) @@ -54,6 +56,8 @@ LRESULT onDropFiles(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT onHelp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT onItemchangedDirectories(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/); + LRESULT onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled); + LRESULT onDoubleClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/); LRESULT onClickedAdd(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT onClickedRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT onClickedRename(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); Modified: dcplusplus/trunk/windows/FavoritesFrm.cpp =================================================================== --- dcplusplus/trunk/windows/FavoritesFrm.cpp 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/FavoritesFrm.cpp 2006-06-03 11:12:22 UTC (rev 609) @@ -152,19 +152,35 @@ } LRESULT FavoriteHubsFrame::onDoubleClickHublist(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) { - if(!checkNick()) - return 0; - NMITEMACTIVATE* item = (NMITEMACTIVATE*) pnmh; - if(item->iItem != -1) { - FavoriteHubEntry* entry = (FavoriteHubEntry*)ctrlHubs.GetItemData(item->iItem); - HubFrame::openWindow(Text::toT(entry->getServer())); + if(item->iItem == -1) { + PostMessage(WM_COMMAND, IDC_NEWFAV, 0); + } else { + PostMessage(WM_COMMAND, IDC_CONNECT, 0); } return 0; } +LRESULT FavoriteHubsFrame::onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) { + NMLVKEYDOWN* kd = (NMLVKEYDOWN*) pnmh; + switch(kd->wVKey) { + case VK_INSERT: + PostMessage(WM_COMMAND, IDC_NEWFAV, 0); + break; + case VK_DELETE: + PostMessage(WM_COMMAND, IDC_REMOVE, 0); + break; + case VK_RETURN: + PostMessage(WM_COMMAND, IDC_CONNECT, 0); + break; + default: + bHandled = FALSE; + } + return 0; +} + LRESULT FavoriteHubsFrame::onRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { int i = -1; if(!BOOLSETTING(CONFIRM_HUB_REMOVAL) || MessageBox(CTSTRING(REALLY_REMOVE), _T(APPNAME) _T(" ") _T(VERSIONSTRING), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES) { Modified: dcplusplus/trunk/windows/FavoritesFrm.h =================================================================== --- dcplusplus/trunk/windows/FavoritesFrm.h 2006-05-21 21:46:16 UTC (rev 608) +++ dcplusplus/trunk/windows/FavoritesFrm.h 2006-06-03 11:12:22 UTC (rev 609) @@ -52,14 +52,15 @@ COMMAND_ID_HANDLER(IDC_MOVE_DOWN, onMoveDown); // NOTIFY_HANDLER(IDC_HUBLIST, LVN_COLUMNCLICK, onColumnClickHublist) NOTIFY_HANDLER(IDC_HUBLIST, NM_DBLCLK, onDoubleClickHublist) - NOTIFY_HANDLER(IDC_HUBLIST, NM_RETURN, onEnter) + NOTIFY_HANDLER(IDC_HUBLIST, LVN_KEYDOWN, onKeyDown) NOTIFY_HANDLER(IDC_HUBLIST, LVN_ITEMCHANGED, onItemChanged... [truncated message content] |