diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-29 21:53:27 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-29 21:53:27 +0000 |
commit | a4c368180132f1f5fc2e57af75115b0d36b542a7 (patch) | |
tree | 44069f6a2e8fbec60b3347736941fd1da20c7a00 /chrome/browser/views/browser_bubble_gtk.cc | |
parent | c3b0173e79820fbb5252d873fc14ea70c1132bcc (diff) | |
download | chromium_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.cc | 56 |
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; +} |