mirror of
https://github.com/textmate/textmate.git
synced 2026-04-28 03:00:34 -04:00
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:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user