Browse Source

wxGUI/Single-Window: New change page event for AuiNotebook (#1780)

Linda Kladivova 3 years ago
parent
commit
59b915e672
2 changed files with 12 additions and 4 deletions
  1. 9 4
      gui/wxpython/main_window/frame.py
  2. 3 0
      gui/wxpython/mapdisp/frame.py

+ 9 - 4
gui/wxpython/main_window/frame.py

@@ -309,6 +309,11 @@ class GMFrame(wx.Frame):
             agwStyle=notebook_style,
         )
         self.mapnotebook.SetArtProvider(aui.AuiDefaultTabArt())
+        # bindings
+        self.mapnotebook.Bind(
+            aui.EVT_AUINOTEBOOK_PAGE_CHANGED,
+            lambda evt: self.mapnotebook.GetCurrentPage().onFocus.emit(),
+        )
 
     def _createDataCatalog(self, parent):
         """Initialize Data Catalog widget"""
@@ -483,9 +488,8 @@ class GMFrame(wx.Frame):
         mapdisplay.canCloseDisplayCallback = CanCloseDisplay
 
         # bind various events
-        mapdisplay.Bind(
-            wx.EVT_ACTIVATE,
-            lambda event, page=self.currentPage: self._onMapDisplayFocus(page),
+        mapdisplay.onFocus.connect(
+            lambda page=self.currentPage: self._onMapDisplayFocus(page),
         )
 
         mapdisplay.starting3dMode.connect(
@@ -881,7 +885,8 @@ class GMFrame(wx.Frame):
             )
 
     def OnCBPageChanged(self, event):
-        """Page in notebook (display) changed"""
+        """Page in notebook (display) changed.
+        Also change active map notebook tab."""
         self.currentPage = self.notebookLayers.GetCurrentPage()
         self.currentPageNum = self.notebookLayers.GetSelection()
         try:

+ 3 - 0
gui/wxpython/mapdisp/frame.py

@@ -114,6 +114,9 @@ class MapFrame(SingleMapFrame):
         # checks for saving workspace
         self.canCloseDisplayCallback = None
 
+        # Emitted when switching map notebook tabs (Single-Window)
+        self.onFocus = Signal("MapPanel.onFocus")
+
         # Emitted when starting (switching to) 3D mode.
         # Parameter firstTime specifies if 3D was already actived.
         self.starting3dMode = Signal("MapFrame.starting3dMode")