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

Unified Diff: chrome/browser/ui/views/extensions/shell_window_views.cc

Issue 11028125: Remove legacy draggable region code and refactor to share common draggable region code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch Created 8 years, 2 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
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();
}

Powered by Google App Engine
This is Rietveld 408576698