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

Unified Diff: chrome/browser/ui/panels/panel_browser_frame_view.cc

Issue 9956145: Remove wrench button from panel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync Created 8 years, 8 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/panels/panel_browser_frame_view.cc
diff --git a/chrome/browser/ui/panels/panel_browser_frame_view.cc b/chrome/browser/ui/panels/panel_browser_frame_view.cc
index f8f26e359f4d325a96c84bbe893d8319b1de4efc..e0eb9e90ba6e6d8fcdef9a07c9f533814c451e88 100644
--- a/chrome/browser/ui/panels/panel_browser_frame_view.cc
+++ b/chrome/browser/ui/panels/panel_browser_frame_view.cc
@@ -12,7 +12,6 @@
#include "chrome/browser/ui/panels/panel.h"
#include "chrome/browser/ui/panels/panel_browser_view.h"
#include "chrome/browser/ui/panels/panel_manager.h"
-#include "chrome/browser/ui/panels/panel_settings_menu_model.h"
#include "chrome/browser/ui/panels/panel_strip.h"
#include "chrome/common/extensions/extension.h"
#include "content/public/browser/web_contents.h"
@@ -22,7 +21,6 @@
#include "grit/ui_resources.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "ui/base/accessibility/accessible_view_state.h"
-#include "ui/base/animation/linear_animation.h"
#include "ui/base/hit_test.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
@@ -31,11 +29,7 @@
#include "ui/gfx/screen.h"
#include "ui/gfx/skia_util.h"
#include "ui/views/controls/button/image_button.h"
-#include "ui/views/controls/button/menu_button.h"
#include "ui/views/controls/label.h"
-#include "ui/views/controls/menu/menu_item_view.h"
-#include "ui/views/controls/menu/menu_model_adapter.h"
-#include "ui/views/controls/menu/menu_runner.h"
#include "ui/views/painter.h"
#include "ui/views/widget/widget_delegate.h"
@@ -85,15 +79,6 @@ const int kTitleSpacing = 8;
// The spacing in pixels between the close button and the right border.
const int kCloseButtonAndBorderSpacing = 8;
-// The spacing in pixels between the close button and the settings button.
-const int kSettingsButtonAndCloseButtonSpacing = 8;
-
-// This value is experimental and subjective.
-const int kUpdateSettingsVisibilityAnimationMs = 120;
-
-// This value is experimental and subjective.
-const int kSettingsButtonAnimationFrameRate = 50;
-
// Colors used to draw active titlebar under default theme.
const SkColor kActiveTitleTextDefaultColor = SK_ColorBLACK;
const SkColor kActiveBackgroundDefaultColorStart = 0xfff0f8fa;
@@ -188,15 +173,6 @@ SkBitmap* CreateGradientBitmap(SkColor start_color, SkColor end_color) {
return new SkBitmap(canvas.ExtractBitmap());
}
-const ButtonResources& GetSettingsButtonResources() {
- static ButtonResources* buttons = NULL;
- if (!buttons) {
- buttons = new ButtonResources(IDR_BALLOON_WRENCH, 0,
- IDR_BALLOON_WRENCH_H, IDR_BALLOON_WRENCH_P);
- }
- return *buttons;
-}
-
const ButtonResources& GetCloseButtonResources() {
static ButtonResources* buttons = NULL;
if (!buttons) {
@@ -274,124 +250,16 @@ bool IsHitTestValueForResizing(int hc) {
} // namespace
-// Settings button animation.
-class SettingsButtonAnimation : public ui::LinearAnimation {
- public:
- SettingsButtonAnimation(int duration,
- int frame_rate,
- ui::AnimationDelegate* delegate)
- : ui::LinearAnimation(duration, frame_rate, delegate) {}
- protected:
- virtual void AnimateToState(double state) OVERRIDE {}
-};
-
-// PanelBrowserFrameView::MouseWatcher -----------------------------------------
-
-PanelBrowserFrameView::MouseWatcher::MouseWatcher(PanelBrowserFrameView* view)
- : view_(view),
- is_mouse_within_(false) {
- MessageLoopForUI::current()->AddObserver(this);
-}
-
-PanelBrowserFrameView::MouseWatcher::~MouseWatcher() {
- MessageLoopForUI::current()->RemoveObserver(this);
-}
-
-bool PanelBrowserFrameView::MouseWatcher::IsCursorInViewBounds() const {
- gfx::Point cursor_point = gfx::Screen::GetCursorScreenPoint();
- return view_->browser_view()->GetBounds().Contains(cursor_point.x(),
- cursor_point.y());
-}
-
-#if defined(OS_WIN)
-base::EventStatus PanelBrowserFrameView::MouseWatcher::WillProcessEvent(
- const base::NativeEvent& event) {
- return base::EVENT_CONTINUE;
-}
-
-void PanelBrowserFrameView::MouseWatcher::DidProcessEvent(
- const base::NativeEvent& event) {
- switch (event.message) {
- case WM_MOUSEMOVE:
- case WM_NCMOUSEMOVE:
- case WM_MOUSELEAVE:
- case WM_NCMOUSELEAVE:
- HandleGlobalMouseMoveEvent();
- break;
- default:
- break;
- }
-}
-#elif defined(USE_AURA) && defined(USE_X11)
-base::EventStatus PanelBrowserFrameView::MouseWatcher::WillProcessEvent(
- XEvent* const& event) {
- return base::EVENT_CONTINUE;
-}
-
-void PanelBrowserFrameView::MouseWatcher::DidProcessEvent(
- XEvent* const& event) {
- if (ui::IsMotionEvent(event))
- HandleGlobalMouseMoveEvent();
-}
-#elif defined(TOOLKIT_GTK)
-void PanelBrowserFrameView::MouseWatcher::WillProcessEvent(GdkEvent* event) {
-}
-
-void PanelBrowserFrameView::MouseWatcher::DidProcessEvent(GdkEvent* event) {
- switch (event->type) {
- case GDK_ENTER_NOTIFY:
- case GDK_LEAVE_NOTIFY:
- case GDK_MOTION_NOTIFY:
- HandleGlobalMouseMoveEvent();
- break;
- default:
- break;
- }
-}
-#endif
-
-void PanelBrowserFrameView::MouseWatcher::HandleGlobalMouseMoveEvent() {
- bool is_mouse_within = IsCursorInViewBounds();
- if (is_mouse_within == is_mouse_within_)
- return;
- is_mouse_within_ = is_mouse_within;
- view_->OnMouseEnterOrLeaveWindow(is_mouse_within_);
-}
-
-// PanelBrowserFrameView -------------------------------------------------------
-
PanelBrowserFrameView::PanelBrowserFrameView(BrowserFrame* frame,
PanelBrowserView* browser_view)
: BrowserNonClientFrameView(frame, browser_view),
panel_browser_view_(browser_view),
paint_state_(NOT_PAINTED),
- settings_button_(NULL),
close_button_(NULL),
title_icon_(NULL),
- title_label_(NULL),
- is_settings_button_visible_(false),
-#if defined(USE_AURA)
- has_settings_button_(panel_browser_view_->panel()->browser()->is_app()) {
-#else
- has_settings_button_(true) {
-#endif
+ title_label_(NULL) {
frame->set_frame_type(views::Widget::FRAME_TYPE_FORCE_CUSTOM);
- const ButtonResources& settings_button_resources =
- GetSettingsButtonResources();
- settings_button_ = new views::MenuButton(NULL, string16(), this, false);
- settings_button_->SetIcon(*(settings_button_resources.normal_image));
- settings_button_->SetHoverIcon(*(settings_button_resources.hover_image));
- settings_button_->SetPushedIcon(*(settings_button_resources.pushed_image));
- settings_button_->set_alignment(views::TextButton::ALIGN_CENTER);
- settings_button_->set_border(NULL);
- settings_button_->SetTooltipText(
- l10n_util::GetStringUTF16(IDS_PANEL_WINDOW_SETTINGS_BUTTON_TOOLTIP));
- settings_button_->SetAccessibleName(
- l10n_util::GetStringUTF16(IDS_PANEL_WINDOW_SETTINGS_BUTTON_TOOLTIP));
- settings_button_->SetVisible(is_settings_button_visible_);
- AddChildView(settings_button_);
-
const ButtonResources& close_button_resources = GetCloseButtonResources();
close_button_ = new views::ImageButton(this);
close_button_->SetImage(views::CustomButton::BS_NORMAL,
@@ -415,9 +283,6 @@ PanelBrowserFrameView::PanelBrowserFrameView(BrowserFrame* frame,
title_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
title_label_->SetAutoColorReadabilityEnabled(false);
AddChildView(title_label_);
-
- if (has_settings_button_)
- mouse_watcher_.reset(new MouseWatcher(this));
}
PanelBrowserFrameView::~PanelBrowserFrameView() {
@@ -540,32 +405,17 @@ void PanelBrowserFrameView::Layout() {
// Check if the width is only enough to show only the icon, or both icon
// and title. Hide corresponding controls accordingly.
bool show_close_button = true;
- bool show_settings_button = true;
bool show_title_label = true;
if (panel_strip->type() == PanelStrip::IN_OVERFLOW) {
if (width() <= IconOnlyWidth()) {
show_close_button = false;
- show_settings_button = false;
show_title_label = false;
- } else {
- show_settings_button = false;
}
}
- if (!has_settings_button_)
- show_settings_button = false;
-
close_button_->SetVisible(show_close_button);
- settings_button_->SetVisible(show_settings_button);
title_label_->SetVisible(show_title_label);
- // Cancel the settings button animation if the layout of titlebar is being
- // updated.
- if (settings_button_animator_.get() &&
- settings_button_animator_->is_animating()) {
- settings_button_animator_->Stop();
- }
-
// Layout the close button.
int right = width();
if (show_close_button) {
@@ -577,28 +427,6 @@ void PanelBrowserFrameView::Layout() {
close_button_size.width(),
close_button_size.height());
right = close_button_->x();
-
- // Layout the settings button.
- if (show_settings_button) {
- gfx::Size settings_button_size = settings_button_->GetPreferredSize();
- settings_button_->SetBounds(
- close_button_->x() - kSettingsButtonAndCloseButtonSpacing -
- settings_button_size.width(),
- (NonClientTopBorderHeight() - settings_button_size.height()) / 2,
- settings_button_size.width(),
- settings_button_size.height());
- right = settings_button_->x();
-
- // Trace the full bounds and zero-size bounds for animation purpose.
- settings_button_full_bounds_ = settings_button_->bounds();
- settings_button_zero_bounds_.SetRect(
- settings_button_full_bounds_.x() +
- settings_button_full_bounds_.width() / 2,
- settings_button_full_bounds_.y() +
- settings_button_full_bounds_.height() / 2,
- 0,
- 0);
- }
}
// Layout the icon.
@@ -681,21 +509,6 @@ void PanelBrowserFrameView::ButtonPressed(views::Button* sender,
frame()->Close();
}
-void PanelBrowserFrameView::OnMenuButtonClicked(views::View* source,
- const gfx::Point& point) {
- if (!EnsureSettingsMenuCreated())
- return;
-
- DCHECK_EQ(settings_button_, source);
- gfx::Point screen_point;
- views::View::ConvertPointToScreen(source, &screen_point);
- if (settings_menu_runner_->RunMenuAt(source->GetWidget(),
- settings_button_, gfx::Rect(screen_point, source->size()),
- views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) ==
- views::MenuRunner::MENU_DELETED)
- return;
-}
-
bool PanelBrowserFrameView::ShouldTabIconViewAnimate() const {
// This function is queried during the creation of the window as the
// TabIconView we host is initialized, so we need to NULL check the selected
@@ -708,32 +521,6 @@ SkBitmap PanelBrowserFrameView::GetFaviconForTabIconView() {
return frame()->widget_delegate()->GetWindowIcon();
}
-void PanelBrowserFrameView::AnimationEnded(const ui::Animation* animation) {
- settings_button_->SetVisible(is_settings_button_visible_);
-}
-
-void PanelBrowserFrameView::AnimationProgressed(
- const ui::Animation* animation) {
- gfx::Rect animation_start_bounds, animation_end_bounds;
- if (is_settings_button_visible_) {
- animation_start_bounds = settings_button_zero_bounds_;
- animation_end_bounds = settings_button_full_bounds_;
- } else {
- animation_start_bounds = settings_button_full_bounds_;
- animation_end_bounds = settings_button_zero_bounds_;
- }
- gfx::Rect new_bounds = settings_button_animator_->CurrentValueBetween(
- animation_start_bounds, animation_end_bounds);
- if (new_bounds == animation_end_bounds)
- AnimationEnded(animation);
- else
- settings_button_->SetBoundsRect(new_bounds);
-}
-
-void PanelBrowserFrameView::AnimationCanceled(const ui::Animation* animation) {
- AnimationEnded(animation);
-}
-
int PanelBrowserFrameView::NonClientBorderThickness() const {
if (CanResize())
return kResizableBorderThickness + kResizableClientEdgeThickness;
@@ -932,78 +719,6 @@ void PanelBrowserFrameView::UpdateTitleBar() {
title_label_->SetText(GetTitleText());
}
-void PanelBrowserFrameView::OnFocusChanged(bool focused) {
- if (!has_settings_button_)
- return;
-
- UpdateSettingsButtonVisibility(focused,
- mouse_watcher_->IsCursorInViewBounds());
- SchedulePaint();
-}
-
-void PanelBrowserFrameView::OnMouseEnterOrLeaveWindow(bool mouse_entered) {
- // Panel might be closed when we still watch the mouse event.
- if (!panel_browser_view_->panel())
- return;
-
- if (!has_settings_button_)
- return;
-
- UpdateSettingsButtonVisibility(panel_browser_view_->focused(),
- mouse_entered);
-}
-
-void PanelBrowserFrameView::UpdateSettingsButtonVisibility(
- bool focused, bool cursor_in_view) {
- DCHECK(has_settings_button_);
-
- PanelStrip* panel_strip = panel_browser_view_->panel()->panel_strip();
- if (!panel_strip)
- return;
-
- // The settings button is not shown in the overflow state.
- if (panel_strip->type() == PanelStrip::IN_OVERFLOW)
- return;
-
- bool is_settings_button_visible = focused || cursor_in_view;
- if (is_settings_button_visible_ == is_settings_button_visible)
- return;
- is_settings_button_visible_ = is_settings_button_visible;
-
- // Even if we're hiding the settings button, we still make it visible for the
- // time period that the animation is running.
- settings_button_->SetVisible(true);
-
- if (settings_button_animator_.get()) {
- if (settings_button_animator_->is_animating())
- settings_button_animator_->Stop();
- } else {
- settings_button_animator_.reset(new SettingsButtonAnimation(
- PanelManager::AdjustTimeInterval(kUpdateSettingsVisibilityAnimationMs),
- kSettingsButtonAnimationFrameRate, this));
- }
-
- settings_button_animator_->Start();
-}
-
-bool PanelBrowserFrameView::EnsureSettingsMenuCreated() {
- if (settings_menu_runner_.get())
- return true;
-
- const Extension* extension = panel_browser_view_->panel()->GetExtension();
jennb 2012/04/16 21:17:05 Looks like all uses of Panel::GetExtension() have
jianli 2012/04/16 23:24:45 Done.
- if (!extension)
- return false;
-
- settings_menu_model_.reset(
- new PanelSettingsMenuModel(panel_browser_view_->panel()));
- settings_menu_adapter_.reset(
- new views::MenuModelAdapter(settings_menu_model_.get()));
- settings_menu_ = new views::MenuItemView(settings_menu_adapter_.get());
- settings_menu_adapter_->BuildMenu(settings_menu_);
- settings_menu_runner_.reset(new views::MenuRunner(settings_menu_));
- return true;
-}
-
bool PanelBrowserFrameView::CanResize() const {
return panel_browser_view_->panel()->CanResizeByMouse() !=
panel::NOT_RESIZABLE;

Powered by Google App Engine
This is Rietveld 408576698