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

Unified Diff: chrome/browser/views/status_bubble_views.cc

Issue 149156: Revert 19829. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 6 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
« no previous file with comments | « chrome/browser/views/status_bubble_views.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/status_bubble_views.cc
===================================================================
--- chrome/browser/views/status_bubble_views.cc (revision 19854)
+++ chrome/browser/views/status_bubble_views.cc (working copy)
@@ -28,7 +28,6 @@
#include "views/widget/root_view.h"
#include "views/widget/widget.h"
#if defined(OS_WIN)
-#include "views/controls/scrollbar/native_scroll_bar.h"
#include "views/widget/widget_win.h"
#endif
@@ -54,7 +53,7 @@
// The minimum horizontal space between the (right) end of the text and the edge
// of the status bubble, not including the outer shadow ring, or a 1 px gap we
-// leave so we can shift all the text by 1 px to produce a "highlight" effect.
+// leave so we can shit all the text by 1 px to produce a "highlight" effect.
static const int kTextHorizPadding = 1;
// Delays before we start hiding or showing the bubble after we receive a
@@ -67,9 +66,6 @@
static const int kHideFadeDurationMS = 200;
static const int kFramerate = 25;
-// How long each expansion step should take.
-static const int kExpansionStepDurationMS = 150;
-
// View -----------------------------------------------------------------------
// StatusView manages the display of the bubble, applying text changes and
// fading in or out the bubble as required.
@@ -117,11 +113,6 @@
// Set the bubble text to a certain value, hides the bubble if text is
// an empty string.
- void SetTextAndAnimate(const std::wstring& text);
-
- // Set the bubble text to a certain value without triggering animation
- // sequence. Called by the StatusViewExpander after bubble has been
- // fully expanded.
void SetText(const std::wstring& text);
BubbleStage GetState() const { return stage_; }
@@ -187,12 +178,6 @@
};
void StatusBubbleViews::StatusView::SetText(const std::wstring& text) {
- text_ = text;
- SchedulePaint();
-}
-
-void StatusBubbleViews::StatusView::SetTextAndAnimate(
- const std::wstring& text) {
if (text.empty()) {
// The string was empty.
StartHiding();
@@ -332,6 +317,7 @@
void StatusBubbleViews::StatusView::AnimationEnded(
const Animation* animation) {
SetOpacity(opacity_end_);
+
if (stage_ == BUBBLE_HIDING_FADE) {
stage_ = BUBBLE_HIDDEN;
popup_->Hide();
@@ -467,83 +453,6 @@
body_bounds.height());
}
-
-// StatusViewExpander ---------------------------------------------------------
-// StatusViewExpander manages the expansion and contraction of the status
-// bubble as it accommodates URL's too long to fit in the standard bubble.
-// Changes are passed through to the StatusView to paint.
-class StatusBubbleViews::StatusViewExpander : public Animation,
- public AnimationDelegate {
- public:
- StatusViewExpander(StatusBubble* status_bubble, StatusView* status_view)
- : Animation(kFramerate, this),
- status_bubble_(status_bubble),
- status_view_(status_view),
- expansion_start_(0),
- expansion_end_(0) {
- }
-
- // Manage the expansion of the bubble.
- void StartExpansion(std::wstring expanded_text, int current_width,
- int expansion_end);
-
- // Set width of fully expanded bubble.
- void SetExpandedWidth(int expanded_width);
-
- private:
- // Animation functions.
- int GetCurrentBubbleWidth();
- void SetBubbleWidth(int width);
- void AnimateToState(double state);
- void AnimationEnded(const Animation* animation);
-
- // We are changing the bounds and text of this view.
- StatusView* status_view_;
-
- // Manager that owns us.
- StatusBubble* status_bubble_;
-
- // The currently displayed text.
- std::wstring text_;
-
- // Text elided to fit maximum possible status bar width.
- std::wstring expanded_text_;
-
- // Widths at expansion start and end.
- int expansion_start_;
- int expansion_end_;
-};
-
-void StatusBubbleViews::StatusViewExpander::AnimateToState(double state) {
- SetBubbleWidth(GetCurrentBubbleWidth());
-}
-
-void StatusBubbleViews::StatusViewExpander::AnimationEnded(
- const Animation* animation) {
- SetBubbleWidth(expansion_end_);
- status_view_->SetText(expanded_text_);
-}
-
-void StatusBubbleViews::StatusViewExpander::StartExpansion(
- std::wstring expanded_text, int expansion_start,
- int expansion_end) {
- expanded_text_ = expanded_text;
- expansion_start_ = expansion_start;
- expansion_end_ = expansion_end;
- SetDuration(kExpansionStepDurationMS);
- Start();
-}
-
-int StatusBubbleViews::StatusViewExpander::GetCurrentBubbleWidth() {
- return static_cast<int>(expansion_start_ +
- (expansion_end_ - expansion_start_) * Animation::GetCurrentValue());
-}
-
-void StatusBubbleViews::StatusViewExpander::SetBubbleWidth(int width) {
- status_bubble_->SetBubbleWidth(width);
- status_view_->SchedulePaint();
-}
-
// StatusBubble ---------------------------------------------------------------
const int StatusBubbleViews::kShadowThickness = 1;
@@ -554,13 +463,10 @@
opacity_(0),
frame_(frame),
view_(NULL),
- download_shelf_is_visible_(false),
- is_expanded_(false),
- expand_timer_factory_(this) {
+ download_shelf_is_visible_(false) {
}
StatusBubbleViews::~StatusBubbleViews() {
- CancelExpandTimer();
if (popup_.get())
popup_->CloseNow();
}
@@ -573,8 +479,6 @@
if (!view_)
view_ = new StatusView(this, popup, frame_->GetThemeProvider());
- if (!expand_view_)
- expand_view_ = new StatusViewExpander(this, view_);
popup->set_window_style(WS_POPUP);
popup->set_window_ex_style(WS_EX_LAYERED | WS_EX_TOOLWINDOW |
@@ -631,34 +535,26 @@
Init();
status_text_ = status_text;
if (!status_text_.empty()) {
- view_->SetTextAndAnimate(status_text);
+ view_->SetText(status_text);
view_->Show();
} else if (!url_text_.empty()) {
- view_->SetTextAndAnimate(url_text_);
+ view_->SetText(url_text_);
} else {
- view_->SetTextAndAnimate(std::wstring());
+ view_->SetText(std::wstring());
}
}
void StatusBubbleViews::SetURL(const GURL& url, const std::wstring& languages) {
- languages_ = languages;
- url_ = url;
Init();
// If we want to clear a displayed URL but there is a status still to
// display, display that status instead.
if (url.is_empty() && !status_text_.empty()) {
url_text_ = std::wstring();
- view_->SetTextAndAnimate(status_text_);
+ view_->SetText(status_text_);
return;
}
- // Reset expansion state only when bubble is completely hidden.
- if (view_->GetState() == StatusView::BUBBLE_HIDDEN) {
- is_expanded_ = false;
- SetBubbleWidth(GetStandardStatusBubbleWidth());
- }
-
// Set Elided Text corresponding to the GURL object.
gfx::Rect popup_bounds;
popup_->GetBounds(&popup_bounds, true);
@@ -667,30 +563,13 @@
url_text_ = gfx::ElideUrl(url, view_->Label::GetFont(), text_width,
languages);
- url_parse::Parsed parsed;
- std::wstring original_url_text_ =
- net::FormatUrl(url, languages, true, true, &parsed, NULL);
-
// An URL is always treated as a left-to-right string. On right-to-left UIs
// we need to explicitly mark the URL as LTR to make sure it is displayed
// correctly.
if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT &&
!url_text_.empty())
l10n_util::WrapStringWithLTRFormatting(&url_text_);
-
- view_->SetTextAndAnimate(url_text_);
-
- CancelExpandTimer();
-
- // If bubble is already in expanded state, shift immediately to adjust to
- // new text size (shrinking or expanding). Otherwise delay for
- // kExpandHoverDelay ms.
- if (is_expanded_ && !url.is_empty())
- ExpandBubble();
- else if (original_url_text_.length() > url_text_.length())
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- expand_timer_factory_.NewRunnableMethod(
- &StatusBubbleViews::ExpandBubble), kExpandHoverDelay);
+ view_->SetText(url_text_);
}
void StatusBubbleViews::Hide() {
@@ -796,7 +675,7 @@
view_->SetStyle(StatusView::STYLE_STANDARD_RIGHT);
offset_ = 0;
- // Subtract border width + bubble width.
+ // Substract border width + bubble width.
int right_position_x = window_width - (position_.x() + size_.width());
popup_->SetBounds(gfx::Rect(top_left.x() + right_position_x,
top_left.y() + position_.y(),
@@ -816,46 +695,3 @@
size_.width(), size_.height()));
}
}
-
-void StatusBubbleViews::ExpandBubble() {
- // Elide url to maximum possible size, then check actual length (it may
- // still be too long to fit) before expanding bubble.
- gfx::Rect popup_bounds;
- popup_->GetBounds(&popup_bounds, true);
- int max_status_bubble_width = GetMaxStatusBubbleWidth();
- url_text_ = gfx::ElideUrl(url_, view_->Label::GetFont(),
- max_status_bubble_width, languages_);
- int expanded_bubble_width =
- std::max(GetStandardStatusBubbleWidth(),
- std::min(view_->Label::GetFont().GetStringWidth(url_text_) +
- (kShadowThickness * 2) + kTextPositionX + kTextHorizPadding + 1,
- max_status_bubble_width));
- is_expanded_ = true;
- expand_view_->StartExpansion(url_text_, popup_bounds.width(),
- expanded_bubble_width);
-}
-
-int StatusBubbleViews::GetStandardStatusBubbleWidth() {
- gfx::Rect frame_bounds;
- frame_->GetBounds(&frame_bounds, false);
- return frame_bounds.width() / 3;
-}
-
-int StatusBubbleViews::GetMaxStatusBubbleWidth() {
- gfx::Rect frame_bounds;
- frame_->GetBounds(&frame_bounds, false);
- return static_cast<int>(frame_bounds.width() - (kShadowThickness * 2) -
- kTextPositionX - kTextHorizPadding - 1 -
- views::NativeScrollBar::GetVerticalScrollBarWidth());
-}
-
-void StatusBubbleViews::SetBubbleWidth(int width) {
- size_.set_width(width);
- SetBounds(position_.x(), position_.y(), size_.width(), size_.height());
-}
-
-void StatusBubbleViews::CancelExpandTimer() {
- if (!expand_timer_factory_.empty())
- expand_timer_factory_.RevokeAll();
-}
-
« no previous file with comments | « chrome/browser/views/status_bubble_views.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698