X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4158c64a7e90184dfa429a9d2690c5384906c1e2..6d26dc89c5e7a421f4f8807728928eee91aa5f7e:/utils/dialoged/src/edtree.cpp diff --git a/utils/dialoged/src/edtree.cpp b/utils/dialoged/src/edtree.cpp index 2e9d0e5df0..26babac2e5 100644 --- a/utils/dialoged/src/edtree.cpp +++ b/utils/dialoged/src/edtree.cpp @@ -39,6 +39,7 @@ BEGIN_EVENT_TABLE(wxResourceEditorProjectTree, wxTreeCtrl) EVT_LEFT_DCLICK(wxResourceEditorProjectTree::LeftDClick) +//EVT_LEFT_DOWN(wxResourceEditorProjectTree::LeftClick) EVT_TREE_SEL_CHANGED(IDC_TREECTRL, wxResourceEditorProjectTree::OnSelChanged) END_EVENT_TABLE() @@ -48,6 +49,56 @@ wxTreeCtrl(parent, id, pos, size, style) { } +/* +void wxResourceEditorProjectTree::LeftClick(wxMouseEvent &event) +{ + long sel = GetSelection(); + if (sel == -1) + return; + + if (GetItemData(sel) == 0) + { + event.Skip(); + return; + } + + wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); + + wxString resType(res->GetType()); + + wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); + wxResourceManager *manager = frame->manager; + + long selParent = wxTreeCtrl::GetParent(sel); + + if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") + { + wxWindow *win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } +/ * + if (win) + manager->GetCurrentResourceManager()->EditWindow(win); +* / + } +// else +// manager->EditSelectedResource(); + + event.Skip(); + +} // wxResourceEditorProjectTree::LeftClick() +*/ + void wxResourceEditorProjectTree::LeftDClick(wxMouseEvent& WXUNUSED(event)) { long sel = GetSelection(); @@ -64,11 +115,38 @@ void wxResourceEditorProjectTree::LeftDClick(wxMouseEvent& WXUNUSED(event)) wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); wxResourceManager *manager = frame->manager; + long selParent = wxTreeCtrl::GetParent(sel); + + wxWindow *win = NULL; if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") - manager->GetCurrentResourceManager()->EditWindow(manager->FindWindowForResource(res)); + { + win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } + + if (win) + manager->GetCurrentResourceManager()->EditWindow(win); + } else - manager->EditSelectedResource(); -} + { +// manager->EditSelectedResource(); + win = manager->FindWindowForResource(res); + wxResourceManager::GetCurrentResourceManager()->EditWindow(win); + } + + +} // wxResourceEditorProjectTree::LeftDClick() + void wxResourceEditorProjectTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) { @@ -84,9 +162,33 @@ void wxResourceEditorProjectTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); wxString resType(res->GetType()); + + wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); + wxResourceManager *manager = frame->manager; + + long selParent = wxTreeCtrl::GetParent(sel); + if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") - return; - - wxResourceManager::GetCurrentResourceManager()->Edit(res); -} + { + wxWindow *win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } + +// if (win) +// manager->GetCurrentResourceManager()->EditWindow(win); + } + else + wxResourceManager::GetCurrentResourceManager()->Edit(res); + +} // wxResourceEditorProjectTree::OnSelChanged()