Deactivated the current font button on window close and implemented cleanup, both on OS X.

This commit is contained in:
Pietro Gagliardi 2016-05-02 10:32:39 -04:00
parent c5f6a09200
commit b6a396dd4a
1 changed files with 22 additions and 1 deletions

View File

@ -2,7 +2,6 @@
#import "uipriv_darwin.h"
// TODO drag and drop fonts? what other interactions does NSColorWell allow that we can do for fonts?
// TODO when closing the window, deactivate the current button
@interface fontButton : NSButton {
uiFontButton *libui_b;
@ -13,6 +12,7 @@
- (IBAction)fontButtonClicked:(id)sender;
- (void)activateFontButton;
- (void)deactivateFontButton:(BOOL)activatingAnother;
- (void)deactivateOnClose:(NSNotification *)note;
- (uiDrawTextFont *)libuiFont;
@end
@ -51,6 +51,15 @@ struct uiFontButton {
return self;
}
- (void)dealloc
{
// clean up notifications
if (activeFontButton == self)
[self deactivateFontButton:NO];
[self->libui_font release];
[super dealloc];
}
- (void)updateFontButtonLabel
{
NSString *title;
@ -80,6 +89,10 @@ struct uiFontButton {
[sfm setSelectedFont:self->libui_font isMultiple:NO];
[sfm orderFrontFontPanel:self];
activeFontButton = self;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deactivateOnClose:)
name:NSWindowWillCloseNotification
object:[NSFontPanel sharedFontPanel]];
[self setState:NSOnState];
}
@ -92,9 +105,17 @@ struct uiFontButton {
if (!activatingAnother)
[[NSFontPanel sharedFontPanel] orderOut:self];
activeFontButton = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSWindowWillCloseNotification
object:[NSFontPanel sharedFontPanel]];
[self setState:NSOffState];
}
- (void)deactivateOnClose:(NSNotification *)note
{
[self deactivateFontButton:NO];
}
- (void)changeFont:(id)sender
{
NSFontManager *fm;