]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/dialoged/src/edtree.cpp
Set the selection under Motif in wxChoiceDialog
[wxWidgets.git] / utils / dialoged / src / edtree.cpp
index 2e9d0e5df0033356b393ff71998d1011ea7f03f6..26babac2e52b1ebcde1c3efd80eef4848acd2d21 100644 (file)
@@ -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()