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

Unified Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm

Issue 1307533002: [Mac] Enable MacViews bookmark bubble behind --enable-mac-views-dialogs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@modal
Patch Set: Rebase atop https://codereview.chromium.org/1309583002/ Created 5 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/ui/cocoa/bookmarks/bookmark_bubble_controller.mm
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm
index 2fed9b9645ee72677b6a86613e97b982fb1a75a1..bb5ad282e06ccb1add4d0245581aa169e29272c7 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm
@@ -6,7 +6,9 @@
#include "base/mac/bundle_locations.h"
#include "base/strings/sys_string_conversions.h"
+#include "chrome/browser/ui/bookmarks/bookmark_bubble_observer.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_finder.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_sync_promo_controller.h"
@@ -22,11 +24,35 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/user_metrics.h"
#include "ui/base/l10n/l10n_util_mac.h"
+#import "ui/gfx/mac/coordinate_conversion.h"
using base::UserMetricsAction;
using bookmarks::BookmarkModel;
using bookmarks::BookmarkNode;
+namespace {
+
+// Closes the BookmarkBubbleController when the toolkit-views bubble closes.
+class CocoaViewsBookmarkBubbleObserver
+ : public bookmarks::BookmarkBubbleObserver {
+ public:
+ explicit CocoaViewsBookmarkBubbleObserver(
+ BookmarkBubbleController* controller)
+ : controller_(controller) {}
+ ~CocoaViewsBookmarkBubbleObserver() override {}
+
+ // bookmarks::BookmarkBubbleObserver.
+ void OnBookmarkBubbleShown(const GURL& url) override {}
+ void OnBookmarkBubbleHidden() override { [controller_ close]; }
+
+ private:
+ BookmarkBubbleController* controller_; // Weak, owns us.
+
+ DISALLOW_COPY_AND_ASSIGN(CocoaViewsBookmarkBubbleObserver);
+};
+
+} // namespace
+
// An object to represent the ChooseAnotherFolder item in the pop up.
@interface ChooseAnotherFolder : NSObject
@end
@@ -184,9 +210,8 @@ using bookmarks::BookmarkNode;
arrowTip = [parentWindow convertBaseToScreen:arrowTip];
NSPoint bubbleArrowTip = [bubble arrowTip];
bubbleArrowTip = [bubble convertPoint:bubbleArrowTip toView:nil];
- arrowTip.y -= bubbleArrowTip.y;
- arrowTip.x -= bubbleArrowTip.x;
- [window setFrameOrigin:arrowTip];
+ [window setFrameOrigin:NSMakePoint(arrowTip.x - bubbleArrowTip.x,
+ arrowTip.y - bubbleArrowTip.y)];
// Default is IDS_BOOKMARK_BUBBLE_PAGE_BOOKMARK; "Bookmark".
// If adding for the 1st time the string becomes "Bookmark Added!"
@@ -215,6 +240,17 @@ using bookmarks::BookmarkNode;
// Pulse something interesting on the bookmark bar.
[self startPulsingBookmarkButton:node_];
+ if (chrome::ToolkitViewsDialogsEnabled()) {
+ if (!bookmarkBubbleObserver_.get())
+ bookmarkBubbleObserver_.reset(new CocoaViewsBookmarkBubbleObserver(self));
+ chrome::ShowBookmarkBubbleViewsAtPoint(
+ gfx::ScreenPointFromNSPoint(arrowTip), [parentWindow contentView],
+ bookmarkBubbleObserver_.get(),
+ chrome::FindBrowserWithWindow(parentWindow), node_->url(),
+ alreadyBookmarked_);
+ return;
+ }
+
[parentWindow addChildWindow:window ordered:NSWindowAbove];
[window makeKeyAndOrderFront:self];
[self registerKeyStateEventTap];
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.h ('k') | chrome/browser/ui/views/bookmarks/bookmark_bar_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698