Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: chrome/browser/cocoa/bookmark_manager_controller.mm

Issue 555112: Mac bookmark mgr: Restore previously selected group when search field is cleared. (Closed)
Patch Set: Fixed bug when entering multiple-char search strings Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/cocoa/bookmark_manager_controller.h" 5 #import "chrome/browser/cocoa/bookmark_manager_controller.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac_util.h" 10 #include "base/mac_util.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 - (void)remapItem:(BookmarkItem*)item forNode:(const BookmarkNode*)node { 284 - (void)remapItem:(BookmarkItem*)item forNode:(const BookmarkNode*)node {
285 NSMapInsert(nodeMap_, node, item); 285 NSMapInsert(nodeMap_, node, item);
286 } 286 }
287 287
288 // Removes a BookmarkNode from the node<->item mapping table. 288 // Removes a BookmarkNode from the node<->item mapping table.
289 - (void)forgetNode:(const BookmarkNode*)node { 289 - (void)forgetNode:(const BookmarkNode*)node {
290 NSMapRemove(nodeMap_, node); 290 NSMapRemove(nodeMap_, node);
291 for (int i = node->GetChildCount() - 1 ; i >= 0 ; i--) { 291 for (int i = node->GetChildCount() - 1 ; i >= 0 ; i--) {
292 [self forgetNode:node->GetChild(i)]; 292 [self forgetNode:node->GetChild(i)];
293 } 293 }
294
295 if (node == [preSearchGroup_ node])
296 preSearchGroup_.reset();
294 } 297 }
295 298
296 // Called when the bookmark model changes; forwards to the sub-controllers. 299 // Called when the bookmark model changes; forwards to the sub-controllers.
297 - (void)itemChanged:(BookmarkItem*)item 300 - (void)itemChanged:(BookmarkItem*)item
298 childrenChanged:(BOOL)childrenChanged { 301 childrenChanged:(BOOL)childrenChanged {
299 if (item) { 302 if (item) {
300 [item nodeChanged]; 303 [item nodeChanged];
301 [groupsController_ itemChanged:item childrenChanged:childrenChanged]; 304 [groupsController_ itemChanged:item childrenChanged:childrenChanged];
302 [listController_ itemChanged:item childrenChanged:childrenChanged]; 305 [listController_ itemChanged:item childrenChanged:childrenChanged];
303 } 306 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 - (void)showGroup:(BookmarkItem*)group { 410 - (void)showGroup:(BookmarkItem*)group {
408 [groupsController_ revealItem:group]; 411 [groupsController_ revealItem:group];
409 } 412 }
410 413
411 // Makes an item visible and selects it. 414 // Makes an item visible and selects it.
412 - (BOOL)revealItem:(BookmarkItem*)item { 415 - (BOOL)revealItem:(BookmarkItem*)item {
413 return [groupsController_ revealItem:[item parent]] && 416 return [groupsController_ revealItem:[item parent]] &&
414 [listController_ revealItem:item]; 417 [listController_ revealItem:item];
415 } 418 }
416 419
417 // Called when the user types into the search field. 420 // Shows/hides the "Search Results" item.
421 - (void)setSearchGroupVisible:(BOOL)visible {
422 NSMutableArray* rootItems = [NSMutableArray arrayWithArray:[root_ children]];
423 if (visible != [rootItems containsObject:searchGroup_]) {
424 if (visible) {
425 [rootItems addObject:searchGroup_];
426 } else {
427 [rootItems removeObject:searchGroup_];
428 }
429 [root_ setChildren:rootItems];
430 [self itemChanged:root_ childrenChanged:YES];
431 }
432 }
433
434 // Called when the user modifies the search field.
418 - (IBAction)searchFieldChanged:(id)sender { 435 - (IBAction)searchFieldChanged:(id)sender {
419 [self updateSearch]; 436 [self updateSearch];
420 if ([[searchField_ stringValue] length]) 437 if ([[searchField_ stringValue] length]) {
421 [self showGroup:searchGroup_]; 438 // There is search text. Show searchGroup_ if it's not visible yet:
439 [self setSearchGroupVisible:YES];
440
441 BookmarkItem *sel = [groupsController_ selectedItem];
442 if (sel != searchGroup_.get()) {
443 // Remember which group used to be selected.
444 preSearchGroup_.reset([sel retain]);
445 // And select searchGroup_.
446 [self showGroup:searchGroup_];
447 }
448
449 } else {
450 // No search text. Restore the pre-search group selction:
451 if (preSearchGroup_.get()) {
452 if ([groupsController_ selectedItem] == searchGroup_.get()) {
453 [self showGroup:preSearchGroup_];
454 }
455 preSearchGroup_.reset();
456 }
457 // Hide the Search Results group:
458 [self setSearchGroupVisible:NO];
459 }
422 } 460 }
423 461
424 - (IBAction)segmentedControlClicked:(id)sender { 462 - (IBAction)segmentedControlClicked:(id)sender {
425 BookmarkTreeController* controller = [self focusedController]; 463 BookmarkTreeController* controller = [self focusedController];
426 DCHECK(controller); 464 DCHECK(controller);
427 NSSegmentedCell* cell = [sender cell]; 465 NSSegmentedCell* cell = [sender cell];
428 switch ([cell tagForSegment:[cell selectedSegment]]) { 466 switch ([cell tagForSegment:[cell selectedSegment]]) {
429 case 0: 467 case 0:
430 [controller newFolder:sender]; 468 [controller newFolder:sender];
431 break; 469 break;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 action:kMenuActions[i].action 568 action:kMenuActions[i].action
531 keyEquivalent:@""]; 569 keyEquivalent:@""];
532 [[[menu itemArray] lastObject] setTarget:self]; 570 [[[menu itemArray] lastObject] setTarget:self];
533 } else { 571 } else {
534 [menu addItem:[NSMenuItem separatorItem]]; 572 [menu addItem:[NSMenuItem separatorItem]];
535 } 573 }
536 } 574 }
537 } 575 }
538 576
539 @end 577 @end
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/bookmark_manager_controller.h ('k') | chrome/browser/cocoa/bookmark_manager_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698