Index: chrome/browser/ui/views/app_list/app_list_dialog_container.cc |
diff --git a/chrome/browser/ui/views/app_list/app_list_dialog_container.cc b/chrome/browser/ui/views/app_list/app_list_dialog_container.cc |
deleted file mode 100644 |
index dd2c4f2ecdb7623c6040f1c05c6de7104b8e90a5..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/app_list/app_list_dialog_container.cc |
+++ /dev/null |
@@ -1,246 +0,0 @@ |
-// Copyright 2014 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/app_list/app_list_dialog_container.h" |
- |
-#include <utility> |
- |
-#include "base/macros.h" |
-#include "build/build_config.h" |
-#include "chrome/browser/ui/host_desktop.h" |
-#include "third_party/skia/include/core/SkPaint.h" |
-#include "ui/app_list/app_list_constants.h" |
-#include "ui/base/accelerators/accelerator.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/base/ui_base_types.h" |
-#include "ui/events/event_constants.h" |
-#include "ui/events/keycodes/keyboard_codes.h" |
-#include "ui/gfx/canvas.h" |
-#include "ui/gfx/color_palette.h" |
-#include "ui/resources/grit/ui_resources.h" |
-#include "ui/views/background.h" |
-#include "ui/views/border.h" |
-#include "ui/views/bubble/bubble_border.h" |
-#include "ui/views/bubble/bubble_frame_view.h" |
-#include "ui/views/controls/button/label_button.h" |
-#include "ui/views/layout/fill_layout.h" |
-#include "ui/views/widget/widget.h" |
-#include "ui/views/window/client_view.h" |
-#include "ui/views/window/dialog_delegate.h" |
-#include "ui/views/window/native_frame_view.h" |
-#include "ui/views/window/non_client_view.h" |
- |
-namespace { |
- |
-#if defined(OS_MACOSX) |
-const ui::ModalType kModalType = ui::MODAL_TYPE_CHILD; |
-const views::BubbleBorder::Shadow kShadowType = views::BubbleBorder::NO_ASSETS; |
-#else |
-const ui::ModalType kModalType = ui::MODAL_TYPE_WINDOW; |
-const views::BubbleBorder::Shadow kShadowType = |
- views::BubbleBorder::SMALL_SHADOW; |
-#endif |
- |
-// The background for App List dialogs, which appears as a rounded rectangle |
-// with the same border radius and color as the app list contents. |
-class AppListOverlayBackground : public views::Background { |
- public: |
- AppListOverlayBackground() {} |
- ~AppListOverlayBackground() override {} |
- |
- // Overridden from views::Background: |
- void Paint(gfx::Canvas* canvas, views::View* view) const override { |
- // The radius of the app list overlay (the dialog's background). |
- // TODO(sashab): Using SupportsShadow() from app_list_view.cc, make this |
- // 1px smaller on platforms that support shadows. |
- const int kAppListOverlayBorderRadius = 3; |
- |
- SkPaint paint; |
- paint.setStyle(SkPaint::kFill_Style); |
- paint.setColor(app_list::kContentsBackgroundColor); |
- canvas->DrawRoundRect( |
- view->GetContentsBounds(), kAppListOverlayBorderRadius, paint); |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(AppListOverlayBackground); |
-}; |
- |
-// Base container for modal dialogs. Encases a content view in a modal dialog |
-// with an accelerator to close on escape. |
-class BaseDialogContainer : public views::DialogDelegateView { |
- public: |
- BaseDialogContainer(views::View* dialog_body, |
- const base::Closure& close_callback) |
- : dialog_body_(dialog_body), |
- close_callback_(close_callback) { |
- AddChildView(dialog_body_); |
- // Since we are using a ClientView instead of a DialogClientView, we need to |
- // manually bind the escape key to close the dialog. |
- ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE); |
- AddAccelerator(escape); |
- } |
- ~BaseDialogContainer() override {} |
- |
- protected: |
- views::View* dialog_body() { return dialog_body_; } |
- |
- private: |
- // Overridden from views::View: |
- void ViewHierarchyChanged( |
- const ViewHierarchyChangedDetails& details) override { |
- views::DialogDelegateView::ViewHierarchyChanged(details); |
- if (details.is_add && details.child == this) |
- GetFocusManager()->AdvanceFocus(false); |
- } |
- |
- bool AcceleratorPressed(const ui::Accelerator& accelerator) override { |
- DCHECK_EQ(accelerator.key_code(), ui::VKEY_ESCAPE); |
- GetWidget()->Close(); |
- return true; |
- } |
- |
- // Overridden from views::DialogDelegate: |
- int GetDialogButtons() const override { return ui::DIALOG_BUTTON_NONE; } |
- |
- // Overridden from views::WidgetDelegate: |
- ui::ModalType GetModalType() const override { return kModalType; } |
- void WindowClosing() override { |
- if (!close_callback_.is_null()) |
- close_callback_.Run(); |
- } |
- views::ClientView* CreateClientView(views::Widget* widget) override { |
- return new views::ClientView(widget, GetContentsView()); |
- } |
- |
- views::View* dialog_body_; |
- const base::Closure close_callback_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BaseDialogContainer); |
-}; |
- |
-// The contents view for an App List Dialog, which covers the entire app list |
-// and adds a close button. |
-class AppListDialogContainer : public BaseDialogContainer, |
- public views::ButtonListener { |
- public: |
- AppListDialogContainer(views::View* dialog_body, |
- const base::Closure& close_callback) |
- : BaseDialogContainer(dialog_body, close_callback) { |
- set_background(new AppListOverlayBackground()); |
- close_button_ = views::BubbleFrameView::CreateCloseButton(this); |
- AddChildView(close_button_); |
- } |
- ~AppListDialogContainer() override {} |
- |
- private: |
- // Overridden from views::View: |
- void Layout() override { |
- // Margin of the close button from the top right-hand corner of the dialog. |
- const int kCloseButtonDialogMargin = 10; |
- |
- close_button_->SetPosition( |
- gfx::Point(width() - close_button_->width() - kCloseButtonDialogMargin, |
- kCloseButtonDialogMargin)); |
- |
- dialog_body()->SetBoundsRect(GetContentsBounds()); |
- views::DialogDelegateView::Layout(); |
- } |
- |
- // Overridden from views::WidgetDelegate: |
- views::NonClientFrameView* CreateNonClientFrameView( |
- views::Widget* widget) override { |
- return new views::NativeFrameView(widget); |
- } |
- |
- // Overridden from views::ButtonListener: |
- void ButtonPressed(views::Button* sender, const ui::Event& event) override { |
- if (sender == close_button_) { |
- GetWidget()->Close(); |
- } else { |
- NOTREACHED(); |
- } |
- } |
- |
- views::LabelButton* close_button_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AppListDialogContainer); |
-}; |
- |
-// A BubbleFrameView that allows its client view to extend all the way to the |
-// top of the dialog, overlapping the BubbleFrameView's close button. This |
-// allows dialog content to appear closer to the top, in place of a title. |
-class FullSizeBubbleFrameView : public views::BubbleFrameView { |
- public: |
- FullSizeBubbleFrameView() : views::BubbleFrameView(gfx::Insets()) {} |
- ~FullSizeBubbleFrameView() override {} |
- |
- private: |
- // Overridden from views::ViewTargeterDelegate: |
- bool DoesIntersectRect(const View* target, |
- const gfx::Rect& rect) const override { |
- // Make sure click events can still reach the close button, even if the |
- // ClientView overlaps it. |
- // NOTE: |rect| is in the mirrored coordinate space, so we must use the |
- // close button's mirrored bounds to correctly target the close button when |
- // in RTL mode. |
- if (IsCloseButtonVisible() && |
- GetCloseButtonMirroredBounds().Intersects(rect)) { |
- return true; |
- } |
- return views::BubbleFrameView::DoesIntersectRect(target, rect); |
- } |
- |
- // Overridden from views::View: |
- gfx::Insets GetInsets() const override { return gfx::Insets(); } |
- |
- DISALLOW_COPY_AND_ASSIGN(FullSizeBubbleFrameView); |
-}; |
- |
-// A container view for a native dialog, which sizes to the given fixed |size|. |
-class NativeDialogContainer : public BaseDialogContainer { |
- public: |
- NativeDialogContainer(views::View* dialog_body, |
- const gfx::Size& size, |
- const base::Closure& close_callback) |
- : BaseDialogContainer(dialog_body, close_callback), |
- size_(size) { |
- SetLayoutManager(new views::FillLayout()); |
- } |
- ~NativeDialogContainer() override {} |
- |
- private: |
- // Overridden from views::View: |
- gfx::Size GetPreferredSize() const override { return size_; } |
- |
- // Overridden from views::WidgetDelegate: |
- views::NonClientFrameView* CreateNonClientFrameView( |
- views::Widget* widget) override { |
- FullSizeBubbleFrameView* frame = new FullSizeBubbleFrameView(); |
- scoped_ptr<views::BubbleBorder> border(new views::BubbleBorder( |
- views::BubbleBorder::FLOAT, kShadowType, gfx::kPlaceholderColor)); |
- border->set_use_theme_background_color(true); |
- frame->SetBubbleBorder(std::move(border)); |
- return frame; |
- } |
- |
- const gfx::Size size_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NativeDialogContainer); |
-}; |
- |
-} // namespace |
- |
-views::DialogDelegateView* CreateAppListContainerForView( |
- views::View* view, |
- const base::Closure& close_callback) { |
- return new AppListDialogContainer(view, close_callback); |
-} |
- |
-views::DialogDelegateView* CreateDialogContainerForView( |
- views::View* view, |
- const gfx::Size& size, |
- const base::Closure& close_callback) { |
- return new NativeDialogContainer(view, size, close_callback); |
-} |