Browse Source

fix: prevent `PopUpButtonHandler` premature dealloc (#40347)

fix: prevent PopUpButtonHandler dealloc

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <[email protected]>
trop[bot] 1 year ago
parent
commit
ef2745ff29
1 changed files with 5 additions and 0 deletions
  1. 5 0
      shell/browser/ui/file_dialog_mac.mm

+ 5 - 0
shell/browser/ui/file_dialog_mac.mm

@@ -66,14 +66,18 @@
 
 // Manages the PopUpButtonHandler.
 @interface ElectronAccessoryView : NSView
+@property(nonatomic, strong) PopUpButtonHandler* popUpButtonHandler;
 @end
 
 @implementation ElectronAccessoryView
 
+@synthesize popUpButtonHandler;
+
 - (void)dealloc {
   auto* popupButton =
       static_cast<NSPopUpButton*>([[self subviews] objectAtIndex:1]);
   popupButton.target = nil;
+  popUpButtonHandler = nil;
 }
 
 @end
@@ -149,6 +153,7 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
 
   [accessoryView addSubview:label];
   [accessoryView addSubview:popupButton];
+  [accessoryView setPopUpButtonHandler:popUpButtonHandler];
 
   [dialog setAccessoryView:accessoryView];
 }