WebHistoryController: Refactor menu search to be recursive

This way it doesn't matter where in an element you click, as
long as one of its parents has the required attributes, you
get the menu
This commit is contained in:
Pieter de Bie
2009-06-16 18:49:24 +01:00
parent 47e182a910
commit c9609f22b6
+13 -13
View File
@@ -76,21 +76,21 @@ contextMenuItemsForElement:(NSDictionary *)element
{
DOMNode *node = [element valueForKey:@"WebElementDOMNode"];
// If clicked on the text, select the containing div
if ([[node className] isEqualToString:@"DOMText"])
while (node) {
// Every ref has a class name of 'refs' and some other class. We check on that to see if we pressed on a ref.
if ([[node className] hasPrefix:@"refs "]) {
NSString *selectedRefString = [[[node childNodes] item:0] textContent];
for (PBGitRef *ref in historyController.webCommit.refs)
{
if ([[ref shortName] isEqualToString:selectedRefString])
return [contextMenuDelegate menuItemsForRef:ref commit:historyController.webCommit];
}
NSLog(@"Could not find selected ref!");
return defaultMenuItems;
}
node = [node parentNode];
// Every ref has a class name of 'refs' and some other class. We check on that to see if we pressed on a ref.
if (![[node className] hasPrefix:@"refs "])
return defaultMenuItems;
NSString *selectedRefString = [[[node childNodes] item:0] textContent];
for (PBGitRef *ref in historyController.webCommit.refs)
{
if ([[ref shortName] isEqualToString:selectedRefString])
return [contextMenuDelegate menuItemsForRef:ref commit:historyController.webCommit];
}
NSLog(@"Could not find selected ref!");
return defaultMenuItems;
}