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(); |
} |