浏览代码

wxGUI: fix bug in layering and rendering, update https://trac.osgeo.org/grass/changeset/32831
code removed from https://trac.osgeo.org/grass/changeset/32465 recovered
(merge from devbr6, https://trac.osgeo.org/grass/changeset/32839)


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

Martin Landa 16 年之前
父节点
当前提交
5fb47c553d
共有 2 个文件被更改,包括 18 次插入4 次删除
  1. 0 2
      gui/wxpython/gui_modules/mapdisp.py
  2. 18 2
      gui/wxpython/gui_modules/wxgui_utils.py

+ 0 - 2
gui/wxpython/gui_modules/mapdisp.py

@@ -644,8 +644,6 @@ class BufferedWindow(MapWindow, wx.Window):
         # render background image if needed
         # render background image if needed
         #
         #
         if render:
         if render:
-            # walk layer tree and update current layers
-            self.tree.ReorderLayers()
             # update display size
             # update display size
             self.Map.ChangeMapSize(self.GetClientSize())
             self.Map.ChangeMapSize(self.GetClientSize())
             windres = False
             windres = False

+ 18 - 2
gui/wxpython/gui_modules/wxgui_utils.py

@@ -496,7 +496,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         """Rename layer"""
         """Rename layer"""
         self.EditLabel(self.layer_selected)
         self.EditLabel(self.layer_selected)
 
 
-    def AddLayer(self, ltype, lname=None, lchecked=None, \
+    def AddLayer(self, ltype, lname=None, lchecked=None,
                  lopacity=None, lcmd=None, lgroup=None, lnviz=None):
                  lopacity=None, lcmd=None, lgroup=None, lnviz=None):
         """Add new item to the layer tree, create corresponding MapLayer instance.
         """Add new item to the layer tree, create corresponding MapLayer instance.
         Launch property dialog if needed (raster, vector, etc.)
         Launch property dialog if needed (raster, vector, etc.)
@@ -658,7 +658,23 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                                     'propwin' : None}, 
                                     'propwin' : None}, 
                                    None))
                                    None))
 
 
-            maplayer = self.Map.AddLayer(type=ltype, command=self.GetPyData(layer)[0]['cmd'], name=name,
+            # find previous map layer instance 
+            prevItem = self.GetFirstChild(self.root)[0]
+            prevMapLayer = None 
+            pos = -1
+            while prevItem and prevItem.IsOk() and prevItem != layer: 
+                if self.GetPyData(prevItem)[0]['maplayer']: 
+                    prevMapLayer = self.GetPyData(prevItem)[0]['maplayer'] 
+                
+                prevItem = self.GetNextSibling(prevItem) 
+                
+                if prevMapLayer: 
+                    pos = self.Map.GetLayerIndex(prevMapLayer)
+                else: 
+                    pos = -1
+            
+            maplayer = self.Map.AddLayer(pos=pos,
+                                         type=ltype, command=self.GetPyData(layer)[0]['cmd'], name=name,
                                          l_active=checked, l_hidden=False,
                                          l_active=checked, l_hidden=False,
                                          l_opacity=opacity, l_render=render)
                                          l_opacity=opacity, l_render=render)
             self.GetPyData(layer)[0]['maplayer'] = maplayer
             self.GetPyData(layer)[0]['maplayer'] = maplayer