Make sure name of current theme is correct.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27453 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2008-12-29 18:01:58 +00:00
parent a3849e0898
commit d8c2a89202
2 changed files with 51 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2008-12-29 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSInfoPanel.m:
Update name of current theme when it changes.
2008-12-29 Richard Frith-Macdonald <rfm@gnu.org> 2008-12-29 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSBrowser.m: * Source/NSBrowser.m:

View file

@ -30,6 +30,7 @@
#include <Foundation/NSDictionary.h> #include <Foundation/NSDictionary.h>
#include <Foundation/NSEnumerator.h> #include <Foundation/NSEnumerator.h>
#include <Foundation/NSString.h> #include <Foundation/NSString.h>
#include <Foundation/NSNotification.h>
#include <Foundation/NSProcessInfo.h> #include <Foundation/NSProcessInfo.h>
#include "AppKit/NSApplication.h" #include "AppKit/NSApplication.h"
@ -164,6 +165,41 @@ new_label (NSString *value)
} }
} }
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
[super dealloc];
}
/* When the current theme changes, we need to update the info panel to match.
*/
- (void) _themeDidActivate: (NSNotification*)n
{
NSView *c = [self contentView];
NSEnumerator *e = [[c subviews] objectEnumerator];
NSView *v;
NSButton *b;
while ((v = [e nextObject]) != nil)
{
if ([v isKindOfClass: [NSButton class]]
&& [(b = (NSButton*)v) target] == [GSTheme class])
{
NSString *s;
NSRect f;
s = [NSString stringWithFormat: @"%@: %@",
_(@"Current theme"), [[GSTheme theme] name]];
[b setStringValue: s];
[b sizeToFit];
f = [b frame];
f.origin.x = ([c frame].size.width - f.size.width) / 2;
[b setFrame: f];
[c setNeedsDisplay: YES];
}
}
}
- (id) initWithDictionary: (NSDictionary *)dictionary; - (id) initWithDictionary: (NSDictionary *)dictionary;
{ {
/* Info to show */ /* Info to show */
@ -527,7 +563,7 @@ new_label (NSString *value)
if (tmp_A > height) if (tmp_A > height)
height = tmp_A; height = tmp_A;
/* Add border to both wihdt and height */ /* Add border to both width and height */
width += 32; width += 32;
height += 36; height += 36;
@ -647,19 +683,26 @@ new_label (NSString *value)
f = [copyrightDescriptionLabel frame]; f = [copyrightDescriptionLabel frame];
f.origin.x = (width - f.size.width) / 2; f.origin.x = (width - f.size.width) / 2;
f.origin.y = tmp_b - 2 - f.size.height; f.origin.y = tmp_b - 2 - f.size.height;
tmp_b = f.origin.y;
[cv addSubview: copyrightDescriptionLabel]; [cv addSubview: copyrightDescriptionLabel];
[copyrightDescriptionLabel setFrame: f]; [copyrightDescriptionLabel setFrame: f];
} }
f = [themeLabel frame]; f = [themeLabel frame];
f.origin.x = (width - f.size.width) / 2; f.origin.x = (width - f.size.width) / 2;
f.origin.y = tmp_b - 25 - f.size.height; f.origin.y = tmp_b - 5 - f.size.height;
tmp_b = f.origin.y; tmp_b = f.origin.y;
[cv addSubview: themeLabel]; [cv addSubview: themeLabel];
[themeLabel setFrame: f]; [themeLabel setFrame: f];
[themeLabel setTarget: [GSTheme class]]; [themeLabel setTarget: [GSTheme class]];
[themeLabel setAction: @selector(orderFrontSharedThemePanel:)]; [themeLabel setAction: @selector(orderFrontSharedThemePanel:)];
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(_themeDidActivate:)
name: GSThemeDidActivateNotification
object: nil];
[self center]; [self center];
return self; return self;
} }
@ -700,8 +743,7 @@ new_label (NSString *value)
} }
// FIXME: Hard coded // FIXME: Hard coded
if (character == 'c' && if (character == 'c' && ([theEvent modifierFlags] & NSCommandKeyMask))
[theEvent modifierFlags] & NSCommandKeyMask)
{ {
[self copy: nil]; [self copy: nil];
return; return;