mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 07:00:46 +00:00
Windows menu manipulation fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@16430 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
369134a16e
commit
2e4c41319e
1 changed files with 67 additions and 83 deletions
|
@ -2017,6 +2017,48 @@ image.
|
|||
[self changeWindowsItem: aWindow title: aString filename: isFilename];
|
||||
}
|
||||
|
||||
- (void) removeWindowsItem: (NSWindow*)aWindow
|
||||
{
|
||||
if (_windows_menu)
|
||||
{
|
||||
NSArray *itemArray;
|
||||
unsigned count;
|
||||
|
||||
itemArray = [_windows_menu itemArray];
|
||||
count = [itemArray count];
|
||||
while (count-- > 0)
|
||||
{
|
||||
id item = [itemArray objectAtIndex: count];
|
||||
|
||||
if ([item target] == aWindow)
|
||||
{
|
||||
[_windows_menu removeItemAtIndex: count];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setImageForWindowsItem: (NSMenuItem *)item
|
||||
{
|
||||
NSImage *oldImage = [item image];
|
||||
NSImage *newImage;
|
||||
|
||||
if ([[item target] isDocumentEdited])
|
||||
{
|
||||
newImage = [NSImage imageNamed: @"common_WMCloseBroken"];
|
||||
}
|
||||
else
|
||||
{
|
||||
newImage = [NSImage imageNamed: @"common_WMClose"];
|
||||
}
|
||||
|
||||
if (newImage != oldImage)
|
||||
{
|
||||
[item setImage: newImage];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) changeWindowsItem: (NSWindow*)aWindow
|
||||
title: (NSString*)aString
|
||||
filename: (BOOL)isFilename
|
||||
|
@ -2121,28 +2163,45 @@ image.
|
|||
keyEquivalent: @""
|
||||
atIndex: i];
|
||||
[item setTarget: aWindow];
|
||||
// TODO: When changing for a window with a file, we should also set the image.
|
||||
|
||||
// When changing for a window with a file, we should also set the image.
|
||||
[self setImageForWindowsItem: item];
|
||||
}
|
||||
|
||||
- (void) removeWindowsItem: (NSWindow*)aWindow
|
||||
- (void) updateWindowsItem: (NSWindow*)aWindow
|
||||
{
|
||||
if (_windows_menu)
|
||||
NSMenu *menu;
|
||||
|
||||
menu = [self windowsMenu];
|
||||
if (menu != nil)
|
||||
{
|
||||
NSArray *itemArray;
|
||||
unsigned count;
|
||||
unsigned i;
|
||||
BOOL found = NO;
|
||||
|
||||
itemArray = [_windows_menu itemArray];
|
||||
itemArray = [menu itemArray];
|
||||
count = [itemArray count];
|
||||
while (count-- > 0)
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
id item = [itemArray objectAtIndex: count];
|
||||
id item = [itemArray objectAtIndex: i];
|
||||
|
||||
if ([item target] == aWindow)
|
||||
{
|
||||
[_windows_menu removeItemAtIndex: count];
|
||||
return;
|
||||
[self setImageForWindowsItem: item];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (found == NO)
|
||||
{
|
||||
NSString *t = [aWindow title];
|
||||
NSString *f = [aWindow representedFilename];
|
||||
|
||||
[self changeWindowsItem: aWindow
|
||||
title: t
|
||||
filename: [t isEqual: f]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2199,81 +2258,6 @@ image.
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
- (void) updateWindowsItem: (NSWindow*)aWindow
|
||||
{
|
||||
NSMenu *menu;
|
||||
NSMenuView *view;
|
||||
|
||||
menu = [self windowsMenu];
|
||||
if (menu != nil)
|
||||
{
|
||||
NSArray *itemArray;
|
||||
unsigned count;
|
||||
unsigned i;
|
||||
BOOL found = NO;
|
||||
|
||||
view = [menu menuRepresentation];
|
||||
itemArray = [menu itemArray];
|
||||
count = [itemArray count];
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
id item = [itemArray objectAtIndex: i];
|
||||
|
||||
if ([item target] == aWindow)
|
||||
{
|
||||
NSMenuItemCell *cell;
|
||||
NSCellImagePosition oldPos;
|
||||
NSImage *oldImage;
|
||||
NSImage *newImage;
|
||||
BOOL changed;
|
||||
|
||||
found = YES;
|
||||
cell = [view menuItemCellForItemAtIndex: i];
|
||||
oldPos = [cell imagePosition];
|
||||
oldImage = [cell image];
|
||||
newImage = oldImage;
|
||||
changed = NO;
|
||||
|
||||
if (oldPos != NSImageLeft)
|
||||
{
|
||||
[cell setImagePosition: NSImageLeft];
|
||||
changed = YES;
|
||||
}
|
||||
if ([aWindow isDocumentEdited])
|
||||
{
|
||||
newImage = [NSImage imageNamed: @"common_WMCloseBroken"];
|
||||
}
|
||||
else
|
||||
{
|
||||
newImage = [NSImage imageNamed: @"common_WMClose"];
|
||||
}
|
||||
if (newImage != oldImage)
|
||||
{
|
||||
[item setImage: newImage];
|
||||
[cell setImage: newImage];
|
||||
changed = YES;
|
||||
}
|
||||
if (changed)
|
||||
{
|
||||
[menu sizeToFit];
|
||||
[view setNeedsDisplayForItemAtIndex: i];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found == NO)
|
||||
{
|
||||
NSString *t = [aWindow title];
|
||||
NSString *f = [aWindow representedFilename];
|
||||
|
||||
[self changeWindowsItem: aWindow
|
||||
title: t
|
||||
filename: [t isEqual: f]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSMenu*) windowsMenu
|
||||
{
|
||||
return _windows_menu;
|
||||
|
|
Loading…
Reference in a new issue