Commit f0be863a authored by msw@chromium.org's avatar msw@chromium.org

Remove the old views bubble code.

Bubbles previously using this code now use ui/views/bubble.
This code is now dead and can be removed; yay!

BUG=97248,98312,98322,98323
TEST=none


Review URL: http://codereview.chromium.org/8761012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112633 0039d316-1c4b-4281-b951-d872f2087c98
parent 37950fc7
// Copyright (c) 2011 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/ui/views/bubble/border_contents.h"
#include "chrome/browser/ui/window_sizer.h"
static const int kTopMargin = 6;
static const int kLeftMargin = 6;
static const int kBottomMargin = 9;
static const int kRightMargin = 6;
BorderContents::BorderContents()
: BorderContentsView(kTopMargin,
kLeftMargin,
kBottomMargin,
kRightMargin) {}
gfx::Rect BorderContents::GetMonitorBounds(const gfx::Rect& rect) {
scoped_ptr<WindowSizer::MonitorInfoProvider> monitor_provider(
WindowSizer::CreateDefaultMonitorInfoProvider());
return monitor_provider->GetMonitorWorkAreaMatching(rect);
}
// Copyright (c) 2011 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.
#ifndef CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_CONTENTS_H_
#define CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_CONTENTS_H_
#pragma once
#include "ui/views/bubble/border_contents_view.h"
// This is used to paint the border of the Bubble. Windows uses this via
// BorderWidgetWin, while others can use it directly in the bubble.
class BorderContents : public views::BorderContentsView {
public:
BorderContents();
protected:
virtual ~BorderContents() { }
// views::BorderContentsView overrides:
virtual gfx::Rect GetMonitorBounds(const gfx::Rect& rect) OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(BorderContents);
};
#endif // CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_CONTENTS_H_
// Copyright (c) 2011 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/ui/views/bubble/border_widget_win.h"
#include <windows.h>
#include "chrome/browser/ui/views/bubble/border_contents.h"
#include "ui/views/widget/widget.h"
BorderWidgetWin::BorderWidgetWin()
: views::NativeWidgetWin(new views::Widget),
border_contents_(NULL) {
}
void BorderWidgetWin::InitBorderWidgetWin(BorderContents* border_contents,
HWND owner) {
DCHECK(!border_contents_);
border_contents_ = border_contents;
border_contents_->Init();
views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
params.transparent = true;
params.parent = owner;
params.native_widget = this;
GetWidget()->Init(params);
GetWidget()->SetContentsView(border_contents_);
SetWindowPos(owner, 0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOREDRAW);
}
gfx::Rect BorderWidgetWin::SizeAndGetBounds(
const gfx::Rect& position_relative_to,
views::BubbleBorder::ArrowLocation arrow_location,
const gfx::Size& contents_size) {
// Ask the border view to calculate our bounds (and our contents').
gfx::Rect contents_bounds;
gfx::Rect window_bounds;
border_contents_->SizeAndGetBounds(position_relative_to, arrow_location,
false, contents_size, &contents_bounds,
&window_bounds);
GetWidget()->SetBounds(window_bounds);
// Return |contents_bounds| in screen coordinates.
contents_bounds.Offset(window_bounds.origin());
return contents_bounds;
}
LRESULT BorderWidgetWin::OnMouseActivate(UINT message,
WPARAM w_param,
LPARAM l_param) {
// Never activate.
return MA_NOACTIVATE;
}
// Copyright (c) 2011 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.
#ifndef CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_WIDGET_WIN_H_
#define CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_WIDGET_WIN_H_
#pragma once
#include "ui/views/bubble/bubble_border.h"
#include "ui/views/widget/native_widget_win.h"
class BorderContents;
// This is a window that surrounds the info bubble and paints the margin and
// border. It is a separate window so that it can be a layered window, so that
// we can use >1-bit alpha shadow images on the borders, which look nicer than
// the Windows CS_DROPSHADOW shadows. The info bubble window itself cannot be a
// layered window because that prevents it from hosting native child controls.
class BorderWidgetWin : public views::NativeWidgetWin {
public:
BorderWidgetWin();
virtual ~BorderWidgetWin() { }
// Initializes the BrowserWidget making |owner| its owning window.
void InitBorderWidgetWin(BorderContents* border_contents, HWND owner);
// Given the size of the contained contents (without margins), and the rect
// (in screen coordinates) to point to, sets the border window positions and
// sizes the border window and returns the bounds (in screen coordinates) the
// contents should use. |arrow_location| is prefered arrow location,
// the function tries to preserve the location and direction, in case of RTL
// arrow location is mirrored.
virtual gfx::Rect SizeAndGetBounds(
const gfx::Rect& position_relative_to,
views::BubbleBorder::ArrowLocation arrow_location,
const gfx::Size& contents_size);
// Simple accessors.
BorderContents* border_contents() { return border_contents_; }
protected:
BorderContents* border_contents_;
private:
// Overridden from NativeWidgetWin:
virtual LRESULT OnMouseActivate(UINT message,
WPARAM w_param,
LPARAM l_param) OVERRIDE;
DISALLOW_COPY_AND_ASSIGN(BorderWidgetWin);
};
#endif // CHROME_BROWSER_UI_VIEWS_BUBBLE_BORDER_WIDGET_WIN_H_
This diff is collapsed.
// Copyright (c) 2011 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.
#ifndef CHROME_BROWSER_UI_VIEWS_BUBBLE_BUBBLE_H_
#define CHROME_BROWSER_UI_VIEWS_BUBBLE_BUBBLE_H_
#pragma once
#include "base/compiler_specific.h"
#include "base/observer_list.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/base/animation/animation_delegate.h"
#include "ui/views/bubble/bubble_border.h"
#include "ui/views/view.h"
#if defined(USE_AURA)
#include "ui/views/widget/native_widget_aura.h"
#elif defined(OS_WIN)
#include "ui/views/widget/native_widget_win.h"
#elif defined(TOOLKIT_USES_GTK)
#include "ui/views/widget/native_widget_gtk.h"
#endif
// Bubble is used to display an arbitrary view above all other windows.
// Think of Bubble as a tooltip that allows you to embed an arbitrary view
// in the tooltip. Additionally the Bubble renders an arrow pointing at
// the region the info bubble is providing the information about.
//
// To use an Bubble, invoke Show() and it'll take care of the rest. The Bubble
// insets the contents for you, so the contents typically shouldn't have any
// additional margins.
class BorderContents;
#if defined(OS_WIN) && !defined(USE_AURA)
class BorderWidgetWin;
#endif
class Bubble;
namespace ui {
class SlideAnimation;
}
namespace views {
class Widget;
}
class BubbleDelegate {
public:
// Called after the Bubble has been shown.
virtual void BubbleShown() {}
// Called when the Bubble is closing and is about to be deleted.
// |closed_by_escape| is true if the close is the result of the user pressing
// escape.
virtual void BubbleClosing(Bubble* bubble, bool closed_by_escape) = 0;
// Whether the Bubble should be closed when the Esc key is pressed.
virtual bool CloseOnEscape() = 0;
// Whether the Bubble should fade in when opening. When trying to determine
// whether to use FadeIn, consider whether the bubble is shown as a direct
// result of a user action or not. For example, if the bubble is being shown
// as a direct result of a mouse-click, we should not use FadeIn. However, if
// the bubble appears as a notification that something happened in the
// background, we use FadeIn.
virtual bool FadeInOnShow() = 0;
// The name of the window to which this delegate belongs.
virtual string16 GetAccessibleName();
};
// TODO(sky): this code is ifdef-tastic. It might be cleaner to refactor the
// WidgetFoo subclass into a separate class that calls into Bubble.
// That way Bubble has no (or very few) ifdefs.
class Bubble
#if defined(USE_AURA)
: public views::NativeWidgetAura,
#elif defined(OS_WIN)
: public views::NativeWidgetWin,
#elif defined(TOOLKIT_USES_GTK)
: public views::NativeWidgetGtk,
#endif
public ui::AcceleratorTarget,
public ui::AnimationDelegate {
public:
class Observer {
public:
// See BubbleDelegate::BubbleClosing for when this is called.
virtual void OnBubbleClosing() = 0;
};
// Shows the Bubble.
// |parent| is set as the parent window.
// |contents| are the contents shown in the bubble.
// |position_relative_to| is a rect in screen coordinates at which the Bubble
// will point.
// Show() takes ownership of |contents| and deletes the created Bubble when
// another window is activated. You can explicitly close the bubble by
// invoking Close().
// |arrow_location| specifies preferred bubble alignment.
// You may provide an optional |delegate| to:
// - Be notified when the Bubble is closed.
// - Prevent the Bubble from being closed when the Escape key is
// pressed (the default behavior).
static Bubble* Show(views::Widget* parent,
const gfx::Rect& position_relative_to,
views::BubbleBorder::ArrowLocation arrow_location,
views::BubbleBorder::BubbleAlignment alignment,
views::View* contents,
BubbleDelegate* delegate);
#if defined(OS_CHROMEOS)
// Shows the Bubble without grabbing the focus. Doesn't set the Escape
// accelerator so user code is responsible for closing the bubble on pressing
// the Esc key. Others are the same as above. TYPE_POPUP widget is used
// to achieve the focusless effect. If |show_while_screen_is_locked| is true,
// a property is set telling the window manager to continue showing the bubble
// even while the screen is locked.
static Bubble* ShowFocusless(
views::Widget* parent,
const gfx::Rect& position_relative_to,
views::BubbleBorder::ArrowLocation arrow_location,
views::BubbleBorder::BubbleAlignment alignment,
views::View* contents,
BubbleDelegate* delegate,
bool show_while_screen_is_locked);
#endif
// Resizes and potentially moves the Bubble to best accommodate the
// contents preferred size.
void SizeToContents();
// Whether the Bubble should fade away when it closes. Generally speaking,
// we use FadeOut when the user selects something within the bubble that
// causes the bubble to dismiss. We don't use it when the bubble gets
// deactivated as a result of clicking outside the bubble.
void set_fade_away_on_close(bool fade_away_on_close) {
fade_away_on_close_ = fade_away_on_close;
}
// Whether the Bubble should automatically close when it gets deactivated.
void set_close_on_deactivate(bool close_on_deactivate) {
close_on_deactivate_ = close_on_deactivate;
}
// Overridden from NativeWidget:
virtual void Close() OVERRIDE;
// Overridden from ui::AnimationDelegate:
virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE;
virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE;
#ifdef UNIT_TEST
views::View* contents() const { return contents_; }
#endif
void AddObserver(Observer* obs) {
observer_list_.AddObserver(obs);
}
void RemoveObserver(Observer* obs) {
observer_list_.RemoveObserver(obs);
}
static const SkColor kBackgroundColor;
protected:
Bubble();
#if defined(OS_CHROMEOS)
Bubble(views::Widget::InitParams::Type type,
bool show_while_screen_is_locked);
#endif
virtual ~Bubble();
// Creates the Bubble.
virtual void InitBubble(views::Widget* parent,
const gfx::Rect& position_relative_to,
views::BubbleBorder::ArrowLocation arrow_location,
views::BubbleBorder::BubbleAlignment alignment,
views::View* contents,
BubbleDelegate* delegate);
// Instantiates and returns the BorderContents this Bubble should use.
// Subclasses can return their own BorderContents implementation.
virtual BorderContents* CreateBorderContents();
#if defined(USE_AURA)
// Overridden from NativeWidgetAura:
virtual void OnLostActive() OVERRIDE;
#elif defined(OS_WIN)
// Overridden from NativeWidgetWin:
virtual void OnActivate(UINT action, BOOL minimized, HWND window) OVERRIDE;
#elif defined(TOOLKIT_USES_GTK)
// Overridden from NativeWidgetGtk:
virtual void OnActiveChanged() OVERRIDE;
#endif
#if defined(OS_WIN) && !defined(USE_AURA)
// The window used to render the padding, border and arrow.
BorderWidgetWin* border_;
#else
// The view displaying the border.
BorderContents* border_contents_;
#endif
private:
enum ShowStatus {
kOpen,
kClosing,
kClosed
};
// Closes the window notifying the delegate. |closed_by_escape| is true if
// the close is the result of pressing escape.
void DoClose(bool closed_by_escape);
// Animates to a visible state.
void FadeIn();
// Animates to a hidden state.
void FadeOut();
// Animates to a visible/hidden state (visible if |fade_in| is true).
void Fade(bool fade_in);
void RegisterEscapeAccelerator();
void UnregisterEscapeAccelerator();
// Overridden from AcceleratorTarget:
virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
// The delegate, if any.
BubbleDelegate* delegate_;
// The animation used to fade the bubble out.
scoped_ptr<ui::SlideAnimation> animation_;
// The current visibility status of the bubble.
ShowStatus show_status_;
// Whether to fade away when the bubble closes.
bool fade_away_on_close_;
// Whether to close automatically when the bubble deactivates. Defaults to
// true.
bool close_on_deactivate_;
#if defined(TOOLKIT_USES_GTK)
// Some callers want the bubble to be a child control instead of a window.
views::Widget::InitParams::Type type_;
#endif
#if defined(OS_CHROMEOS)
// Should we set a property telling the window manager to show this window
// onscreen even when the screen is locked?
bool show_while_screen_is_locked_;
#endif
gfx::Rect position_relative_to_;
views::BubbleBorder::ArrowLocation arrow_location_;
views::View* contents_;
bool accelerator_registered_;
ObserverList<Observer> observer_list_;
DISALLOW_COPY_AND_ASSIGN(Bubble);
};
#endif // CHROME_BROWSER_UI_VIEWS_BUBBLE_BUBBLE_H_
...@@ -3312,12 +3312,6 @@ ...@@ -3312,12 +3312,6 @@
'browser/ui/views/browser_actions_container.cc', 'browser/ui/views/browser_actions_container.cc',
'browser/ui/views/browser_actions_container.h', 'browser/ui/views/browser_actions_container.h',
'browser/ui/views/browser_dialogs.h', 'browser/ui/views/browser_dialogs.h',
'browser/ui/views/bubble/border_contents.cc',
'browser/ui/views/bubble/border_contents.h',
'browser/ui/views/bubble/border_widget_win.cc',
'browser/ui/views/bubble/border_widget_win.h',
'browser/ui/views/bubble/bubble.cc',
'browser/ui/views/bubble/bubble.h',
'browser/ui/views/certificate_viewer_win.cc', 'browser/ui/views/certificate_viewer_win.cc',
'browser/ui/views/chrome_views_delegate.cc', 'browser/ui/views/chrome_views_delegate.cc',
'browser/ui/views/chrome_views_delegate.h', 'browser/ui/views/chrome_views_delegate.h',
...@@ -4191,8 +4185,6 @@ ...@@ -4191,8 +4185,6 @@
['exclude', '^browser/ui/views/app_menu_button_win.cc'], ['exclude', '^browser/ui/views/app_menu_button_win.cc'],
['exclude', '^browser/ui/views/bookmarks/bookmark_editor_view.cc'], ['exclude', '^browser/ui/views/bookmarks/bookmark_editor_view.cc'],
['exclude', '^browser/ui/views/bookmarks/bookmark_editor_view.h'], ['exclude', '^browser/ui/views/bookmarks/bookmark_editor_view.h'],
['exclude', '^browser/ui/views/bubble/border_widget_win.cc'],
['exclude', '^browser/ui/views/bubble/border_widget_win.h'],
['exclude', '^browser/ui/views/certificate_viewer_win.cc'], ['exclude', '^browser/ui/views/certificate_viewer_win.cc'],
['exclude', '^browser/ui/views/collected_cookies_win.cc'], ['exclude', '^browser/ui/views/collected_cookies_win.cc'],
['exclude', '^browser/ui/views/collected_cookies_win.h'], ['exclude', '^browser/ui/views/collected_cookies_win.h'],
...@@ -4704,10 +4696,6 @@ ...@@ -4704,10 +4696,6 @@
['include', '^browser/ui/views/bookmarks/bookmark_menu_delegate.h'], ['include', '^browser/ui/views/bookmarks/bookmark_menu_delegate.h'],
['include', '^browser/ui/views/browser_actions_container.cc'], ['include', '^browser/ui/views/browser_actions_container.cc'],
['include', '^browser/ui/views/browser_actions_container.h'], ['include', '^browser/ui/views/browser_actions_container.h'],
['include', '^browser/ui/views/bubble/border_contents.cc'],
['include', '^browser/ui/views/bubble/border_contents.h'],
['include', '^browser/ui/views/bubble/bubble.cc'],
['include', '^browser/ui/views/bubble/bubble.h'],
['include', '^browser/ui/views/chrome_views_delegate.cc'], ['include', '^browser/ui/views/chrome_views_delegate.cc'],
['include', '^browser/ui/views/constrained_html_delegate_gtk.cc'], ['include', '^browser/ui/views/constrained_html_delegate_gtk.cc'],
['include', '^browser/ui/views/content_setting_bubble_contents.cc'], ['include', '^browser/ui/views/content_setting_bubble_contents.cc'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment