@@ -141,6 +141,7 @@ def setColormap(self, index: int):
141141 self ._colormap_name_edit .setText (cmap_copy .name )
142142 is_new_colormap = cmap_copy .name not in ALL_COLORMAPS
143143 self ._colormap_name_edit .setEnabled (is_new_colormap )
144+ self ._changes_saved = True
144145 self ._save_btn .setEnabled (is_new_colormap )
145146
146147 def getColormap (self ):
@@ -224,14 +225,14 @@ def __init__(
224225 self .setWindowTitle (_ ("Colormap manager" ))
225226 self ._layout = QW .QVBoxLayout ()
226227 self .cmap_manager = ColorMapManager (self , active_colormap )
227- self .btn_close = QW .QPushButton (_ ("Close" ), self )
228+ self .btn_close = QW .QPushButton (_ ("Close" ))
228229 self ._layout .addWidget (self .cmap_manager )
229230 # bottom_layout = QW.QHBoxLayout()
230231 self ._layout .addWidget (self .btn_close , alignment = QC .Qt .AlignmentFlag .AlignRight )
231232 self .setLayout (self ._layout )
232233 self .btn_close .clicked .connect (self .close )
233234
234- def close (self ):
235+ def check_save_before_close (self ) -> bool :
235236 """Adds logic on top of the normal QDialog.close method to handle colormap save."""
236237 if not self .cmap_manager .current_changes_saved :
237238 save = self .cmap_manager .show_validation_modal (
@@ -244,8 +245,15 @@ def close(self):
244245 )
245246 if save :
246247 self .cmap_manager .saveColormap ()
247- if self .cmap_manager ._changes_saved :
248- super ().close ()
248+
249+ return self .cmap_manager .current_changes_saved
250+
251+ def closeEvent (self , event : QC .QEvent ): # noqa: N802
252+ if self .check_save_before_close ():
253+ # self.close()
254+ event .accept ()
255+ else :
256+ event .ignore ()
249257
250258 def show (self ) -> None :
251259 return super ().show ()
0 commit comments