| Index: chrome/browser/ui/views/extensions/shell_window_views.cc
|
| diff --git a/chrome/browser/ui/views/extensions/shell_window_views.cc b/chrome/browser/ui/views/extensions/shell_window_views.cc
|
| index a2c16d089068dd4e9ecf952bc43e1b9745c347ad..384bfb3161d8d7562d231d32e6304d37599d8d43 100644
|
| --- a/chrome/browser/ui/views/extensions/shell_window_views.cc
|
| +++ b/chrome/browser/ui/views/extensions/shell_window_views.cc
|
| @@ -210,9 +210,7 @@ int ShellWindowFrameView::NonClientHitTest(const gfx::Point& point) {
|
|
|
| // Check for possible draggable region in the client area for the frameless
|
| // window.
|
| - if (window_->frameless() &&
|
| - window_->draggable_region() &&
|
| - window_->draggable_region()->contains(point.x(), point.y()))
|
| + if (window_->IsInsideDraggableRegions(point.x(), point.y()))
|
| return HTCAPTION;
|
|
|
| int client_component = frame_->client_view()->NonClientHitTest(point);
|
| @@ -317,10 +315,10 @@ void ShellWindowFrameView::ButtonPressed(views::Button* sender,
|
|
|
| ShellWindowViews::ShellWindowViews(ShellWindow* shell_window,
|
| const ShellWindow::CreateParams& win_params)
|
| - : shell_window_(shell_window),
|
| + : NativeShellWindow(win_params),
|
| + shell_window_(shell_window),
|
| web_view_(NULL),
|
| - is_fullscreen_(false),
|
| - frameless_(win_params.frame == ShellWindow::CreateParams::FRAME_NONE) {
|
| + is_fullscreen_(false) {
|
| window_ = new views::Widget;
|
| views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
|
| params.delegate = this;
|
| @@ -367,8 +365,7 @@ bool ShellWindowViews::ShouldDescendIntoChildForEventHandling(
|
| DCHECK_EQ(child, web_view_->web_contents()->GetView()->GetNativeView());
|
| // Shell window should claim mouse events that fall within the draggable
|
| // region.
|
| - return !draggable_region_.get() ||
|
| - !draggable_region_->contains(location.x(), location.y());
|
| + return !IsInsideDraggableRegions(location.x(), location.y());
|
| #else
|
| return true;
|
| #endif
|
| @@ -509,7 +506,7 @@ views::View* ShellWindowViews::GetContentsView() {
|
| views::NonClientFrameView* ShellWindowViews::CreateNonClientFrameView(
|
| views::Widget* widget) {
|
| #if defined(USE_ASH)
|
| - if (!frameless_) {
|
| + if (!frameless()) {
|
| ash::CustomFrameViewAsh* frame = new ash::CustomFrameViewAsh();
|
| frame->Init(widget);
|
| return frame;
|
| @@ -547,7 +544,7 @@ void ShellWindowViews::OnViewWasResized() {
|
| // Don't round the corners when the window is maximized or fullscreen.
|
| path.addRect(0, 0, width, height);
|
| } else {
|
| - if (frameless_) {
|
| + if (frameless()) {
|
| path.moveTo(0, radius);
|
| path.lineTo(radius, 0);
|
| path.lineTo(width - radius, 0);
|
| @@ -567,10 +564,10 @@ void ShellWindowViews::OnViewWasResized() {
|
|
|
| SkRegion* rgn = new SkRegion;
|
| if (!window_->IsFullscreen()) {
|
| - if (draggable_region())
|
| - rgn->op(*draggable_region(), SkRegion::kUnion_Op);
|
| + if (draggable_regions())
|
| + rgn->op(*draggable_regions(), SkRegion::kUnion_Op);
|
| if (!window_->IsMaximized()) {
|
| - if (frameless_)
|
| + if (frameless())
|
| rgn->op(0, 0, width, kResizeInsideBoundsSize, SkRegion::kUnion_Op);
|
| rgn->op(0, 0, kResizeInsideBoundsSize, height, SkRegion::kUnion_Op);
|
| rgn->op(width - kResizeInsideBoundsSize, 0, width, height,
|
| @@ -625,55 +622,10 @@ void ShellWindowViews::UpdateWindowTitle() {
|
| void ShellWindowViews::UpdateDraggableRegions(
|
| const std::vector<extensions::DraggableRegion>& regions) {
|
| // Draggable region is not supported for non-frameless window.
|
| - if (!frameless_)
|
| + if (!frameless())
|
| return;
|
|
|
| - SkRegion* draggable_region = new SkRegion;
|
| -
|
| - // By default, the whole window is non-draggable. We need to explicitly
|
| - // include those draggable regions.
|
| - for (std::vector<extensions::DraggableRegion>::const_iterator iter =
|
| - regions.begin();
|
| - iter != regions.end(); ++iter) {
|
| - const extensions::DraggableRegion& region = *iter;
|
| - draggable_region->op(
|
| - region.bounds.x(),
|
| - region.bounds.y(),
|
| - region.bounds.right(),
|
| - region.bounds.bottom(),
|
| - region.draggable ? SkRegion::kUnion_Op : SkRegion::kDifference_Op);
|
| - }
|
| -
|
| - draggable_region_.reset(draggable_region);
|
| - OnViewWasResized();
|
| -}
|
| -
|
| -void ShellWindowViews::UpdateLegacyDraggableRegions(
|
| - const std::vector<extensions::DraggableRegion>& regions) {
|
| - // Draggable region is not supported for non-frameless window.
|
| - if (!frameless_)
|
| - return;
|
| -
|
| - SkRegion* draggable_region = new SkRegion;
|
| -
|
| - // By default, the whole window is draggable.
|
| - gfx::Rect bounds = GetBounds();
|
| - draggable_region->op(0, 0, bounds.right(), bounds.bottom(),
|
| - SkRegion::kUnion_Op);
|
| -
|
| - // Exclude those desinated as non-draggable.
|
| - for (std::vector<extensions::DraggableRegion>::const_iterator iter =
|
| - regions.begin();
|
| - iter != regions.end(); ++iter) {
|
| - const extensions::DraggableRegion& region = *iter;
|
| - draggable_region->op(region.bounds.x(),
|
| - region.bounds.y(),
|
| - region.bounds.right(),
|
| - region.bounds.bottom(),
|
| - SkRegion::kDifference_Op);
|
| - }
|
| -
|
| - draggable_region_.reset(draggable_region);
|
| + NativeShellWindow::UpdateDraggableRegions(regions);
|
| OnViewWasResized();
|
| }
|
|
|
|
|