Przeglądaj źródła

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 lat temu
rodzic
commit
5fb47c553d

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

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

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

@@ -496,7 +496,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         """Rename layer"""
         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):
         """Add new item to the layer tree, create corresponding MapLayer instance.
         Launch property dialog if needed (raster, vector, etc.)
@@ -658,7 +658,23 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                                     'propwin' : 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_opacity=opacity, l_render=render)
             self.GetPyData(layer)[0]['maplayer'] = maplayer