summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-23 22:52:31 +0000
committerkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-23 22:52:31 +0000
commit0c47f08078ca7d5f886e8eaa0c4d678656024c51 (patch)
tree743e5042bde4429972a5813b30058c38217d718c /chrome/browser
parentee941fe58d0fcf4a71cf6728d621b2c3d84ac72b (diff)
downloadchromium_src-0c47f08078ca7d5f886e8eaa0c4d678656024c51.zip
chromium_src-0c47f08078ca7d5f886e8eaa0c4d678656024c51.tar.gz
chromium_src-0c47f08078ca7d5f886e8eaa0c4d678656024c51.tar.bz2
Revert "Fullscreen mode UI."
This reverts commit d108cc705611554de13712935ec11942dd390a5d. Review URL: http://codereview.appspot.com/21056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10217 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/views/browser_views.vcproj8
-rw-r--r--chrome/browser/views/frame/browser_view.cc9
-rw-r--r--chrome/browser/views/frame/browser_view.h3
-rw-r--r--chrome/browser/views/fullscreen_exit_bubble.cc219
-rw-r--r--chrome/browser/views/fullscreen_exit_bubble.h85
-rw-r--r--chrome/browser/views/toolbar_view.cc2
6 files changed, 1 insertions, 325 deletions
diff --git a/chrome/browser/views/browser_views.vcproj b/chrome/browser/views/browser_views.vcproj
index 92d345d..870ab14 100644
--- a/chrome/browser/views/browser_views.vcproj
+++ b/chrome/browser/views/browser_views.vcproj
@@ -554,14 +554,6 @@
>
</File>
<File
- RelativePath=".\fullscreen_exit_bubble.cc"
- >
- </File>
- <File
- RelativePath=".\fullscreen_exit_bubble.h"
- >
- </File>
- <File
RelativePath=".\go_button.cc"
>
</File>
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index c0476d5..b2fbe13a 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -22,7 +22,6 @@
#include "chrome/browser/views/clear_browsing_data.h"
#include "chrome/browser/views/download_shelf_view.h"
#include "chrome/browser/views/frame/browser_frame.h"
-#include "chrome/browser/views/fullscreen_exit_bubble.h"
#include "chrome/browser/views/html_dialog_view.h"
#include "chrome/browser/views/importer_view.h"
#include "chrome/browser/views/infobars/infobar_container.h"
@@ -578,9 +577,7 @@ void BrowserView::SetFullscreen(bool fullscreen) {
if (bookmark_bar_view_.get())
bookmark_bar_view_->OnFullscreenToggled(fullscreen_);
- // Size/position/style window appropriately.
- views::Widget* widget = GetWidget();
- HWND hwnd = widget->GetHWND();
+ HWND hwnd = GetWidget()->GetHWND();
gfx::Rect new_rect;
if (fullscreen_) {
// Save current window information.
@@ -608,10 +605,6 @@ void BrowserView::SetFullscreen(bool fullscreen) {
// This will cause the window to re-layout.
SetWindowPos(hwnd, NULL, new_rect.x(), new_rect.y(), new_rect.width(),
new_rect.height(), SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);
-
- // Turn fullscreen bubble on or off.
- fullscreen_bubble_.reset(fullscreen_ ?
- new FullscreenExitBubble(widget, browser_.get()) : NULL);
}
bool BrowserView::IsFullscreen() const {
diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h
index c91af8e..dccd54d 100644
--- a/chrome/browser/views/frame/browser_view.h
+++ b/chrome/browser/views/frame/browser_view.h
@@ -24,7 +24,6 @@ class BookmarkBarView;
class Browser;
class BrowserToolbarView;
class EncodingMenuControllerDelegate;
-class FullscreenExitBubble;
class InfoBarContainer;
class Menu;
class StatusBubbleViews;
@@ -390,8 +389,6 @@ class BrowserView : public BrowserWindow,
// Saved window information from before entering fullscreen mode.
SavedWindowInfo saved_window_info_;
- scoped_ptr<FullscreenExitBubble> fullscreen_bubble_;
-
// Lazily created representation of the system menu.
scoped_ptr<Menu> system_menu_;
diff --git a/chrome/browser/views/fullscreen_exit_bubble.cc b/chrome/browser/views/fullscreen_exit_bubble.cc
deleted file mode 100644
index 667088a..0000000
--- a/chrome/browser/views/fullscreen_exit_bubble.cc
+++ /dev/null
@@ -1,219 +0,0 @@
-// 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/fullscreen_exit_bubble.h"
-
-#include "chrome/app/chrome_dll_resource.h"
-#include "chrome/common/l10n_util.h"
-#include "chrome/common/resource_bundle.h"
-#include "chrome/views/root_view.h"
-#include "grit/generated_resources.h"
-
-
-// FullscreenExitView ----------------------------------------------------------
-
-class FullscreenExitBubble::FullscreenExitView : public views::View {
- public:
- FullscreenExitView(FullscreenExitBubble* bubble,
- views::WidgetWin* popup,
- const std::wstring& accelerator);
- virtual ~FullscreenExitView();
-
- // views::View
- virtual gfx::Size GetPreferredSize();
-
- private:
- static const int kPaddingPixels; // Number of pixels around all sides of link
-
- // views::View
- virtual void Layout();
- virtual void Paint(ChromeCanvas* canvas);
-
- // Handle to the HWND that contains us.
- views::WidgetWin* popup_;
-
- // Clickable hint text to show in the bubble.
- views::Link link_;
-};
-
-const int FullscreenExitBubble::FullscreenExitView::kPaddingPixels = 8;
-
-FullscreenExitBubble::FullscreenExitView::FullscreenExitView(
- FullscreenExitBubble* bubble,
- views::WidgetWin* popup,
- const std::wstring& accelerator)
- : popup_(popup) {
- link_.SetParentOwned(false);
- link_.SetText(l10n_util::GetStringF(IDS_EXIT_FULLSCREEN_MODE, accelerator));
- link_.SetController(bubble);
- link_.SetFont(ResourceBundle::GetSharedInstance().GetFont(
- ResourceBundle::LargeFont));
- link_.SetNormalColor(SK_ColorWHITE);
- link_.SetHighlightedColor(SK_ColorWHITE);
- AddChildView(&link_);
-}
-
-FullscreenExitBubble::FullscreenExitView::~FullscreenExitView() {
-}
-
-gfx::Size FullscreenExitBubble::FullscreenExitView::GetPreferredSize() {
- gfx::Size preferred_size(link_.GetPreferredSize());
- preferred_size.Enlarge(kPaddingPixels * 2, kPaddingPixels * 2);
- return preferred_size;
-}
-
-void FullscreenExitBubble::FullscreenExitView::Layout() {
- gfx::Size link_preferred_size(link_.GetPreferredSize());
- link_.SetBounds(kPaddingPixels,
- height() - kPaddingPixels - link_preferred_size.height(),
- link_preferred_size.width(), link_preferred_size.height());
-}
-
-void FullscreenExitBubble::FullscreenExitView::Paint(ChromeCanvas* canvas) {
- // Create a round-bottomed rect to fill the whole View.
- CRect parent_rect;
- SkRect rect;
- SkScalar padding = SkIntToScalar(kPaddingPixels);
- // The "-padding" top coordinate ensures that the rect is always tall enough
- // to contain the complete rounded corner radius. If we set this to 0, as the
- // popup slides offscreen (in reality, squishes to 0 height), the corners will
- // flatten out as the height becomes less than the corner radius.
- rect.set(0, -padding, SkIntToScalar(width()), SkIntToScalar(height()));
- SkScalar rad[8] = { 0, 0, 0, 0, padding, padding, padding, padding };
- SkPath path;
- path.addRoundRect(rect, rad, SkPath::kCW_Direction);
-
- // Fill it black.
- SkPaint paint;
- paint.setStyle(SkPaint::kFill_Style);
- paint.setFlags(SkPaint::kAntiAlias_Flag);
- paint.setColor(SK_ColorBLACK);
- canvas->drawPath(path, paint);
-}
-
-
-// FullscreenExitBubble --------------------------------------------------------
-
-const double FullscreenExitBubble::kOpacity = 0.7;
-const int FullscreenExitBubble::kInitialDelayMs = 2300;
-const int FullscreenExitBubble::kPositionCheckHz = 10;
-const int FullscreenExitBubble::kSlideInRegionHeightPx = 4;
-const int FullscreenExitBubble::kSlideInDurationMs = 350;
-const int FullscreenExitBubble::kSlideOutDurationMs = 700;
-
-FullscreenExitBubble::FullscreenExitBubble(
- views::Widget* frame,
- CommandUpdater::CommandUpdaterDelegate* delegate)
- : root_view_(frame->GetRootView()),
- delegate_(delegate),
- popup_(new views::WidgetWin()),
- size_animation_(new SlideAnimation(this)) {
- size_animation_->Reset(1);
-
- // Create the contents view.
- views::Accelerator accelerator(0, false, false, false);
- bool got_accelerator = frame->GetAccelerator(IDC_FULLSCREEN, &accelerator);
- DCHECK(got_accelerator);
- view_ = new FullscreenExitView(this, popup_, accelerator.GetShortcutText());
-
- // Initialize the popup.
- popup_->set_delete_on_destroy(false);
- popup_->set_window_style(WS_POPUP);
- popup_->set_window_ex_style(WS_EX_LAYERED | WS_EX_TOOLWINDOW |
- l10n_util::GetExtendedTooltipStyles());
- popup_->SetLayeredAlpha(static_cast<int>(0xff * kOpacity));
- popup_->Init(frame->GetHWND(), GetPopupRect(false), false);
- popup_->SetContentsView(view_);
- popup_->Show();
-
- // Start the initial delay timer.
- initial_delay_.Start(base::TimeDelta::FromMilliseconds(kInitialDelayMs), this,
- &FullscreenExitBubble::AfterInitialDelay);
-}
-
-FullscreenExitBubble::~FullscreenExitBubble() {
- // This is tricky. We may be in an ATL message handler stack, in which case
- // the popup cannot be deleted yet. We also can't blindly use
- // set_delete_on_destroy(true) on the popup to delete it when it closes,
- // because if the user closed the last tab while in fullscreen mode, Windows
- // has already destroyed the popup HWND by the time we get here, and thus
- // either the popup will already have been deleted (if we set this in our
- // constructor) or the popup will never get another OnFinalMessage() call (if
- // not, as currently). So instead, we tell the popup to synchronously hide,
- // and then asynchronously close and delete itself.
- popup_->Close();
- MessageLoop::current()->DeleteSoon(FROM_HERE, popup_);
-}
-
-void FullscreenExitBubble::LinkActivated(views::Link* source, int event_flags) {
- delegate_->ExecuteCommand(IDC_FULLSCREEN);
-}
-
-void FullscreenExitBubble::AnimationProgressed(
- const Animation* animation) {
- gfx::Rect popup_rect(GetPopupRect(false));
- if (popup_rect.IsEmpty()) {
- popup_->Hide();
- } else {
- popup_->MoveWindow(popup_rect.x(), popup_rect.y(), popup_rect.width(),
- popup_rect.height());
- popup_->Show();
- }
-}
-void FullscreenExitBubble::AnimationEnded(
- const Animation* animation) {
- AnimationProgressed(animation);
-}
-
-void FullscreenExitBubble::AfterInitialDelay() {
- // Check the mouse position immediately and every 50 ms afterwards.
- CheckMousePosition();
- mouse_position_checker_.Start(
- base::TimeDelta::FromMilliseconds(1000 / kPositionCheckHz), this,
- &FullscreenExitBubble::CheckMousePosition);
-}
-
-void FullscreenExitBubble::CheckMousePosition() {
- // Desired behavior:
- //
- // +------------+-----------------------------+------------+
- // | _ _ _ _ | Exit full screen mode (F11) | _ _ _ _ | Slide-in region
- // | _ _ _ _ \_____________________________/ _ _ _ _ | Neutral region
- // | | Slide-out region
- // : :
- //
- // * If the mouse is in the slide-in region, we show the popup.
- // * If the mouse is in the slide-out region, we hide the popup.
- // * If the mouse is in the neutral region, we do nothing, except if the popup
- // is currently sliding out, in which case we show it again. This
- // facilitates users correcting us if they try to mouse horizontally towards
- // the popup and unintentionally drop too low.
-
- POINT cursor_pos;
- GetCursorPos(&cursor_pos);
- gfx::Point transformed_pos(cursor_pos);
- views::View::ConvertPointToView(NULL, root_view_, &transformed_pos);
- gfx::Rect trigger_rect(GetPopupRect(true));
- if (!root_view_->HitTest(transformed_pos) ||
- (cursor_pos.y >= trigger_rect.bottom())) {
- size_animation_->SetSlideDuration(kSlideOutDurationMs);
- size_animation_->Hide();
- } else if ((cursor_pos.y < kSlideInRegionHeightPx) ||
- (size_animation_->GetCurrentValue() != 0)) {
- size_animation_->SetSlideDuration(kSlideInDurationMs);
- size_animation_->Show();
- }
-}
-
-gfx::Rect FullscreenExitBubble::GetPopupRect(
- bool ignore_animation_state) const {
- gfx::Size size(view_->GetPreferredSize());
- if (!ignore_animation_state) {
- size.set_height(static_cast<int>(static_cast<double>(size.height()) *
- size_animation_->GetCurrentValue()));
- }
- gfx::Point origin((root_view_->width() - size.width()) / 2, 0);
- views::View::ConvertPointToScreen(root_view_, &origin);
- return gfx::Rect(origin, size);
-}
diff --git a/chrome/browser/views/fullscreen_exit_bubble.h b/chrome/browser/views/fullscreen_exit_bubble.h
deleted file mode 100644
index ff855be..0000000
--- a/chrome/browser/views/fullscreen_exit_bubble.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// 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.
-
-#ifndef CHROME_BROWSER_VIEWS_FULLSCREEN_EXIT_BUBBLE_H__
-#define CHROME_BROWSER_VIEWS_FULLSCREEN_EXIT_BUBBLE_H__
-
-#include "base/scoped_ptr.h"
-#include "chrome/browser/command_updater.h"
-#include "chrome/common/slide_animation.h"
-#include "chrome/views/link.h"
-#include "chrome/views/widget_win.h"
-
-// FullscreenExitBubble is responsible for showing a bubble atop the screen in
-// fullscreen mode, telling users how to exit and providing a click target.
-// The bubble auto-hides, and re-shows when the user moves to the screen top.
-
-class FullscreenExitBubble : public views::LinkController,
- public AnimationDelegate {
- public:
- explicit FullscreenExitBubble(
- views::Widget* frame,
- CommandUpdater::CommandUpdaterDelegate* delegate);
- virtual ~FullscreenExitBubble();
-
- private:
- class FullscreenExitView;
-
- static const double kOpacity; // Opacity of the bubble, 0.0 - 1.0
- static const int kInitialDelayMs; // Initial time bubble remains onscreen
- static const int kPositionCheckHz; // How fast to check the mouse position
- static const int kSlideInRegionHeightPx;
- // Height of region triggering slide-in
- static const int kSlideInDurationMs; // Duration of slide-in animation
- static const int kSlideOutDurationMs; // Duration of slide-out animation
-
- // views::LinkController
- virtual void LinkActivated(views::Link* source, int event_flags);
-
- // AnimationDelegate
- virtual void AnimationProgressed(const Animation* animation);
- virtual void AnimationEnded(const Animation* animation);
-
- // Called after the initial delay to start checking the mouse position.
- void AfterInitialDelay();
-
- // Called repeatedly to get the current mouse position and animate the bubble
- // on or off the screen as appropriate.
- void CheckMousePosition();
-
- // Returns the current desirable rect for the popup window. If
- // |ignore_animation_state| is true this returns the rect assuming the popup
- // is fully onscreen.
- gfx::Rect GetPopupRect(bool ignore_animation_state) const;
-
- // The root view containing us.
- views::View* root_view_;
-
- // Someone who can toggle fullscreen mode on and off when the user requests
- // it.
- CommandUpdater::CommandUpdaterDelegate* delegate_;
-
- // We use an HWND for the popup so that it may float above any plugins in the
- // page.
- views::WidgetWin* popup_;
-
- // The contents of the popup.
- FullscreenExitView* view_;
-
- // Animation controlling sliding into/out of the top of the screen.
- scoped_ptr<SlideAnimation> size_animation_;
-
- // Timer to delay before starting the mouse checking/bubble hiding code.
- base::OneShotTimer<FullscreenExitBubble> initial_delay_;
-
- // Timer to poll the current mouse position. We can't just listen for mouse
- // events without putting a non-empty HWND onscreen (or hooking Windows, which
- // has other problems), so instead we run a low-frequency poller to see if the
- // user has moved in or out of our show/hide regions.
- base::RepeatingTimer<FullscreenExitBubble> mouse_position_checker_;
-
- DISALLOW_COPY_AND_ASSIGN(FullscreenExitBubble);
-};
-
-#endif // CHROME_BROWSER_VIEWS_FULLSCREEN_EXIT_BUBBLE_H__
diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc
index bc2d778..16f6a69 100644
--- a/chrome/browser/views/toolbar_view.cc
+++ b/chrome/browser/views/toolbar_view.cc
@@ -563,8 +563,6 @@ void BrowserToolbarView::RunAppMenu(const CPoint& pt, HWND hwnd) {
menu.AppendSeparator();
menu.AppendMenuItemWithLabel(IDC_SHOW_BOOKMARK_BAR,
l10n_util::GetString(IDS_SHOW_BOOKMARK_BAR));
- menu.AppendMenuItemWithLabel(IDC_FULLSCREEN,
- l10n_util::GetString(IDS_FULLSCREEN));
menu.AppendSeparator();
menu.AppendMenuItemWithLabel(IDC_SHOW_HISTORY,
l10n_util::GetString(IDS_SHOW_HISTORY));