From: John L. <jr...@us...> - 2009-11-21 20:24:36
|
Update of /cvsroot/wxlua/wxLua/modules/wxluadebug/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv28276/wxLua/modules/wxluadebug/src Modified Files: wxldebug.cpp wxlstack.cpp Log Message: Fix bug in showing folder symbol for key in wxLuaStackDialog Fix bug in not removing expanded table ref for empty tables in wxLuaStackDialog Remember if the dialog was maximized the last time it was shown Index: wxlstack.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluadebug/src/wxlstack.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** wxlstack.cpp 17 Nov 2009 06:11:04 -0000 1.33 --- wxlstack.cpp 21 Nov 2009 20:24:02 -0000 1.34 *************** *** 107,110 **** --- 107,111 ---- return wxLuaStackDialog::IMG_TABLE; } + break; } case wxLuaStackDialog::LIST_COL_VALUE_TYPE : *************** *** 117,120 **** --- 118,122 ---- return wxLuaStackDialog::IMG_TABLE; } + break; } } *************** *** 147,151 **** IMPLEMENT_ABSTRACT_CLASS(wxLuaStackDialog, wxDialog) ! wxSize wxLuaStackDialog::m_defaultSize(500, 300); BEGIN_EVENT_TABLE(wxLuaStackDialog, wxDialog) --- 149,154 ---- IMPLEMENT_ABSTRACT_CLASS(wxLuaStackDialog, wxDialog) ! wxSize wxLuaStackDialog::sm_defaultSize(500, 300); ! bool wxLuaStackDialog::sm_maximized = false; BEGIN_EVENT_TABLE(wxLuaStackDialog, wxDialog) *************** *** 196,200 **** wxSize size(size_); ! if (size == wxDefaultSize) size = m_defaultSize; if (!wxDialog::Create(parent, id, title, pos, size, --- 199,203 ---- wxSize size(size_); ! if (size == wxDefaultSize) size = sm_defaultSize; if (!wxDialog::Create(parent, id, title, pos, size, *************** *** 379,382 **** --- 382,388 ---- SetSize(size); // force last good/known size + if (sm_maximized) + Maximize(); + EnumerateStack(); *************** *** 388,392 **** { if (!IsFullScreen() && !IsIconized() && !IsMaximized()) ! m_defaultSize = GetSize(); RemoveAllLuaReferences(); --- 394,400 ---- { if (!IsFullScreen() && !IsIconized() && !IsMaximized()) ! sm_defaultSize = GetSize(); ! ! sm_maximized = IsMaximized(); RemoveAllLuaReferences(); *************** *** 1043,1055 **** if (m_show_dup_expand_msg) // don't bother when expanding all children { ! wxMessageBox(wxT("Cannot expand linked tables,\nplease see the already expanded table."), ! wxT("wxLua Stack"), wxOK | wxCENTRE, this); ! ! int n = m_listData.Index((void*)m_expandedItems[long_key]); ! wxCHECK_MSG(n != wxNOT_FOUND, false, wxT("Unable to find hash of expanded items.")); ! m_listCtrl->SetItemState(n, wxLIST_STATE_FOCUSED, wxLIST_STATE_FOCUSED); ! m_listCtrl->SetItemState(n, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); ! m_listCtrl->EnsureVisible(n); } } --- 1051,1065 ---- if (m_show_dup_expand_msg) // don't bother when expanding all children { ! int ret = wxMessageBox(wxString::Format(wxT("Cannot expand linked tables %lx,\nselect Ok to see the previously expanded table."), long_key), ! wxT("wxLua Stack"), wxOK | wxCANCEL | wxCENTRE, this); ! if (ret == wxOK) ! { ! int n = m_listData.Index((void*)m_expandedItems[long_key]); ! wxCHECK_MSG(n != wxNOT_FOUND, false, wxT("Unable to find hash of expanded items.")); ! m_listCtrl->SetItemState(n, wxLIST_STATE_FOCUSED, wxLIST_STATE_FOCUSED); ! m_listCtrl->SetItemState(n, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); ! m_listCtrl->EnsureVisible(n); ! } } } *************** *** 1147,1151 **** { wxLuaStackListData* stkListData_n = (wxLuaStackListData*)m_listData[n]; ! wxCHECK_MSG(stkListData_n != NULL, false, wxT("Invalid wxLuaStack data")); // are we finished with the original expanded item --- 1157,1163 ---- { wxLuaStackListData* stkListData_n = (wxLuaStackListData*)m_listData[n]; ! wxCHECK_MSG(stkListData_n != NULL, false, wxT("Invalid wxLuaStack data n")); ! wxLuaDebugItem* debugItem_n = stkListData_n->GetDebugItem(); ! wxCHECK_MSG((debugItem_n != NULL), false, wxT("Invalid debug item n")); // are we finished with the original expanded item *************** *** 1156,1169 **** // remove all expanded children items ! if (stkListData_n->m_childrenDebugData.Ok() && ! stkListData_n->GetDebugItem()->GetFlagBit(WXLUA_DEBUGITEM_EXPANDED)) { long long_key = 0; ! if (stkListData_n->GetDebugItem()->GetRefPtr(long_key)) m_expandedItems.erase(long_key); } // note that the debug item is a member of the parent debug data array ! stkListData_n->GetDebugItem()->SetFlagBit(WXLUA_DEBUGITEM_EXPANDED, false); //m_listData.RemoveAt(n); // we remove them all at once for speed, see below --- 1168,1180 ---- // remove all expanded children items ! if (debugItem_n->GetFlagBit(WXLUA_DEBUGITEM_EXPANDED)) { long long_key = 0; ! if (debugItem_n->GetRefPtr(long_key)) m_expandedItems.erase(long_key); } // note that the debug item is a member of the parent debug data array ! debugItem_n->SetFlagBit(WXLUA_DEBUGITEM_EXPANDED, false); //m_listData.RemoveAt(n); // we remove them all at once for speed, see below *************** *** 1280,1286 **** lua_pop(L, 1); // pop ref table } // Clear out the old numeric references since it should be "empty" // though full of dead table[idx]=next_idx, where table[0] = 1; - wxlua_lreg_createtable(L, &wxlua_lreg_debug_refs_key); } --- 1291,1299 ---- lua_pop(L, 1); // pop ref table } + // Clear out the old numeric references since it should be "empty" // though full of dead table[idx]=next_idx, where table[0] = 1; wxlua_lreg_createtable(L, &wxlua_lreg_debug_refs_key); + + lua_gc(L, LUA_GCCOLLECT, 0); // full garbage collection to cleanup after ourselves } Index: wxldebug.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluadebug/src/wxldebug.cpp,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** wxldebug.cpp 17 Nov 2009 06:11:03 -0000 1.71 --- wxldebug.cpp 21 Nov 2009 20:24:02 -0000 1.72 *************** *** 463,467 **** --- 463,469 ---- // don't ref anything in this table since it's already refed if ((lua_key_type == LUA_TTABLE) && (lightuserdata_reg_key != &wxlua_lreg_debug_refs_key)) + { key_ref = RefTable(L, -2, &key_flag_type, WXLUA_DEBUGITEM_KEY_REF, references); + } else if (lua_key_type == LUA_TUSERDATA) { *************** *** 488,492 **** --- 490,496 ---- // don't ref anything in this table since it's already refed if ((lua_value_type == LUA_TTABLE) && (lightuserdata_reg_key != &wxlua_lreg_debug_refs_key)) + { val_ref = RefTable(L, -1, &val_flag_type, WXLUA_DEBUGITEM_VALUE_REF, references); + } else if (lua_value_type == LUA_TUSERDATA) { |