summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/browser_bubble_gtk.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 21:53:27 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 21:53:27 +0000
commita4c368180132f1f5fc2e57af75115b0d36b542a7 (patch)
tree44069f6a2e8fbec60b3347736941fd1da20c7a00 /chrome/browser/views/browser_bubble_gtk.cc
parentc3b0173e79820fbb5252d873fc14ea70c1132bcc (diff)
downloadchromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.zip
chromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.tar.gz
chromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.tar.bz2
Fixes a slew of random link/compile errors for views on gtk.
BUG=none TEST=none TBR=ben Review URL: http://codereview.chromium.org/115948 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17246 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/browser_bubble_gtk.cc')
-rw-r--r--chrome/browser/views/browser_bubble_gtk.cc56
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/views/browser_bubble_gtk.cc b/chrome/browser/views/browser_bubble_gtk.cc
new file mode 100644
index 0000000..91fea0c
--- /dev/null
+++ b/chrome/browser/views/browser_bubble_gtk.cc
@@ -0,0 +1,56 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/browser_bubble.h"
+
+#include "chrome/browser/views/frame/browser_view.h"
+#include "views/widget/widget_gtk.h"
+#include "views/window/window.h"
+
+void BrowserBubble::InitPopup() {
+ gfx::NativeView native_view = frame_->GetNativeView();
+ gfx::NativeWindow native_window = frame_->GetWindow()->GetNativeWindow();
+ views::WidgetGtk* pop = new views::WidgetGtk(views::WidgetGtk::TYPE_POPUP);
+ pop->set_delete_on_destroy(false);
+ pop->SetOpacity(0xFF);
+ pop->Init(native_view, bounds_, false);
+ pop->SetContentsView(view_);
+ popup_.reset(pop);
+ Reposition();
+
+ BrowserView* browser_view =
+ BrowserView::GetBrowserViewForNativeWindow(native_window);
+ DCHECK(browser_view);
+ if (browser_view)
+ browser_view->AttachBrowserBubble(this);
+}
+
+void BrowserBubble::DestroyPopup() {
+ gfx::NativeWindow native_window = frame_->GetWindow()->GetNativeWindow();
+ BrowserView* browser_view =
+ BrowserView::GetBrowserViewForNativeWindow(native_window);
+ if (browser_view)
+ browser_view->DetachBrowserBubble(this);
+}
+
+void BrowserBubble::MovePopup(int x, int y, int w, int h) {
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->SetBounds(gfx::Rect(x, y, w, h));
+}
+
+void BrowserBubble::Show() {
+ if (visible_)
+ return;
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->Show();
+ visible_ = true;
+}
+
+void BrowserBubble::Hide() {
+ if (!visible_)
+ return;
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->Hide();
+ visible_ = false;
+}