diff options
author | ritsuka <[email protected]> | 2015-05-25 15:27:57 +0000 |
---|---|---|
committer | ritsuka <[email protected]> | 2015-05-25 15:27:57 +0000 |
commit | a4a4b78e3106d8cda749dd192bc3cd27f68751ea (patch) | |
tree | cfbd050f1ff3be95e6c9a5458e7e7329137d2083 /macosx | |
parent | a165343362b814edab1e879dd1a0a5048e5856e2 (diff) |
MacGui: [merge] add an alert window to show the exceptions not handled. Hopefully it will make it easier for users to report this kind of issue.
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.10.x@7221 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx')
-rw-r--r-- | macosx/English.lproj/ExceptionAlert.xib | 126 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.xib | 6 | ||||
-rw-r--r-- | macosx/HBApplication.h | 11 | ||||
-rw-r--r-- | macosx/HBApplication.m | 64 | ||||
-rw-r--r-- | macosx/HBExceptionAlertController.h | 25 | ||||
-rw-r--r-- | macosx/HBExceptionAlertController.m | 33 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 24 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme | 8 | ||||
-rw-r--r-- | macosx/Info.plist.m4 | 2 |
9 files changed, 292 insertions, 7 deletions
diff --git a/macosx/English.lproj/ExceptionAlert.xib b/macosx/English.lproj/ExceptionAlert.xib new file mode 100644 index 000000000..cfa1dcee4 --- /dev/null +++ b/macosx/English.lproj/ExceptionAlert.xib @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E17e" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> + <dependencies> + <deployment identifier="macosx"/> + <development version="6100" identifier="xcode"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="MyExceptionAlertController"> + <connections> + <outlet property="window" destination="1" id="17"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <window title="Internal Error" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" animationBehavior="default" id="1"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> + <rect key="contentRect" x="196" y="127" width="636" height="383"/> + <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/> + <value key="minSize" type="size" width="636" height="383"/> + <view key="contentView" id="2"> + <rect key="frame" x="0.0" y="0.0" width="636" height="383"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <imageView id="3"> + <rect key="frame" x="20" y="302" width="70" height="61"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> + <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSApplicationIcon" id="4"/> + </imageView> + <textField verticalHuggingPriority="750" id="9"> + <rect key="frame" x="95" y="323" width="524" height="40"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> + <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="An internal error has occurred. You can choose to continue in an unstable state, or crash." id="10"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField verticalHuggingPriority="750" id="11"> + <rect key="frame" x="95" y="282" width="339" height="41"/> + <autoresizingMask key="autoresizingMask" flexibleMinY="YES"/> + <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Reason contents go here." id="12"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <connections> + <binding destination="-2" name="value" keyPath="exceptionMessage" id="27"> + <dictionary key="options"> + <bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/> + </dictionary> + </binding> + </connections> + </textField> + <button verticalHuggingPriority="750" id="13"> + <rect key="frame" x="418" y="12" width="96" height="32"/> + <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/> + <buttonCell key="cell" type="push" title="Crash" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="14"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + <string key="keyEquivalent" base64-UTF8="YES"> +Gw +</string> + </buttonCell> + <connections> + <action selector="btnCrashClicked:" target="-2" id="24"/> + </connections> + </button> + <button verticalHuggingPriority="750" id="15"> + <rect key="frame" x="526" y="12" width="97" height="32"/> + <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/> + <buttonCell key="cell" type="push" title="Continue" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="16"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + <string key="keyEquivalent" base64-UTF8="YES"> +DQ +</string> + </buttonCell> + <connections> + <action selector="btnContinueClicked:" target="-2" id="23"/> + </connections> + </button> + <scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="19"> + <rect key="frame" x="20" y="60" width="596" height="206"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <clipView key="contentView" id="RBQ-rK-0Rs"> + <rect key="frame" x="1" y="1" width="594" height="204"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <textView importsGraphics="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="22"> + <rect key="frame" x="0.0" y="0.0" width="594" height="204"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <size key="minSize" width="594" height="204"/> + <size key="maxSize" width="759" height="10000000"/> + <color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <size key="minSize" width="594" height="204"/> + <size key="maxSize" width="759" height="10000000"/> + <connections> + <binding destination="-2" name="attributedString" keyPath="exceptionBacktrace" id="28"/> + </connections> + </textView> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </clipView> + <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="21"> + <rect key="frame" x="-100" y="-100" width="87" height="18"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="20"> + <rect key="frame" x="579" y="1" width="16" height="204"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + </scrollView> + </subviews> + </view> + <connections> + <outlet property="initialFirstResponder" destination="13" id="29"/> + </connections> + <point key="canvasLocation" x="256" y="550.5"/> + </window> + </objects> + <resources> + <image name="NSApplicationIcon" width="128" height="128"/> + </resources> +</document> diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib index 4fe7a91f0..6842ce558 100644 --- a/macosx/English.lproj/MainMenu.xib +++ b/macosx/English.lproj/MainMenu.xib @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6250" systemVersion="14B23" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14E17e" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> <dependencies> <deployment version="1060" identifier="macosx"/> <development version="5100" identifier="xcode"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6250"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/> </dependencies> <objects> - <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> + <customObject id="-2" userLabel="File's Owner" customClass="HBApplication"> <connections> <outlet property="delegate" destination="240" id="247"/> </connections> diff --git a/macosx/HBApplication.h b/macosx/HBApplication.h new file mode 100644 index 000000000..2fbeab833 --- /dev/null +++ b/macosx/HBApplication.h @@ -0,0 +1,11 @@ +/* HBApplication.h $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import <Cocoa/Cocoa.h> + +@interface HBApplication : NSApplication + +@end diff --git a/macosx/HBApplication.m b/macosx/HBApplication.m new file mode 100644 index 000000000..b84d4b8e2 --- /dev/null +++ b/macosx/HBApplication.m @@ -0,0 +1,64 @@ +/* HBApplication.m $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import "HBApplication.h" +#import "HBExceptionAlertController.h" +#import "HBUtilities.h" + +@implementation HBApplication + +static void CrashMyApplication() +{ + *(char *)0x08 = 1; +} + +- (NSAttributedString *)_formattedExceptionBacktrace:(NSArray *)backtrace +{ + NSMutableAttributedString *result = [[NSMutableAttributedString alloc] init]; + for (NSString *s in backtrace) + { + s = [s stringByAppendingString:@"\n"]; + NSAttributedString *attrS = [[NSAttributedString alloc] initWithString:s]; + [result appendAttributedString:attrS]; + [attrS release]; + } + [result addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Monaco" size:10] range:NSMakeRange(0, result.length)]; + return [result autorelease]; +} + +- (void)reportException:(NSException *)exception +{ + // NSApplication simply logs the exception to the console. We want to let the user know + // when it happens in order to possibly prevent subsequent random crashes that are difficult to debug + @try + { + @autoreleasepool + { + // Create a string based on the exception + NSString *exceptionMessage = [NSString stringWithFormat:@"%@\nReason: %@\nUser Info: %@", exception.name, exception.reason, exception.userInfo]; + // Always log to console for history + + [HBUtilities writeToActivityLog:"Exception raised:\n%s", exceptionMessage.UTF8String]; + [HBUtilities writeToActivityLog:"Backtrace:\n%s", exception.callStackSymbols.description.UTF8String]; + + HBExceptionAlertController *alertController = [[HBExceptionAlertController alloc] init]; + alertController.exceptionMessage = exceptionMessage; + alertController.exceptionBacktrace = [self _formattedExceptionBacktrace:exception.callStackSymbols]; + + NSInteger result = [alertController runModal]; + if (result == HBExceptionAlertControllerResultCrash) + { + CrashMyApplication(); + } + } + } + @catch (NSException *e) + { + // Suppress any exceptions raised in the handling + } +} + +@end diff --git a/macosx/HBExceptionAlertController.h b/macosx/HBExceptionAlertController.h new file mode 100644 index 000000000..aaf49647c --- /dev/null +++ b/macosx/HBExceptionAlertController.h @@ -0,0 +1,25 @@ +/* HBExceptionAlertController.h $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import <Cocoa/Cocoa.h> + +typedef NS_ENUM(NSUInteger, HBExceptionAlertControllerResult) { + HBExceptionAlertControllerResultCrash, + HBExceptionAlertControllerResultContinue, +}; + +@interface HBExceptionAlertController : NSWindowController + +// Properties are used by bindings +@property (copy) NSString *exceptionMessage; +@property (copy) NSAttributedString *exceptionBacktrace; + +- (IBAction)btnCrashClicked:(id)sender; +- (IBAction)btnContinueClicked:(id)sender; + +- (NSInteger)runModal; + +@end diff --git a/macosx/HBExceptionAlertController.m b/macosx/HBExceptionAlertController.m new file mode 100644 index 000000000..5fc69dcbc --- /dev/null +++ b/macosx/HBExceptionAlertController.m @@ -0,0 +1,33 @@ +/* HBExceptionAlertController.m $ + + This file is part of the HandBrake source code. + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License. */ + +#import "HBExceptionAlertController.h" + +@implementation HBExceptionAlertController + +- (instancetype)init +{ + return [self initWithWindowNibName:@"ExceptionAlert"]; +} + +- (NSInteger)runModal +{ + return [NSApp runModalForWindow:self.window]; +} + +- (IBAction)btnCrashClicked:(id)sender +{ + [self.window orderOut:nil]; + [NSApp stopModalWithCode:HBExceptionAlertControllerResultCrash]; +} + +- (IBAction)btnContinueClicked:(id)sender +{ + [self.window orderOut:nil]; + [NSApp stopModalWithCode:HBExceptionAlertControllerResultContinue]; +} + +@end diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index 15c4c5b75..f3788f7d2 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -155,6 +155,9 @@ A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467D16BC2AD800C307BC /* pause-p.pdf */; }; A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467E16BC2AD800C307BC /* play-p.pdf */; }; A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467F16BC2AD800C307BC /* prev-p.pdf */; }; + A9F10FE01B131DA5004A9895 /* ExceptionAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9F10FDE1B131DA5004A9895 /* ExceptionAlert.xib */; }; + A9F10FE31B131DBA004A9895 /* HBApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F10FE21B131DBA004A9895 /* HBApplication.m */; }; + A9F10FE61B131DD8004A9895 /* HBExceptionAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F10FE51B131DD8004A9895 /* HBExceptionAlertController.m */; }; A9F2EB6F196F12C800066546 /* Audio.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9F2EB6D196F12C800066546 /* Audio.xib */; }; A9F472891976B7F30009EC65 /* HBSubtitlesDefaultsController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F472871976B7F30009EC65 /* HBSubtitlesDefaultsController.m */; }; A9F4728D1976BAA70009EC65 /* HBSubtitlesDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = A9F4728C1976BAA70009EC65 /* HBSubtitlesDefaults.m */; }; @@ -397,6 +400,11 @@ A9E1467D16BC2AD800C307BC /* pause-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "pause-p.pdf"; sourceTree = "<group>"; }; A9E1467E16BC2AD800C307BC /* play-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "play-p.pdf"; sourceTree = "<group>"; }; A9E1467F16BC2AD800C307BC /* prev-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "prev-p.pdf"; sourceTree = "<group>"; }; + A9F10FDF1B131DA5004A9895 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = ExceptionAlert.xib; sourceTree = "<group>"; }; + A9F10FE11B131DBA004A9895 /* HBApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBApplication.h; sourceTree = "<group>"; }; + A9F10FE21B131DBA004A9895 /* HBApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBApplication.m; sourceTree = "<group>"; }; + A9F10FE41B131DD8004A9895 /* HBExceptionAlertController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBExceptionAlertController.h; sourceTree = "<group>"; }; + A9F10FE51B131DD8004A9895 /* HBExceptionAlertController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBExceptionAlertController.m; sourceTree = "<group>"; }; A9F2EB6E196F12C800066546 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Audio.xib; sourceTree = "<group>"; }; A9F472861976B7F30009EC65 /* HBSubtitlesDefaultsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBSubtitlesDefaultsController.h; sourceTree = "<group>"; }; A9F472871976B7F30009EC65 /* HBSubtitlesDefaultsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBSubtitlesDefaultsController.m; sourceTree = "<group>"; }; @@ -627,6 +635,10 @@ 273F209E14ADBE670021BE6D /* HBOutputRedirect.m */, A98C29C21977B10600AF5DED /* HBLanguagesSelection.h */, A98C29C31977B10600AF5DED /* HBLanguagesSelection.m */, + A9F10FE11B131DBA004A9895 /* HBApplication.h */, + A9F10FE21B131DBA004A9895 /* HBApplication.m */, + A9F10FE41B131DD8004A9895 /* HBExceptionAlertController.h */, + A9F10FE51B131DD8004A9895 /* HBExceptionAlertController.m */, A9B34D711976844500871B7D /* UI Views */, 273F20BD14ADC09F0021BE6D /* main.mm */, ); @@ -728,6 +740,7 @@ children = ( 273F217C14ADDDA10021BE6D /* InfoPlist.strings */, 273F217E14ADDDA10021BE6D /* MainMenu.xib */, + A9F10FDE1B131DA5004A9895 /* ExceptionAlert.xib */, A9CF25EF1990D62C0023F727 /* Presets.xib */, A93E0ED51972958C00FD67FB /* Video.xib */, A9F2EB6D196F12C800066546 /* Audio.xib */, @@ -1058,6 +1071,7 @@ A9252C0C1A173D4800B8B7F8 /* [email protected] in Resources */, A9204DC71A16C5AB007CA74C /* [email protected] in Resources */, D2BCB11816F5152C0084604C /* [email protected] in Resources */, + A9F10FE01B131DA5004A9895 /* ExceptionAlert.xib in Resources */, A91C025F1A166BE300DEA6F3 /* [email protected] in Resources */, A91C025C1A166BE300DEA6F3 /* [email protected] in Resources */, A91C024D1A16516A00DEA6F3 /* [email protected] in Resources */, @@ -1095,6 +1109,8 @@ files = ( A9F7102619A475EC00F61301 /* HBDockTile.m in Sources */, A98C29C41977B10600AF5DED /* HBLanguagesSelection.m in Sources */, + A9F10FE61B131DD8004A9895 /* HBExceptionAlertController.m in Sources */, + A9F10FE31B131DBA004A9895 /* HBApplication.m in Sources */, A9BB0F2719A0ECE40079F1C1 /* HBHUDButtonCell.m in Sources */, A932E273198834130047D13E /* HBAudioDefaults.m in Sources */, A9523937199A6AAE00588AEF /* HBFilters.m in Sources */, @@ -1257,6 +1273,14 @@ name = Subtitles.xib; sourceTree = "<group>"; }; + A9F10FDE1B131DA5004A9895 /* ExceptionAlert.xib */ = { + isa = PBXVariantGroup; + children = ( + A9F10FDF1B131DA5004A9895 /* English */, + ); + name = ExceptionAlert.xib; + sourceTree = "<group>"; + }; A9F2EB6D196F12C800066546 /* Audio.xib */ = { isa = PBXVariantGroup; children = ( diff --git a/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme b/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme index 59c647285..6090921a8 100644 --- a/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme +++ b/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [RELEASE].xcscheme @@ -55,14 +55,15 @@ </TestAction> <LaunchAction selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle = "0" useCustomWorkingDirectory = "NO" buildConfiguration = "release" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> - <BuildableProductRunnable> + <BuildableProductRunnable + runnableDebuggingMode = "0"> <BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "273F203814ADBC200021BE6D" @@ -80,7 +81,8 @@ useCustomWorkingDirectory = "NO" buildConfiguration = "release" debugDocumentVersioning = "YES"> - <BuildableProductRunnable> + <BuildableProductRunnable + runnableDebuggingMode = "0"> <BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "273F203814ADBC200021BE6D" diff --git a/macosx/Info.plist.m4 b/macosx/Info.plist.m4 index 19e872136..917aa5225 100644 --- a/macosx/Info.plist.m4 +++ b/macosx/Info.plist.m4 @@ -55,7 +55,7 @@ All rights reserved.</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> - <string>NSApplication</string> + <string>HBApplication</string> <key>SUFeedURL</key> <string>__HB_url_appcast</string> </dict> |