From: <sag...@us...> - 2013-08-22 23:37:29
|
Revision: 2613 http://sourceforge.net/p/modplug/code/2613 Author: saga-games Date: 2013-08-22 23:37:20 +0000 (Thu, 22 Aug 2013) Log Message: ----------- [Fix] Slowly double-clicking treeview items that are not part of a song folder crashed the application. Modified Paths: -------------- trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2013-08-22 07:36:49 UTC (rev 2612) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2013-08-22 23:37:20 UTC (rev 2613) @@ -3397,7 +3397,7 @@ NMTVDISPINFO *info = reinterpret_cast<NMTVDISPINFO *>(nmhdr); CEdit *editCtrl = GetEditControl(); const ModItem modItem = GetModItem(info->item.hItem); - const CModDoc *modDoc = GetDocumentFromItem(info->item.hItem); + const CModDoc *modDoc = modItem.IsSongItem() ? GetDocumentFromItem(info->item.hItem) : nullptr; if(editCtrl != nullptr && modDoc != nullptr) { @@ -3484,7 +3484,7 @@ NMTVDISPINFO *info = reinterpret_cast<NMTVDISPINFO *>(nmhdr); const ModItem modItem = GetModItem(info->item.hItem); - CModDoc *modDoc = GetDocumentFromItem(info->item.hItem); + CModDoc *modDoc = modItem.IsSongItem() ? GetDocumentFromItem(info->item.hItem) : nullptr; if(info->item.pszText != nullptr && modDoc != nullptr) { Modified: trunk/OpenMPT/mptrack/View_tre.h =================================================================== --- trunk/OpenMPT/mptrack/View_tre.h 2013-08-22 07:36:49 UTC (rev 2612) +++ trunk/OpenMPT/mptrack/View_tre.h 2013-08-22 23:37:20 UTC (rev 2613) @@ -79,17 +79,22 @@ enum ModItemType { MODITEM_NULL = 0, - MODITEM_ORDER, + + MODITEM_BEGIN_SONGITEMS, + MODITEM_ORDER = MODITEM_BEGIN_SONGITEMS, MODITEM_PATTERN, MODITEM_SAMPLE, MODITEM_INSTRUMENT, MODITEM_COMMENTS, MODITEM_EFFECT, + MODITEM_SEQUENCE, MODITEM_HDR_SONG, MODITEM_HDR_ORDERS, MODITEM_HDR_PATTERNS, MODITEM_HDR_SAMPLES, MODITEM_HDR_INSTRUMENTS, + MODITEM_END_SONGITEMS = MODITEM_HDR_INSTRUMENTS, + MODITEM_HDR_INSTRUMENTLIB, MODITEM_HDR_MIDILIB, MODITEM_HDR_MIDIGROUP, @@ -101,7 +106,6 @@ MODITEM_INSLIB_SONG, MODITEM_DLSBANK_FOLDER, MODITEM_DLSBANK_INSTRUMENT, - MODITEM_SEQUENCE, }; // Bit mask magic @@ -136,6 +140,7 @@ uint16 val2; ModItem(ModItemType t = MODITEM_NULL, uint32 v1 = 0, uint16 v2 = 0) : type(uint16(t)), val1(v1), val2(v2) { } + bool IsSongItem() const { return type >= MODITEM_BEGIN_SONGITEMS && type <= MODITEM_END_SONGITEMS; } }; struct DlsItem : public ModItem This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |