From 44d60c0b26303c2b72bb4445fc9df270ffdaf429 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Tue, 23 Nov 2004 19:58:47 +0000 Subject: [PATCH] Fix for assert after left click on tree in generic dir dialog in native MSW build. Source cleaning and readability fixes. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30742 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/dirctrlg.cpp | 30 +++++++++++++++--------------- src/generic/dirdlgg.cpp | 8 +++++++- src/msw/treectrl.cpp | 25 +++++++++++++++++-------- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index 2a1e1137e0..7f95513ed7 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -201,18 +201,18 @@ size_t wxGetAvailableDrives(wxArrayString &paths, wxArrayString &names, wxArrayI ItemCount volumeIndex = 1; OSErr err = noErr ; - + while( noErr == err ) { HFSUniStr255 volumeName ; FSRef fsRef ; FSVolumeInfo volumeInfo ; - err = FSGetVolumeInfo(0, volumeIndex, NULL, kFSVolInfoFlags , &volumeInfo , &volumeName, &fsRef); - if( noErr == err ) - { - wxString path = wxMacFSRefToPath( &fsRef ) ; + err = FSGetVolumeInfo(0, volumeIndex, NULL, kFSVolInfoFlags , &volumeInfo , &volumeName, &fsRef); + if( noErr == err ) + { + wxString path = wxMacFSRefToPath( &fsRef ) ; wxString name = wxMacHFSUniStrToString( &volumeName ) ; - + if ( (volumeInfo.flags & kFSVolFlagSoftwareLockedMask) || (volumeInfo.flags & kFSVolFlagHardwareLockedMask) ) { icon_ids.Add(wxFileIconsTable::cdrom); @@ -222,11 +222,11 @@ size_t wxGetAvailableDrives(wxArrayString &paths, wxArrayString &names, wxArrayI icon_ids.Add(wxFileIconsTable::drive); } // todo other removable - + paths.Add(path); names.Add(name); volumeIndex++ ; - } + } } #elif defined(__UNIX__) @@ -383,7 +383,7 @@ void wxDirItemData::SetNewDirName(const wxString& path) bool wxDirItemData::HasSubDirs() const { - if (m_path.IsEmpty()) + if (m_path.empty()) return false; wxDir dir; @@ -398,7 +398,7 @@ bool wxDirItemData::HasSubDirs() const bool wxDirItemData::HasFiles(const wxString& WXUNUSED(spec)) const { - if (m_path.IsEmpty()) + if (m_path.empty()) return false; wxDir dir; @@ -522,7 +522,7 @@ bool wxGenericDirCtrl::Create(wxWindow *parent, m_treeCtrl = CreateTreeCtrl(this, wxID_TREECTRL, wxPoint(0,0), GetClientSize(), treeStyle); - if (!filter.IsEmpty() && (style & wxDIRCTRL_SHOW_FILTERS)) + if (!filter.empty() && (style & wxDIRCTRL_SHOW_FILTERS)) m_filterListCtrl = new wxDirFilterListCtrl(this, wxID_FILTERLISTCTRL, wxDefaultPosition, wxDefaultSize, filterStyle); m_defaultPath = dir; @@ -642,7 +642,7 @@ void wxGenericDirCtrl::OnBeginEditItem(wxTreeEvent &event) void wxGenericDirCtrl::OnEndEditItem(wxTreeEvent &event) { - if ((event.GetLabel().IsEmpty()) || + if ((event.GetLabel().empty()) || (event.GetLabel() == _(".")) || (event.GetLabel() == _("..")) || (event.GetLabel().Find(wxT('/')) != wxNOT_FOUND) || @@ -905,7 +905,7 @@ wxTreeItemId wxGenericDirCtrl::FindChild(wxTreeItemId parentId, const wxString& { wxDirItemData* data = (wxDirItemData*) m_treeCtrl->GetItemData(childId); - if (data && !data->m_path.IsEmpty()) + if (data && !data->m_path.empty()) { wxString childPath(data->m_path); if (!wxEndsWithPathSeparator(childPath)) @@ -1625,13 +1625,13 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime) Create(); #if wxUSE_MIMETYPE - if (!extension.IsEmpty()) + if (!extension.empty()) { wxFileIconEntry *entry = (wxFileIconEntry*) m_HashTable->Get(extension); if (entry) return (entry -> id); } - wxFileType *ft = (mime.IsEmpty()) ? + wxFileType *ft = (mime.empty()) ? wxTheMimeTypesManager -> GetFileTypeFromExtension(extension) : wxTheMimeTypesManager -> GetFileTypeFromMimeType(mime); diff --git a/src/generic/dirdlgg.cpp b/src/generic/dirdlgg.cpp index 0994cded6f..a07fbd497e 100644 --- a/src/generic/dirdlgg.cpp +++ b/src/generic/dirdlgg.cpp @@ -278,7 +278,13 @@ void wxGenericDirDialog::OnTreeSelected( wxTreeEvent &event ) if (!m_dirCtrl) return; - wxDirItemData *data = (wxDirItemData*)m_dirCtrl->GetTreeCtrl()->GetItemData(event.GetItem()); + wxTreeItemId item = event.GetItem(); + + wxDirItemData *data = NULL; + + if(item.IsOk()) + data = (wxDirItemData*)m_dirCtrl->GetTreeCtrl()->GetItemData(item); + if (data) m_input->SetValue( data->m_path ); }; diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 2a5aed5905..b7329c5289 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -1497,8 +1497,14 @@ wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item), wxTreeItemIdValue& cookie) const { - wxTreeItemId item(TreeView_GetNextSibling(GetHwnd(), - HITEM(wxTreeItemId(cookie)))); + wxTreeItemId fromCookie(cookie); + + HTREEITEM hitem = HITEM(fromCookie); + + hitem = TreeView_GetNextSibling(GetHwnd(), hitem); + + wxTreeItemId item(hitem); + cookie = item.m_pItem; return item; @@ -1519,11 +1525,14 @@ wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item), long& cookie) const { - wxTreeItemId item(TreeView_GetNextSibling - ( - GetHwnd(), - HITEM(wxTreeItemId((void *)cookie) - ))); + wxTreeItemId fromCookie((void *)cookie); + + HTREEITEM hitem = HITEM(fromCookie); + + hitem = TreeView_GetNextSibling(GetHwnd(), hitem); + + wxTreeItemId item(hitem); + cookie = (long)item.m_pItem; return item; @@ -1646,7 +1655,7 @@ wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent, } UINT mask = 0; - if ( !text.IsEmpty() ) + if ( !text.empty() ) { mask |= TVIF_TEXT; tvIns.item.pszText = (wxChar *)text.c_str(); // cast is ok -- 2.45.2