Browse Source

wxGUI: don't crash when gis element is selected repeatedly
merge from devbr6, https://trac.osgeo.org/grass/changeset/32678


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@32679 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 16 years ago
parent
commit
e2a53fd0f4
1 changed files with 12 additions and 7 deletions
  1. 12 7
      gui/wxpython/gui_modules/gselect.py

+ 12 - 7
gui/wxpython/gui_modules/gselect.py

@@ -99,7 +99,7 @@ class TreeCtrlComboPopup(wx.combo.ComboPopup):
     def GetStringValue(self):
         str = ""
         for value in self.value:
-            str += self.seltree.GetItemText(value) + ","
+            str += value + ","
         str = str.rstrip(',')
         return str
 
@@ -110,9 +110,13 @@ class TreeCtrlComboPopup(wx.combo.ComboPopup):
         self.GetElementList(self.type, self.mapsets, self.exceptOf)
 
         if len(self.value) > 0:
-            self.seltree.EnsureVisible(self.value[0])
-            self.seltree.SelectItem(self.value[0])
-
+            root = self.seltree.GetRootItem()
+            if not root:
+                return
+            item = self.FindItem(root, self.value[0])
+            self.seltree.EnsureVisible(item)
+            self.seltree.SelectItem(item)
+            
     def SetStringValue(self, value):
         # this assumes that item strings are unique...
         root = self.seltree.GetRootItem()
@@ -242,7 +246,7 @@ class TreeCtrlComboPopup(wx.combo.ComboPopup):
             if self.seltree.ItemHasChildren(item):
                 item = self.FindItem(item, text)
             item, cookie = self.seltree.GetNextChild(parentItem, cookie)
-        return wx.TreeItemId();
+        return wx.TreeItemId()
 
 
     def AddItem(self, value, parent=None):
@@ -273,9 +277,10 @@ class TreeCtrlComboPopup(wx.combo.ComboPopup):
                 self.value = [] # cannot select mapset item
             else:
                 if self.multiple is True:
-                    self.value.append(item)
+                    # text item should be unique
+                    self.value.append(self.seltree.GetItemText(item))
                 else:
-                    self.value = [item, ]
+                    self.value = [self.seltree.GetItemText(item), ]
 
             self.Dismiss()