* Source/NSApplication.m (-setApplicationIconImage:): Copy the new

application image before assigning the name "NSApplicationIcon"
to it. This solves bug #25793.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28064 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2009-03-11 09:46:59 +00:00
parent 3f9c660f14
commit 10d22d2086
2 changed files with 22 additions and 12 deletions

View file

@ -1,3 +1,9 @@
2009-03-11 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSApplication.m (-setApplicationIconImage:): Copy the new
application image before assigning the name "NSApplicationIcon" to
it. This solves bug #25793.
2009-03-05 Fred Kiefer <FredKiefer@gmx.de> 2009-03-05 Fred Kiefer <FredKiefer@gmx.de>
* Resources/GNUmakefile: Add French localisation. * Resources/GNUmakefile: Add French localisation.

View file

@ -2178,16 +2178,20 @@ image.</p><p>See Also: -applicationIconImage</p>
*/ */
- (void) setApplicationIconImage: (NSImage*)anImage - (void) setApplicationIconImage: (NSImage*)anImage
{ {
NSEnumerator *iterator = [[self windows] objectEnumerator]; NSEnumerator *iterator;
NSWindow *current; NSWindow *current;
NSImage *old_app_icon = _app_icon; NSImage *old_app_icon = _app_icon;
NSSize miniWindowSize = [GSCurrentServer() iconSize]; NSSize miniWindowSize = [GSCurrentServer() iconSize];
NSSize imageSize = [anImage size]; NSSize imageSize = [anImage size];
RETAIN(old_app_icon); RETAIN(old_app_icon);
[_app_icon setName: nil]; [_app_icon setName: nil];
[anImage setName: @"NSApplicationIcon"];
[anImage setScalesWhenResized: YES]; // Use a copy as we change the name and size
ASSIGNCOPY(_app_icon, anImage);
[_app_icon setName: @"NSApplicationIcon"];
[_app_icon setScalesWhenResized: YES];
if (miniWindowSize.width <= 0 || miniWindowSize.height <= 0) if (miniWindowSize.width <= 0 || miniWindowSize.height <= 0)
{ {
@ -2198,23 +2202,23 @@ image.</p><p>See Also: -applicationIconImage</p>
if (imageSize.width > miniWindowSize.width if (imageSize.width > miniWindowSize.width
|| imageSize.height > miniWindowSize.height) || imageSize.height > miniWindowSize.height)
{ {
[anImage setSize: miniWindowSize]; [_app_icon setSize: miniWindowSize];
} }
ASSIGN(_app_icon, anImage); // Let horizontal menu change icon
[_main_menu _organizeMenu];
[_main_menu _organizeMenu]; // Let horizontal menu change icon
if (_app_icon_window != nil) if (_app_icon_window != nil)
{ {
[(NSAppIconView *)[_app_icon_window contentView] setImage: anImage]; [(NSAppIconView *)[_app_icon_window contentView] setImage: _app_icon];
} }
// Swap the old image for the new one wherever it's used // Swap the old image for the new one wherever it's used
iterator = [[self windows] objectEnumerator];
while ((current = [iterator nextObject]) != nil) while ((current = [iterator nextObject]) != nil)
{ {
if ([current miniwindowImage] == old_app_icon) if ([current miniwindowImage] == old_app_icon)
[current setMiniwindowImage: anImage]; [current setMiniwindowImage: _app_icon];
} }
DESTROY(old_app_icon); DESTROY(old_app_icon);