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

Unified Diff: chrome/browser/cocoa/browser_window_controller.mm

Issue 171016: Bookmark STAR bubble (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/browser_window_controller.mm
===================================================================
--- chrome/browser/cocoa/browser_window_controller.mm (revision 23676)
+++ chrome/browser/cocoa/browser_window_controller.mm (working copy)
@@ -9,6 +9,7 @@
#import "base/scoped_nsobject.h"
#include "base/sys_string_conversions.h"
#include "chrome/app/chrome_dll_resource.h" // IDC_*
+#include "chrome/browser/bookmarks/bookmark_editor.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/browser_process.h"
@@ -20,6 +21,7 @@
#include "chrome/browser/tab_contents/tab_contents_view.h"
#include "chrome/browser/tabs/tab_strip_model.h"
#import "chrome/browser/cocoa/bookmark_bar_controller.h"
+#import "chrome/browser/cocoa/bookmark_editor_controller.h"
#import "chrome/browser/cocoa/browser_window_cocoa.h"
#import "chrome/browser/cocoa/browser_window_controller.h"
#import "chrome/browser/cocoa/download_shelf_controller.h"
@@ -936,6 +938,53 @@
return theme_ ? theme_ : [GTMTheme defaultTheme];
}
+- (NSPoint)topLeftForBubble {
+ NSRect rect = [toolbarController_ starButtonInWindowCoordinates];
+ NSPoint p = NSMakePoint(NSMinX(rect), NSMinY(rect)); // bottom left
+ return p;
+}
+
+// Show the bookmark bubble (e.g. user just clicked on the STAR).
+- (void)showBookmarkBubbleForURL:(const GURL&)url
+ alreadyBookmarked:(BOOL)alreadyBookmarked {
+ BookmarkModel* model = browser_->profile()->GetBookmarkModel();
+ const BookmarkNode* node = model->GetMostRecentlyAddedNodeForURL(url);
+
+ // Bring up the bubble. But clicking on STAR while the bubble is
+ // open should make it go away.
+ if (bookmarkBubbleController_.get()) {
+ [self doneWithBubbleController:bookmarkBubbleController_.get()];
+ } else {
+ bookmarkBubbleController_.reset([[BookmarkBubbleController alloc]
+ initWithDelegate:self
+ parentWindow:[self window]
+ topLeftForBubble:[self topLeftForBubble]
+ model:model
+ node:node
+ alreadyBookmarked:alreadyBookmarked]);
+ [bookmarkBubbleController_ showWindow];
+ }
+}
+
+// Implement BookmarkBubbleControllerDelegate
+- (void)editBookmarkNode:(const BookmarkNode*)node {
+ // A BookmarkEditorController is a sheet that owns itself, and
+ // deallocates itself when closed.
+ [[[BookmarkEditorController alloc]
+ initWithParentWindow:[self window]
+ profile:browser_->profile()
+ parent:node->GetParent()
+ node:node
+ configuration:BookmarkEditor::SHOW_TREE
+ handler:NULL]
+ runAsModalSheet];
+}
+
+// Implement BookmarkBubbleControllerDelegate
+- (void)doneWithBubbleController:(BookmarkBubbleController*)controller {
+ bookmarkBubbleController_.reset(nil);
+}
+
@end
@implementation BrowserWindowController (Private)
« no previous file with comments | « chrome/browser/cocoa/browser_window_controller.h ('k') | chrome/browser/cocoa/browser_window_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698