From ca9a0e5faa280ab26febf7cb6fbb9a1096f8a8d2 Mon Sep 17 00:00:00 2001
From: "Morgan 'ARR\\!' Allen" <morganrallen@gmail.com>
Date: Sat, 29 Mar 2025 00:12:03 -0700
Subject: [PATCH] preserve icon through doc restore

---
 freecad/kiconnect/bases/BaseViewProvider.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/freecad/kiconnect/bases/BaseViewProvider.py b/freecad/kiconnect/bases/BaseViewProvider.py
index c851818..337e997 100644
--- a/freecad/kiconnect/bases/BaseViewProvider.py
+++ b/freecad/kiconnect/bases/BaseViewProvider.py
@@ -9,6 +9,8 @@ class BaseViewProvider:
         self.parent = parent
         self.viewprovider = viewprovider
 
+        self.icon = os.path.join(settings.ICONPATH, self.parent.__class__.ICON)
+
         viewprovider.Proxy = self
         
         self.Type = ''
@@ -32,7 +34,7 @@ class BaseViewProvider:
         Gui.Selection.clearSelection()
 
     def getIcon(self):
-        return os.path.join(settings.ICONPATH, self.parent.__class__.ICON)
+        return self.icon
 
     def getDisplayModes(self,obj):
         '''Return a list of display modes.'''
@@ -43,4 +45,10 @@ class BaseViewProvider:
         return 'Standard'
 
     def __getstate__(self):
-        return None
+        return {
+            'icon': self.icon
+        }
+
+    def __setstate__(self, props):
+        for prop in props:
+            setattr(self, prop, props[prop])