Let ‘edit’ be default action when settings item is selected (⌃⌘T)

Also use performClick: on the window’s default button cell when using return to select an item.
This commit is contained in:
Allan Odgaard
2014-09-02 16:51:02 +02:00
parent 536e79a404
commit 49b82c9ecb
3 changed files with 20 additions and 3 deletions

View File

@@ -332,7 +332,7 @@ static std::vector<bundles::item_ptr> relevant_items_in_scope (scope::context_t
{
NSUInteger res = OakPerformTableViewActionFromKeyEvent(self.tableView, anEvent);
if(res == OakMoveAcceptReturn)
[self accept:self];
[self performDefaultButtonClick:self];
else if(res == OakMoveCancelReturn)
[self cancel:self];
}
@@ -667,7 +667,10 @@ static std::vector<bundles::item_ptr> relevant_items_in_scope (scope::context_t
// Our super class will ask for updated status text each time selection changes
// so we use this to update enabled state for action buttons
// FIXME Since canEdit depends on editAction we must update enabled when editAction changes.
self.editButton.enabled = self.canEdit;
self.selectButton.enabled = self.canAccept;
self.editButton.enabled = self.canEdit;
self.window.defaultButtonCell = !self.canAccept && self.canEdit ? self.editButton.cell : self.selectButton.cell;
self.tableView.doubleAction = !self.canAccept && self.canEdit ? @selector(editItem:) : @selector(accept:);
}
- (BOOL)validateMenuItem:(NSMenuItem*)aMenuItem
@@ -682,6 +685,12 @@ static std::vector<bundles::item_ptr> relevant_items_in_scope (scope::context_t
return YES;
}
- (BOOL)canAccept
{
BundleItemChooserItem* item = self.tableView.selectedRow != -1 ? self.items[self.tableView.selectedRow] : nil;
return item.menuItem || item.item && item.item->kind() != bundles::kItemTypeSettings;
}
- (BOOL)canEdit
{
BundleItemChooserItem* item = self.tableView.selectedRow != -1 ? self.items[self.tableView.selectedRow] : nil;

View File

@@ -23,6 +23,7 @@ PUBLIC @interface OakChooser : NSResponder
@property (nonatomic) NSTextField* statusTextField;
@property (nonatomic) NSTextField* itemCountTextField;
- (void)performDefaultButtonClick:(id)sender;
- (void)accept:(id)sender;
- (void)cancel:(id)sender;
@end

View File

@@ -182,7 +182,7 @@ static void* kFirstResponderBinding = &kFirstResponderBinding;
NSUInteger res = OakPerformTableViewActionFromSelector(self.tableView, aCommand, aTextView);
if(res == OakMoveAcceptReturn)
[self accept:self];
[self performDefaultButtonClick:self];
else if(res == OakMoveCancelReturn)
[self cancel:self];
return res != OakMoveNoActionReturn;
@@ -233,6 +233,13 @@ static void* kFirstResponderBinding = &kFirstResponderBinding;
// = Action Method =
// =================
- (void)performDefaultButtonClick:(id)sender
{
if(self.window.defaultButtonCell)
[self.window.defaultButtonCell performClick:sender];
else [self accept:sender];
}
- (void)accept:(id)sender
{
[_window orderOut:self];