| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/apps/native_app_window_views.h" | 5 #include "chrome/browser/ui/views/apps/native_app_window_views.h" |
| 6 | 6 |
| 7 #include "apps/shell_window.h" | 7 #include "apps/shell_window.h" |
| 8 #include "apps/ui/views/shell_window_frame_view.h" | 8 #include "apps/ui/views/shell_window_frame_view.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 observer_list_.AddObserver(observer); | 616 observer_list_.AddObserver(observer); |
| 617 } | 617 } |
| 618 void NativeAppWindowViews::RemoveObserver( | 618 void NativeAppWindowViews::RemoveObserver( |
| 619 web_modal::ModalDialogHostObserver* observer) { | 619 web_modal::ModalDialogHostObserver* observer) { |
| 620 observer_list_.RemoveObserver(observer); | 620 observer_list_.RemoveObserver(observer); |
| 621 } | 621 } |
| 622 | 622 |
| 623 // Private method. TODO(stevenjb): Move this below InitializePanelWindow() | 623 // Private method. TODO(stevenjb): Move this below InitializePanelWindow() |
| 624 // to match declaration order. | 624 // to match declaration order. |
| 625 void NativeAppWindowViews::OnViewWasResized() { | 625 void NativeAppWindowViews::OnViewWasResized() { |
| 626 // TODO(jeremya): this doesn't seem like a terribly elegant way to keep the | |
| 627 // window shape in sync. | |
| 628 #if defined(OS_WIN) && !defined(USE_AURA) | |
| 629 DCHECK(window_); | |
| 630 DCHECK(web_view_); | |
| 631 gfx::Size sz = web_view_->size(); | |
| 632 int height = sz.height(), width = sz.width(); | |
| 633 if (ShouldUseChromeStyleFrame()) { | |
| 634 // Set the window shape of the RWHV. | |
| 635 const int kCornerRadius = 1; | |
| 636 gfx::Path path; | |
| 637 if (window_->IsMaximized() || window_->IsFullscreen()) { | |
| 638 // Don't round the corners when the window is maximized or fullscreen. | |
| 639 path.addRect(0, 0, width, height); | |
| 640 } else { | |
| 641 if (frameless_) { | |
| 642 path.moveTo(0, kCornerRadius); | |
| 643 path.lineTo(kCornerRadius, 0); | |
| 644 path.lineTo(width - kCornerRadius, 0); | |
| 645 path.lineTo(width, kCornerRadius); | |
| 646 } else { | |
| 647 // Don't round the top corners in chrome-style frame mode. | |
| 648 path.moveTo(0, 0); | |
| 649 path.lineTo(width, 0); | |
| 650 } | |
| 651 path.lineTo(width, height - kCornerRadius - 1); | |
| 652 path.lineTo(width - kCornerRadius - 1, height); | |
| 653 path.lineTo(kCornerRadius + 1, height); | |
| 654 path.lineTo(0, height - kCornerRadius - 1); | |
| 655 path.close(); | |
| 656 } | |
| 657 SetWindowRgn(web_contents()->GetView()->GetNativeView(), | |
| 658 path.CreateNativeRegion(), 1); | |
| 659 } | |
| 660 | |
| 661 SkRegion* rgn = new SkRegion; | |
| 662 if (!window_->IsFullscreen()) { | |
| 663 if (draggable_region_) | |
| 664 rgn->op(*draggable_region_, SkRegion::kUnion_Op); | |
| 665 if (!window_->IsMaximized()) { | |
| 666 if (frameless_) | |
| 667 rgn->op(0, 0, width, kResizeInsideBoundsSize, SkRegion::kUnion_Op); | |
| 668 rgn->op(0, 0, kResizeInsideBoundsSize, height, SkRegion::kUnion_Op); | |
| 669 rgn->op(width - kResizeInsideBoundsSize, 0, width, height, | |
| 670 SkRegion::kUnion_Op); | |
| 671 rgn->op(0, height - kResizeInsideBoundsSize, width, height, | |
| 672 SkRegion::kUnion_Op); | |
| 673 } | |
| 674 } | |
| 675 if (web_contents()->GetRenderViewHost()->GetView()) | |
| 676 web_contents()->GetRenderViewHost()->GetView()->SetClickthroughRegion(rgn); | |
| 677 #endif | |
| 678 | |
| 679 FOR_EACH_OBSERVER(web_modal::ModalDialogHostObserver, | 626 FOR_EACH_OBSERVER(web_modal::ModalDialogHostObserver, |
| 680 observer_list_, | 627 observer_list_, |
| 681 OnPositionRequiresUpdate()); | 628 OnPositionRequiresUpdate()); |
| 682 } | 629 } |
| 683 | 630 |
| 684 // WidgetDelegate implementation. | 631 // WidgetDelegate implementation. |
| 685 | 632 |
| 686 void NativeAppWindowViews::OnWidgetMove() { | 633 void NativeAppWindowViews::OnWidgetMove() { |
| 687 shell_window_->OnNativeWindowChanged(); | 634 shell_window_->OnNativeWindowChanged(); |
| 688 } | 635 } |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 gfx::Rect client_bounds = gfx::Rect(1000, 1000); | 960 gfx::Rect client_bounds = gfx::Rect(1000, 1000); |
| 1014 gfx::Rect window_bounds = | 961 gfx::Rect window_bounds = |
| 1015 window_->non_client_view()->GetWindowBoundsForClientBounds( | 962 window_->non_client_view()->GetWindowBoundsForClientBounds( |
| 1016 client_bounds); | 963 client_bounds); |
| 1017 return window_bounds.InsetsFrom(client_bounds); | 964 return window_bounds.InsetsFrom(client_bounds); |
| 1018 } | 965 } |
| 1019 | 966 |
| 1020 void NativeAppWindowViews::HideWithApp() {} | 967 void NativeAppWindowViews::HideWithApp() {} |
| 1021 void NativeAppWindowViews::ShowWithApp() {} | 968 void NativeAppWindowViews::ShowWithApp() {} |
| 1022 void NativeAppWindowViews::UpdateWindowMinMaxSize() {} | 969 void NativeAppWindowViews::UpdateWindowMinMaxSize() {} |
| OLD | NEW |