Update of /cvsroot/mahogany/M/src/gui
In directory usw-pr-cvs1:/tmp/cvs-serv16964/src/gui

Modified Files:
        wxFolderTree.cpp 
Log Message:
insert the folders to the correct place in the tree when they're created

Index: wxFolderTree.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/gui/wxFolderTree.cpp,v
retrieving revision 1.187
retrieving revision 1.188
diff -b -u -2 -r1.187 -r1.188
--- wxFolderTree.cpp    11 Mar 2002 19:40:56 -0000      1.187
+++ wxFolderTree.cpp    17 Mar 2002 15:39:14 -0000      1.188
@@ -187,5 +187,6 @@
    wxFolderTreeNode(wxTreeCtrl *tree,
                     MFolder *folder,
-                    wxFolderTreeNode *parent = NULL);
+                    wxFolderTreeNode *parent = NULL,
+                    int index = -1);
 
    // dtor
@@ -1183,5 +1184,6 @@
 wxFolderTreeNode::wxFolderTreeNode(wxTreeCtrl *tree,
                                    MFolder *folder,
-                                   wxFolderTreeNode *parent)
+                                   wxFolderTreeNode *parent,
+                                   int index)
 {
    // init member vars
@@ -1220,5 +1222,9 @@
       //else: no status, don't show anything
 
-      id = tree->AppendItem(GetParent()->GetId(), label, image, image, this);
+      wxTreeItemId idParent = GetParent()->GetId();
+      if ( index == -1 )
+         id = tree->AppendItem(idParent, label, image, image, this);
+      else
+         id = tree->InsertItem(idParent, index, label, image, image, this);
    }
 
@@ -2753,6 +2759,33 @@
                CHECK_RET( folder, "just created folder doesn't exist?" );
 
+               // insert the new folder at the right place
+               int pos = 0;
+               long cookie;
+               wxTreeItemId item = GetFirstChild(parent, cookie);
+               while ( item.IsOk() )
+               {
+                  MFolder *folder2 = GetFolderTreeNode(item)->GetFolder();
+                  int rc = CompareFoldersByTreePos(&folder, &folder2);
+                  if ( rc == 0 )
+                  {
+                     // CompareFoldersByTreePos() doesn't look at the folder
+                     // names as they are always sorted when it is called from
+                     // OnTreeExpanding() but we should do it specially here
+                     rc = strcmp(folder->GetName(), folder2->GetName());
+                  }
+
+                  if ( rc < 0 )
+                  {
+                     // we should insert it here
+                     break;
+                  }
+
+                  pos++;
+
+                  item = GetNextChild(parent, cookie);
+               }
+
                // create the entry as the tree won't do it for us any more
-               (void)new wxFolderTreeNode(this, folder, nodeParent);
+               (void)new wxFolderTreeNode(this, folder, nodeParent, pos);
             }
             else // parent has never been expanded


_______________________________________________
Mahogany-cvsupdates mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates

Reply via email to